Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#2

Re: Welches Control befindet sich unter dem Mauscursor?

  Alt 23. Sep 2006, 10:07
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 Delphi-Referenz durchsuchenControl.MousePosition auswerten und mit PointToClient / PointToScreen umrechnen, ob diese Position noch zu ctlTemp gehört.

Einfacher sollte es mit dem Ereignis Delphi-Referenz durchsuchenControl.MouseHover in Verbindung mit MouseHoverTime gehen.

Viel Erfolg bei der Suche! Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat