Sendername existiert nicht
-
Hallo,
ich hab hier aus den FAQ gelesen, wie man den Sendernamen ermittelt. Dies funktioniert auch ganz gut, allerdings nicht bei Labels, die ich zur Laufzeit erzeuge. Hier mal der Code:
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; TLabel *Testlabel[30]; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Label1Click(TObject *Sender) { Label1->Caption = dynamic_cast<TLabel*>(Sender)->Name; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormActivate(TObject *Sender) { for (int i=0; i<=10; i++) { Testlabel[i] = new TLabel(Form1); Testlabel[i]->Caption="Blabla"; Testlabel[i]->Width = 50; Testlabel[i]->Left=20+i*50; Testlabel[i]->Transparent=true; Testlabel[i]->Top=5; Testlabel[i]->OnClick = Label1Click; Form1->InsertControl(Testlabel[i]); } } //---------------------------------------------------------------------------Hab leider keine Ahnung, wo der Fehler sein könnte.
cu
-
Wahrscheinlich doch daran, dass du beim anlegen der Labels überhaupt keinen Namen vergibst.
Caption ist nicht der Name, wobei du diese natürlich abfragen könntest
-
Ist denn der Name nicht Testlabel[5] zum Beispiel?
-
Hallo
nein, Testlabel[5] ist der Name des Array-Elements, das auf ein Label verweist. Den (eindeutigen) Namen des Controls must du selber festlegen, z.B. so
Testlabel[i] = new TLabel(Form1); Testlabel[i]->Name="TestLabel" + IntToStr(i); Testlabel[i]->Caption="Blabla"; ...bis bald
akari
-
OK, danke für die schnelle Hilfe. Werd das gleich mal ausprobieren, wenn ich heim komme.
Bye