Ну не знаю...
Если делать в лоб, то попробуй так:
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 сообщениями, но, как оказалось, там все-таки они приходят с пропусками, особенно, если мышом быстро возить. Можно мышку хукнуть, но это гораздо сложнее, а суть будет примерно та же.