Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2009, 18:37   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Как отловить позицию курсора (|). X,Y

Имею в виду не курсор стрелочку,
а такой: |



Появилась необходимость отловить его координаты относительно левого верхнего угла экрана. Возможно ли это? И как?

---
Не только например в аське, а в ворде, блокноте, в браузере, словом, где бы он не явился.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 27.12.2009 в 18:41.
Alex Cones вне форума Ответить с цитированием
Старый 27.12.2009, 18:45   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

GetCaretPos ? http://msdn.microsoft.com/en-us/libr...02(VS.85).aspx
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 27.12.2009, 18:54   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Мммм... Как -то не так
getCaretPos определяет от верхнего левого угла контрола, т.е. Если открыть одновременно два блокнота и в каждом открыть новый документ, то функция в обоих случаях вернет 1,1
---
Или как вариант искать позицию так, но перед этим поймать координаты левого верхнего угла контрола, который сейчас активен (в фокусе).
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 27.12.2009 в 18:59.
Alex Cones вне форума Ответить с цитированием
Старый 27.12.2009, 19:08   #4
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

GetFocus
GetWindowRect
?
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 27.12.2009 в 19:25.
Goodwin98 вне форума Ответить с цитированием
Старый 27.12.2009, 19:13   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

К сожалению GetWindowRect дает координаты всей формы, а не контрола типа Memo.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 27.12.2009, 19:15   #6
DeKot
Участник клуба
 
Аватар для DeKot
 
Регистрация: 12.08.2008
Сообщений: 1,977
По умолчанию

Код:
Var p: TPoint;
              x,y: integer;

    GetCaretPos(p); // вернет координаты курсора в компоненте  "контрол"
    x:=p.X;
    y:= p.Y; //координаты на "контроле"
// для формы (экрана) :
XForm:= Edit1.Left + x;
YForm:= Edit1.Top + y:
Вместо Edit можно Memo. В общем смысл думаю понятен.
И не сомневайся даже ... отдых - кайф, работа - лажа!
DeKot вне форума Ответить с цитированием
Старый 27.12.2009, 19:16   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
XForm:= Edit1.Left + x;
Не подойдет, так как я ловлю позицию у чужих окон, а не только у своих.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 27.12.2009, 19:27   #8
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Помогло, (getFocus) спасибо, Goodwin!
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 27.12.2009, 19:36   #9
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Пожалуйста. Ответьте теперь мне кто-нибудь в моей теме
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 27.12.2009, 20:44   #10
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Возникла такая проблема:
У меня две формы. Первая всегда активна и висит как виджет из Висты, а вторая должна отловить позицию Каретки. Делаю так:
Код:
Var
P:TPoint;
H:THandle;
X,Y:SmallInt;
Re:TRect;
begin
 GetCaretPos(P);
 H:=GetFocus;
 getWindowRect(H,Re);
 X:=Re.Left;
 Y:=Re.Top;
 FRMCaret.Left:=X+P.X-13;
 FRMCaret.Top:=Y+P.Y+4;
Но форма FRMCaret висит около первой формы. Вторая - AlwaysOnTop, вторая -
Код:
SetWindowPos(handle, HWND_TOPMOST, 0,0,0,0,SWP_NOSIZE or SWP_NOMOVE);
Делал в отдельном приложении - позицию каретки отсчитывает прекрасно. Запхнул в этот проект - ноль.

Попробовал вставить такую строку после поиска хендла активного окошка:
Код:
If H = Application.Handle Then Beep;
и
Код:
If H = FRMMain.Handle Then Beep;
- НЕ пищит! Но координаты отсчитываются так, как будто я написал F
Код:
RMCaret.Left := FRMMain.Left - 13
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 27.12.2009 в 20:56.
Alex Cones вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как в пустом textarea зафиксировать позицию курсора на первой позиции ? slips HTML и CSS 5 23.10.2009 19:47
Как узнать позицию курсора в файле? DarkEvil Win Api 3 21.09.2009 00:10
Delphi 7 вставка текста в Richedit в позицию курсора newbee-dust Помощь студентам 3 10.06.2009 12:58
Как в OnkeyPress отловить если в Edit есть текст позицию заменяемого символа? slips Общие вопросы Delphi 3 06.12.2008 18:12
Отловить движение курсора, диалоговые сообщения. Deight Общие вопросы Delphi 15 17.11.2008 11:28