Funktionen von dynamischen Objekten
-
Hallo,
vieleicht kann mir mal jemand helfen.
Ich möchte mit dem OnClick Ereignis von dynamisch erzeugten Button´s eine Funktion aufrufen und dieser eien Wert(Schleifenzähler) übergeben. Aber das funkzt nicht.[h][code]for(int a = 0; a < 10; a++) { MyButton[a] = new TButton(this); MyButton[a]->OnClick = Funktionxyz([i]a[/i]); } void __fastcall TForm1::Funktionxyz(int [i]a[/i]) { ShowMessage("test "+[i] a [/i]); }[/code][/h]Kann mir da mal jemand helfen?
-
da solltest du mal unter TNotifyEvent OnClick in der Hilfe nachschauen, was für Parameter übegeben werden dürfen und was sie bedeuten sollen.
So wie du das willst ist das nicht möglich. Im OnClick wird der Sender übergeben und nix anderes.
Mache deine Laufvariabe zu einem Mitglied der Formklasse und OnClick kann darauf zugreifen
-
Hallo
klar klappt das nicht, denn du kannst den Eventen nur Mehtoden mit festgelegten Signaturen übergeben. Dein Problem kann man durch die Eigenschaft Tag lösen
for(int a = 0; a < 10; a++) { MyButton[a] = new TButton(this); MyButton[a]->OnClick = Funktionxyz; MyButton[a]->Tag = a; } void __fastcall TForm1::Funktionxyz(TObject *Sender) { TButton *CurButton = static_cast<TButton *> (Sender); // Sender als TButton behandeln ShowMessage("test "+ IntToStr(CurButton->Tag) ); }bis bald
akari
-
Vielen Dank, die Variante von akari funktioniert. Ihr habt mir sehr geholfen!!
