Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Поймать событие


Автор: Zlo 6.8.2006, 17:12
Как можно узнать находится ли курсор над кнопкой в момент нажатия?

Автор: Alexeis 6.8.2006, 17:27
В onClick вставить код
Код

  var
    rct : TRect;
    p : TPoint;
begin
  p := Mouse.CursorPos;
  GetWindowRect(Button1.Handle, rct);
  if (p.X > rct.Left) and (p.X < rct.Right) and
     (p.Y > rct.Top) and (p.Y < rct.Bottom)
  then
     ShowMessage('inRect')
  else
     ShowMessage('NotinRect');
..................

Автор: Демо 6.8.2006, 19:32
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  if ptInRect(Button1.ClientRect,Button1.ScreenToClient(Mouse.CursorPos))
    then ShowMessage('Внутри');
end;


Автор: Zlo 6.8.2006, 20:48
А нельзяли как то узнать наступило у кнопки событие OnMouseMove. Что-то типа вот такого:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
if Button1.OnMouseMove=true then
end;

Автор: Alexeis 6.8.2006, 22:12
Цитата(Zlo @  6.8.2006,  20:48 Найти цитируемый пост)
А нельзяли как то узнать наступило у кнопки событие OnMouseMove

Оно возникает всегда, если курсор над кнопкой. Хотя бы раз.

Автор: Fedia 7.8.2006, 01:15
Цитата(Zlo @  6.8.2006,  20:48 Найти цитируемый пост)
А нельзяли как то узнать наступило у кнопки событие OnMouseMove. Что-то типа вот такого:

Если происходит нажатие на кнопку мышкой, то до этого момента должно было сработать событие Button1.OnMouseMove. Ведь оно срабатывает при движении мышкой над объектом. Т.е. надобность в такой проверке:
Код

if Button1.OnMouseMove=true then
 отпадает само собой.

Автор: Alexeis 8.8.2006, 09:30
Zlo, хочет защитить прогу от виртуального нажатия, но если даже програмно позиционировать курсор, то все равно возникает OnMouseMove

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)