Button im eigenen onClick Ereignis löschen
-
Hilft es denn, wenn Du vor dem Löschen die OnClick-Eigenschaft auf null setzt?
Also so:void __fastcall TForm1::handleOnClick(TObject *Sender) { TButton* btn = (TButton*) Sender; btn->OnClick = 0; delete btn; }Nur geraten...
Gruß
Alexander
-
@Th ist zwar irgendwie auch geschummelt, aber ist natürlich auch ne Möglichkeit.

Die PostMessage Geschichte gefällt mir zwar prinzipiell besser, nur habe ich mich damit noch gar nicht beschäftigt und hab dazu jetzt auch nicht die Zeit.Daher werde ich mal Deine Lösung in Betracht ziehen.
schon mal danke
Mfg mav
-
Alexander Kempf schrieb:
Hilft es denn, wenn Du vor dem Löschen die OnClick-Eigenschaft auf null setzt?
Nee, leider nicht...
-
Das mit dem PostMessage ist nicht so schwierig:
// Header des Forms // irgendwo über der Klassendefinition #define CM_DELETEBUTTON (WM_APP + 400) // unter private oder protected void __fastcall CMDeleteButton(TMessage Message); BEGIN_MESSAGE_MAP VCL_MESSAGE_HANDLER(CM_DELETEBUTTON, TMessage, CMDeleteButton); END_MESSAGE_MAP (TForm) // CPP des Forms void __fastcall TForm1::CMDeleteButton(TMessage Message) { // hier der Code zum Löschen des Buttons // am sinnvollsten ist wohl als LParam oder WParam der Botschaft einen Zeiger auf den Button zu übergeben TButton* btn = (TButton*) Message.LParam; delete btn; } // Aufruf dann aus der Button-Click Mehtode über PostMessage(Form1->Handle, CM_DELETEBUTTON, 0, (int) this);
-
Hallo
@Braunstein : Die Methode muß natürlich überall CMDeleteButton heißen

... void __fastcall TForm1::CMDeleteButton(TMessage Message) ...bis bald
akari
-
@Joe_M: Wirklich vielen Dank! Werde ich nachher mal ausprobieren. Weil aus der BCB Hilfe habe ich jetzt nicht auf die Schenlle verstanden wie das funzt.
Danke
Mfg Mav
-
@akari
Hiermit hatte ich ausnahmsweise mal nichts zu tun.
-
Hallo,
habs jetzt mal ausprobiert. funktioniert super vielen Dank!
Mfg Mav
-
Hallo
Braunstein schrieb:
@akari
Hiermit hatte ich ausnahmsweise mal nichts zu tun.
Sorry... ich weiß gar nicht warum ich dort Braunstein geschrieben habe...

bis bald
akari
-
akari schrieb:
Die Methode muß natürlich überall CMDeleteButton heißen

Ich hab das einfach kopiert, geändert und die angesprochene Stelle vergessen... Ich habs geändert.