Hallo Jürgen,
lange nichts voneinander gehört...
Theoretisch müsstest Du Dir in MouseEnter merken, welches Control mit der Maus angelaufen wurde:
Delphi-Quellcode:
private ctlTemp: TWinControl;
procedure TWinForm.Panel1_MouseEnter(sender: System.Object; e: System.EventArgs);
begin
// ich vermute, die Abfrage ist nicht nötig, weil MouseEnter durch keine anderen Objekte
// ausgelöst werden kann; aber das müsstest Du überprüfen
if sender is TWinControl then
begin
ctlTemp = sender as TWinControl;
Timer1.Enabled := true;
end;
end;
procedure TWinForm.Timer1_Tick(sender: System.Object; e: System.EventArgs);
begin
Timer1.Enabled := false;
ctlTemp.BackColor := System.Drawing.Color.Red;
end;
Praktisch löst das aber Dein Problem nicht, weil Du nicht weißt, ob die Maus sich nach dieser Zeit immer noch über ctlTemp befindet. Dazu musst Du die statische Funktion
Control.MousePosition auswerten und mit
PointToClient / PointToScreen umrechnen, ob diese Position noch zu ctlTemp gehört.
Einfacher sollte es mit dem Ereignis
Control.MouseHover in Verbindung mit
MouseHoverTime gehen.
Viel Erfolg bei der Suche! Jürgen