Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Element auf der sich Mauscursor befindet ausführen (https://www.delphipraxis.net/107919-element-auf-der-sich-mauscursor-befindet-ausfuehren.html)

guevaradelaserna 6. Feb 2008 16:12

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

guevaradelaserna 7. Feb 2008 14:49

Re: Element auf der sich Mauscursor befindet ausführen
 
Hallo!

Ich hatte ja gestern diesen Code
Delphi-Quellcode:
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;
als Lösung für mein Problem für Images bekommen.

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

DeddyH 7. Feb 2008 14:55

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.

guevaradelaserna 7. Feb 2008 15:11

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:
  TButtonEx1(ActiveControl).Click;
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.

Bye Che

bitsetter 7. Feb 2008 18:48

Re: Element auf der sich Mauscursor befindet ausführen
 
Zitat:

Zitat von guevaradelaserna
nein ist leider nicht immer das selbe Panel! Notfalls kann ich auch mit mehreren Timern arbeiten.

Hallo,

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:

Zitat von guevaradelaserna
Ich habe keine Möglichkeit gefunden den Namen oder ähnliches herauszubekommen, um dann dieses Image ansprechen zu können.

Bye Che

Delphi-Quellcode:
  if c = Image1 then
...


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 Uhr.
Seite 2 von 2     12   

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