Das Problem ist, wenn Du die Maus außerhalb Deines Programms bewegst.
Bei schnellen Bewegungen führt Windows kein Mouse Ereignis auf der Delphi-Form aus und stellt nur fest, dass nun ein anderes Programm oder der Desktop die Maus "benutzt".
Ich hab nur D5, da gibts das Ereignis nicht. Dachte eigentlich, dass sowas bei einem Leave-Event abgefangen wird.
Von dem her finde ich das Event unbrauchbar.
Der vorherige Vorschlag die Panels woanders hinzusetzen ist genauso unbrauchbar.
Probiers mal mit folgendem Code in einem Timer, den Du alle 100ms aufrufst:
Delphi-Quellcode:
var
tp: TPoint;
begin
GetCursorPos(
tp);
tp := ScreenToClient(
tp);
if (
not PtInRect(Panel.ClientRect, P))
then
begin
// reset all colors
end;
end;
oder guck obs ein Form-MouseLeave gibt, mit dem es funktioniert.
Grüße
Andreas