Delphi-PRAXiS

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 Komponente und Events (https://www.delphipraxis.net/36918-komponente-und-events.html)

runger 28. Dez 2004 09:49


Komponente und Events
 
Hallo,

ich hab folgendes Problem:
wir haben eine Komponente aus Tcustomcontrol abgleitet.
Darauf werden zur Laufzeit Images plaziert.
Wie kann ich feststellen welches Image angeklickt wurde?
Wenn ich die Eventroutine für Tcustomcontrol verwende reagiert
die Komponente nicht sobald ich auf Timage bin. Für jedes Image
ist auch sinnlos.

Steh ich einfach nur auf dem Schlauch oder was mach ich falsch?

Rainer

Jelly 28. Dez 2004 09:57

Re: Komponente und Events
 
Zitat:

Zitat von runger
Für jedes Image ist auch sinnlos.

Wieso sinnlos. Wenn du auf das Click Event eines Images reagieren willst!
Du kannst doch beim Erzeugen deines Bildes die OnClick Methode überschreiben und in deiner Komponente abhandeln. Der Sender sagt dir dann, welche Bild geklickt wurde.

runger 28. Dez 2004 10:34

Re: Komponente und Events
 
Wie sagt er mir das?

runger 28. Dez 2004 10:45

Re: Komponente und Events
 
Ach so, ich hab vergessen zu sagen, dass die Images als Arryay deklariert sind.
Rainer

Jelly 28. Dez 2004 10:52

Re: Komponente und Events
 
Ich nehm mal an, du erstellst deine Images innerhalb deiner Komponente dynamisch. Also irgendwo muss sowas stehen wie:
Delphi-Quellcode:
img := TImage.create (Self) ;
Dies muss du noch etwas ausbauen, damit du nachher noch weisst, was welches Image ist:
Delphi-Quellcode:
img := TImage.create (Self) ;
with img do begin
   Tag := index ; // index ist deine Zählvariable ;
   index := index + 1 ;
   OnClick := MeinOnClick ;
end ;
Tag dient später dazu, dein geklicktes Image zu identifizieren. Dies geschieht in der MeinOnClick Methode, welche du als privat in deiner Komponentenklasse deklarierst, wie folgt:

Delphi-Quellcode:
TMeineKompo = class
private
  procedure MeinOnClick (Sender : TObject) ;
  ...
end ;

procedure TMeineKompo.MeinOnClick (Sender : TObject) ;
var
 img : TImage ;
begin
     if Sender is TImage then begin
         img := Sender as TImage ;
         case Tag of
           1: ;  // erstes dynamisch erzeugtes Image wurde geklickt
         end ;
     end ;
end ;

runger 28. Dez 2004 10:57

Re: Komponente und Events
 
OK,

ich danke dir!
Ich hatte geglaubt ich könnte direkt auf die Indizes zugreifen.
Aber so ist mir auch geholfen.
Nochmals danke!

Rainer


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:40 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