Обработка сообщений в форме

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Обработка сообщений в форме

Сообщение Climber » 29.06.2010 11:10:34

Сейчас пробовал запустить под отладчиком такую вещь...
Есть форма и на ней - компонент TDrawGrid со свойством Align = alClient (то есть растянутый на всю клиентскую часть окна).
Есть такой код:
Код: Выделить всё
procedure TTestForm.WMLButtonDown(var Message: TLMLButtonDown);
begin
  inherited;  // Здесь стоит брекпоинт
end;
Так вот, если я запускаю приложение и посылаю форме сообщение через SendMessage:
Код: Выделить всё
SendMessage(TestForm.Handle, WM_LBUTTONDOWN, 0, y*65536+x);   // x и y - координаты "клика"

то функция WMLButtonDown вызывается, а если просто кликаю мышкой (сам) - то нет. То есть получается, между кликом мышкой и отправкой сообщения форме вызывается функция, которая определяет, что находится под курсором. Так? И что это за функция?
Что я хочу сделать: с помощью SendMessage посылать события, чтобы форма их обрабатывала, как будто это был настоящий пользователь: то есть если я шлю сообщения LBUTTONDOWN и LBUTTONUP в точку, где находится контрол, то должно вызываться событие OnClick этого контрола (пока вызывается OnClick формы).
Что я пропустил?
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Обработка сообщений в форме

Сообщение Mr.Smart » 29.06.2010 11:23:07

Нужно посылать в данном случае сообщение самому контролу
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Обработка сообщений в форме

Сообщение Climber » 29.06.2010 12:01:28

Ну до этого-то я и сам догадался. Просто контрол может менять размеры, а у меня есть только координаты. Вот я и хочу определять контрол, куда сообщение попадет.
P. S. На самом деле, исходную задачу я придумал, как решить, а этот вопрос остался для общего развития. Мало ли что в будущем понадобится...
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва

Re: Обработка сообщений в форме

Сообщение Mr.Smart » 29.06.2010 12:10:30

Посмотрите функцию ScreenToControl.
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Обработка сообщений в форме

Сообщение Climber » 29.06.2010 12:56:02

Спасибо, посмотрю...
Climber
постоялец
 
Сообщения: 415
Зарегистрирован: 03.06.2007 20:09:57
Откуда: Москва


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 33

Рейтинг@Mail.ru