Показать сообщение отдельно
  #3  
Старый 06.12.2017, 09:45
Ekler1 Ekler1 вне форума
Новичок
 
Регистрация: 12.06.2017
Сообщения: 90
Версия Delphi: RAD Studio XE7
Репутация: 10
По умолчанию ругается компилятор

Цитата:
Сообщение от lmikle
Ну не знаю...
Если делать в лоб, то попробуй так:
1. Кидаешь таймер, там настраиваешь проверку каждые, пусть, 0.5 сек (значение Interval = 500).
2. В обработчике проверяешь формы, а потом курсор по координатам формы. Типа как-то так:
Код:
procedure TForm1.Timer1Timer(Sender : TObject);
var
  pt : TPoint;
begin
  // Form2 or Form7 is active - do nothing
  If (Form2.Visible Or Form7.Visible) Then Exit;
  
  // Get cursor position
  pt := Mouse.CursorPos;
  
  // Check that cursor is over the Form1
  If PtInRect(Rect(Self.Left, Self.Top, Self.Right, Self.Bottom),pt)
    Then EnableDB
    Else DisableBD;
end;

PS. Наверное, можно придумать что-то более навороченное, основанное на событиях. Когда-то эксперементировал с MOUSE_MOVE сообщениями, но, как оказалось, там все-таки они приходят с пропусками, особенно, если мышом быстро возить. Можно мышку хукнуть, но это гораздо сложнее, а суть будет примерно та же.

Ошибка вылетает вот на эту строчку
If PtInRect(Rect(Self.Left, Self.Top, Self.Right, Self.Bottom),pt)
[dcc32 Error] Unit9.pas(62): E2003 Undeclared identifier: 'Right'
[dcc32 Error] Unit9.pas(62): E2003 Undeclared identifier: 'Bottom'
И ещё -

Then EnableDB
Else DisableBD;
Тут точно все правильно? что-то меня смущает строчка EnableDB
Ответить с цитированием