also beim mousemove über dein stringgrid sollte eigentlich insofern es den FOCUS auch hat etwas ausgelöst werden (setzen des hint).
vielleicht ist´s ja so trivial
onMouseMove Event -> if self.focus then do what ya wanna do
oder über boolean, indem du regiestrierst ob deine Anwendung den eingabe focus hat bzw. die mouse auch über im ist
das wäre dann
WM_KILLFOCUS (verliert eingabe focus (keyboard))
WM_MOUSELEAVE (außerhalb win.rect)
WM_MOUSEHOVER (über win.rect)
WM_MOUSEACTIVATE (inaktiv win und mouse drüber ...)
vielleicht hilft dir das noch weiter,
hatte ich geschrieben um ein Close_Application_Because_Inactivity zu realisieren.
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| {
In TForm1.Create -> Application.OnMessage:=AppWndProc;
In TForm1.Destroy -> Application.OnMessage:=NIL;
}
procedure TForm1.AppWndProc(var Msg: TMsg; var Handled: Boolean); begin { solange er auf oder im form macht wird der timer durch setzten von enabled =false so zu sagen auf 0 zurückgesetzt } case Msg.Message of WM_SETFOCUS, WM_KEYFIRST..WM_KEYLAST, WM_MOUSEFIRST..WM_MOUSELAST : timer.Enabled:=false; else timer.Enabled:=true; end; end;
onTimer -> Close |