Перхват клика мышки для формы

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

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

Ответить
Аватара пользователя
Xenar
постоялец
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Перхват клика мышки для формы

Сообщение Xenar »

Доброго дня всем

На форме есть много компонентов.
Как перехватить щелчок мышью, чтобы не анализировать события мыши для каждого компонента?
Т.е. аналог Form.KeyPreview, только не для клавиатуры, а для мыши.
Аватара пользователя
WAYFARER
энтузиаст
Сообщения: 567
Зарегистрирован: 09.10.2009 00:00:04
Откуда: г. Курган

Сообщение WAYFARER »

Для какой ОС? Если для Windows то проще простого

Код: Выделить всё

procedure TfMain.FormCreate(Sender: TObject);
begin
  Application.OnMessage := onMess;
end;

procedure TfMain.onMess(var Msg: TMsg; var Handled: Boolean);
begin
  if(Msg.message=WM_LBUTTONDOWN)then begin
   ...
  end;
  Handled := False;
end;
Аватара пользователя
Xenar
постоялец
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Сообщение Xenar »

В том то и дело что под линуху.
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

Можно прицепить события всех компонентов OnMouseMove к событию OnMouseMove формы
Типо так, вроде работает в винде , линухе тоже должно
Только вы лишаетесь обрабатывать данное событие компонентов отдельно

Код: Выделить всё

procedure TForm1.FormCreate(Sender: TObject);
var
  i:integer;
begin
  for i:=0 to ComponentCount-1 do
     TForm(Components[i]).OnMouseMove:=@FormMouseMove;
end;                                                         

Код: Выделить всё

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Memo1.Lines.Add(TimeToStr(Now));
end;                                       
Ответить