Hallo,
ich habe auf einem Formular viele TLabel und lege sie deshalb zur Laufzeit dynamisch an. Deklariert sind sie als (festes) Array und den Labels wird ein gemeinsames Popup zugewiesen. Über das Popup sollen die Einträge geändert werden. Das ganze sieht etwa so aus:
Delphi-Quellcode:
Type
TForm1 = Class(TForm)
PopupMenu1 : TPopupMenu;
Aendern1 : TMenuItem;
Procedure Aendern1Click(Sender: TObject);
Private
Namen : Array [00..99] Of TLabel;
End;
Var
Form1 : TForm1;
...
Procedure TForm1.FormCreate(Sender: TObject);
Var
I,Hoehe : Integer;
Begin
// Hauptfenster aufbauen
For I:=00 To 99 Do
Begin
Hoehe:= I*24+8;
Namen[I]:= TLabel.Create(self);
Namen[I].Parent:= Form1;
Namen[I].Left:= 8;
Namen[I].Top:= Hoehe;
Namen[I].Width:= 138;
Namen[I].Height:= 16;
Namen[I].AutoSize:= False;
Namen[I].Caption:= NullName;
Namen[I].PopupMenu:= PopUpMenu1;
End;
End;
Procedure TForm1.Aendern1Click(Sender: TObject);
Var
I : Integer;
Begin
I:=-1;
If Sender=Namen[00] Then I:=00;
If Sender=Namen[01] Then I:=01;
If Sender=Namen[02] Then I:=02;
If Sender=Namen[03] Then I:=03;
If Sender=Namen[04] Then I:=04;
If Sender=Namen[05] Then I:=05;
If Sender=Namen[06] Then I:=06;
If Sender=Namen[07] Then I:=07;
If Sender=Namen[08] Then I:=08;
If Sender=Namen[09] Then I:=09;
If I=-1 Then
Begin
Application.MessageBox('Mist','Mist',0);
Exit;
End;
End;
End.
Ich bekomme jetzt immer 'Mist' zu sehen. Ich klicke natürlich auf die ersten 10. Auch das hier bringt nichts:
Delphi-Quellcode:
Procedure TForm1.Aendern1Click(Sender: TObject);
Var
I : Integer;
Begin
For I:=00 To 99 Do
If Sender=Namen[I] Then
Application.MessageBox(PAnsiChar('Nummer '+IntToStr(I)),'Gefunden',0);
End;
Wie komme ich an den Sender ran?
Gruß, Alex