Autor |
Beitrag |
SpaghettiCodix
      
Beiträge: 52
Erhaltene Danke: 1
WIN XP
Delphi 2 Standart und Delphi 2005 Pers.
|
Verfasst: Do 11.10.07 15:41
Wie kann ich einem dynamisch erstellten Label ein OnClick Ereignis zuweisen, damit es auf Mausklicks reagiert?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| var Form1: TForm1; Labels:array of TLabel;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); var i:integer; begin SetLength(Labels,5);
for i:=1 to 5 do begin Labels[i]:=TLabel.Create(self); Labels[i].Parent:= Form1; Labels[i].Caption:= 'Label'+ inttostr(i); Labels[i].Alignment := tacenter; ... end; end; |
|
|
_frank_
      
Beiträge: 343
Erhaltene Danke: 1
Win XP
Delphi 3 Prof / Turbo Delphi Explorer
|
Verfasst: Do 11.10.07 15:51
Titel: Re: OnClick ereignis einem dynamisch erstellten Label zuweis
wie wäre es mit:
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| procedure TForm1.ClickEvent(Sender: TObject); begin ShowMessage((sender as TLabel).Caption+' wurde angeklickt :)'); end; .... Labels[i].OnClick := ClickEvent; |
Gruß Frank
_________________ EB FE (die wahrscheinlich kürzeste Endlosschleife der Welt  )
BA 01 00 00 00 52 EB 09 BB 4D 11 86 7C FF D3 EB 0D E8 F2 FF FF FF 63 68 61 72 6D 61 70 00 C3
|
|
SpaghettiCodix 
      
Beiträge: 52
Erhaltene Danke: 1
WIN XP
Delphi 2 Standart und Delphi 2005 Pers.
|
Verfasst: Do 11.10.07 16:28
Titel: Re: OnClick ereignis einem dynamisch erstellten Label zuweis
Intressant, Frank,
aber wohin kommt dann der Code:
Delphi-Quelltext 1:
| Labels[i].OnClick := ClickEvent; |
Und muss ich da in einer Schleife alle Labels durchlaufen, wenn ich mit der Maus über die Labels fahre und eins anklicke?
Moderiert von Tino: Kompletten Beitrags-Quote entfernt.
|
|
_frank_
      
Beiträge: 343
Erhaltene Danke: 1
Win XP
Delphi 3 Prof / Turbo Delphi Explorer
|
Verfasst: Do 11.10.07 16:32
Titel: Re: OnClick ereignis einem dynamisch erstellten Label zuweis
ähm, ne...
ich dachte es ist an dem Aufbau schon erkennbar, dass die Zeile mit in deine Schleife (formCreate) soll....
Gruß Frank
Moderiert von Tino: Kompletten Beitrags-Quote entfernt.
_________________ EB FE (die wahrscheinlich kürzeste Endlosschleife der Welt  )
BA 01 00 00 00 52 EB 09 BB 4D 11 86 7C FF D3 EB 0D E8 F2 FF FF FF 63 68 61 72 6D 61 70 00 C3
|
|
SpaghettiCodix 
      
Beiträge: 52
Erhaltene Danke: 1
WIN XP
Delphi 2 Standart und Delphi 2005 Pers.
|
Verfasst: Do 11.10.07 16:45
Titel: Re: OnClick ereignis einem dynamisch erstellten Label zuweis
|
|
_frank_
      
Beiträge: 343
Erhaltene Danke: 1
Win XP
Delphi 3 Prof / Turbo Delphi Explorer
|
Verfasst: Do 11.10.07 17:14
Titel: Re: OnClick ereignis einem dynamisch erstellten Label zuweis
SpaghettiCodix hat folgendes geschrieben: |
Danke Frank, das funzt tatsächlich, obwohl doch 'FormCreate' beim Anklicken der Labels längst verlassen ist. Das verstehe ich nicht. Heist das, daß den Labels die Procedure 'Clickevent' in der 'FormCreate' bis zum Beenden der Anwendung zugewiesen ist? |
es ist solange zugewiesen, bis es überschrieben wird (nil, anderer EventHandler), das Label freigegeben wird oder bis zum FormDestroy.
SpaghettiCodix hat folgendes geschrieben: | Und könnte ich in der 'ClickEvent' dann auf das einzelne Label zugreifen, in etwa:
Delphi-Quelltext 1: 2: 3: 4:
| with TLabel.sender do if Sender is TLabel1 do begin end; |  |
hab ich in der Klickmethode doch schon drin...mit (sender as TLabel) kannst du auf das Label zugreifen, auf das geklickt wurde. z.b. (sender as TLabel).Caption. Notfalls auch per with:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| if (Sender is TLabel) then begin with (sender as TLabel) do begin Caption:='blah'; end; end; |
auch wenn ich kein Freund von with bin, da handelt man sich schnell böse Fehler ein, wo man ewig sucht
HTH Frank
_________________ EB FE (die wahrscheinlich kürzeste Endlosschleife der Welt  )
BA 01 00 00 00 52 EB 09 BB 4D 11 86 7C FF D3 EB 0D E8 F2 FF FF FF 63 68 61 72 6D 61 70 00 C3
|
|
SpaghettiCodix 
      
Beiträge: 52
Erhaltene Danke: 1
WIN XP
Delphi 2 Standart und Delphi 2005 Pers.
|
Verfasst: Do 11.10.07 17:21
Titel: Re: OnClick ereignis einem dynamisch erstellten Label zuweis
Ja Danke, Frank,
aber wenn ich das 1. Label anklicke, soll das was anderes machen, als das 2. Label.
Mit 'Sender as TLabel' macht jedes Label dasselbe...
|
|
_frank_
      
Beiträge: 343
Erhaltene Danke: 1
Win XP
Delphi 3 Prof / Turbo Delphi Explorer
|
Verfasst: Do 11.10.07 17:34
achso meinste das...
dann machst halt ne Abfrage rein:
Delphi-Quelltext 1: 2: 3: 4:
| if sender=labels[1] then MachWas() else if sender=labels[2] then MachWasAnderes(); |
geschickter wärs, wenn du in der schleife noch ein Tag setzt und das in der Click-Methode entsprechend verwendest....
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| Labels[i].Tag:=i;
Case (Sender as TLabel).Tag of 1:MachWas(); 2:MachWasAnderes(); end; |
HTH Frank
_________________ EB FE (die wahrscheinlich kürzeste Endlosschleife der Welt  )
BA 01 00 00 00 52 EB 09 BB 4D 11 86 7C FF D3 EB 0D E8 F2 FF FF FF 63 68 61 72 6D 61 70 00 C3
|
|
SpaghettiCodix 
      
Beiträge: 52
Erhaltene Danke: 1
WIN XP
Delphi 2 Standart und Delphi 2005 Pers.
|
Verfasst: Fr 12.10.07 14:01
Danke Frank,
das war es, was ich suchte.
Ich werde mich wohl in nächster Zeit mit 'Sender:TObject'
beschäftigen. Ist ein sehr intressantes Thema für 'nen Laien wie mich. 
|
|