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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2007, 13:54   #1
Nowichok
Пользователь
 
Регистрация: 23.11.2006
Сообщений: 53
По умолчанию Координаты мышки НЕ относительно формы

Всем привет !
На форме имеется основное меню + DbGrid + ещё прочее
Нужно знать координаты мышки относительно DbGrid'а и ссимулировать там нажатие кнопки мышки.
На данный момент делаю так
Код:
 var
  MyMouse: TMouse;
  x,y:integer;
begin
 x:=MyMouse.CursorPos.x;
 y:=MyMouse.CursorPos.y-44; //см. ниже
 sendmessage(GridMain.Handle, WM_LBUTTONDOWN, MK_LBUTTON, x + y shl 16);
 sendmessage(GridMain.Handle, WM_LBUTTONUP, MK_LBUTTON, x + y shl 16);
end;
Проблема в том, что получаю координаты относительно формы !! А высоту менюшки узнать нельзя. Пришлось на глаз измерять высоту в пикселях и писать

y:=MyMouse.CursorPos.y-44; //см. ниже

чтобы не сбились координаты относительно dbGrid'а.

Вроде работаеТ, но как-то некрасиво это.
Может можно узнать координаты сразу относительно DbGrid'а ??
Nowichok вне форума Ответить с цитированием
Старый 27.02.2007, 16:03   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Может можно узнать координаты сразу относительно DbGrid'а ?
Для этого обработчик должен находиться внутри DbGridMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
Вот здесь X,Y - координаты относительно верхнего левого угла DbGrid. Х=0 - левая граница DbGrid, Y=0 - верхняя граница и т.д.
Это было нужно?
mihali4 вне форума Ответить с цитированием
Старый 27.02.2007, 17:03   #3
Nowichok
Пользователь
 
Регистрация: 23.11.2006
Сообщений: 53
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Для этого обработчик должен находиться внутри DbGridMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
Вот здесь X,Y - координаты относительно верхнего левого угла DbGrid. Х=0 - левая граница DbGrid, Y=0 - верхняя граница и т.д.
Это было нужно?
Мне нужно знать коодринаты мышки припоявлении всплывающего меню, а не при движении по сетке.
А вообще решение уже нашёл :

Код:
 var
MyMouse: TMouse;
x,y:integer;
begin
x:=ScreenToClient(MyMouse.CursorPos).x;
y:=ScreenToClient(MyMouse.CursorPos).y;
....
end;
и получаю координаты относительно DbGrid'а !
Nowichok вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос относительно дизайна diznt Помощь студентам 4 19.08.2008 17:59
Как сделать более точные координаты мышки xGroupers Общие вопросы Delphi 7 24.04.2008 23:02
Смещение рамки выделения ячейки (курсора), относительно текущей вниз. hugoboss Microsoft Office Excel 2 19.01.2008 11:31
Координаты курсора относительно объекта на форме CoDeR Общие вопросы Delphi 4 01.08.2007 22:49