![]() |
Re: Element auf der sich Mauscursor befindet ausführen
Danke erstmal für den Tipp. Ich werde nun mal fleissig rumbasteln. Ich hoffe ich kriege das irgendwie in das bestehende Programm rein.
Bye Che |
Re: Element auf der sich Mauscursor befindet ausführen
Hallo!
Ich hatte ja gestern diesen Code
Delphi-Quellcode:
als Lösung für mein Problem für Images bekommen.
procedure TForm1.Timer1Timer(Sender: TObject);
var c: TControl; begin c := self.ControlAtPos(self.ScreenToClient(Mouse.CursorPos),true); if Assigned(c) and (c is TImage) then begin Timer1.Enabled := false; ShowMessage('Image erwischt'); Timer1.Enabled := true; end; end; Hierzu muss ich noch sagen, dass dies nur direkt auf Forms funktioniert sobald das Image auf einem Panel liegt oder so funktioniert es leider nicht mehr. Jetzt nun zu meiner Frage: wie kann ich das Click-Ereignis von c automatisch auslösen ohne zu überprüfen welches Image bei c gerade betrachtet wird? Bye Che |
Re: Element auf der sich Mauscursor befindet ausführen
Ist das immer dasselbe Panel? Wenn ja, einfach das "self" durch den Namen des Panels austauschen.
|
Re: Element auf der sich Mauscursor befindet ausführen
nein ist leider nicht immer das selbe Panel! Notfalls kann ich auch mit mehreren Timern arbeiten. Vielmehr interessiert mich aber wie ähnlich wie hier
Delphi-Quellcode:
das beim gerade betrachteten Image definierte OnClick-Ereignis automatisch auslösen. Ich habe keine Möglichkeit gefunden den Namen oder ähnliches herauszubekommen, um dann dieses Image ansprechen zu können.
TButtonEx1(ActiveControl).Click;
Bye Che |
Re: Element auf der sich Mauscursor befindet ausführen
Zitat:
oder versuche es mal mit einer Rekursion:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
function GetControl(const c: TControl): TControl; var c2: TControl; begin Result:= c; c2:= nil; repeat if Result is TWincontrol then begin c2:= TWincontrol(Result).ControlAtPos(Result.ScreenToClient(mouse.CursorPos), false, true); if c2 is TWincontrol then GetControl(c2); if Assigned(c2) then Result:= c2; end; until not Assigned(c2) or not (Result is TWincontrol); end; var c: TControl; begin c:= GetControl(self); if Assigned(c) then caption:= GetControl(c).Name; end; Zitat:
Delphi-Quellcode:
if c = Image1 then
... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz