Mit Sender umgehen
-
Hi.
Ich habe folgenden funktionierenden Code:
void __fastcall TFormGen::CheckBox30Click(TObject *Sender) { SetCheckbox(Sender); } //--------------------------------------------------------------------------- void __fastcall TFormGen::SetCheckbox(TObject *Sender) { TCheckBox *cb = static_cast<TCheckBox *>(Sender); cb->Caption = (cb->Checked) ? "Yes" : "No"; }
Jetzt wollte ich gern das auch für ein TPopupMenu machen, welches den ausgewählten Eintrag in ein TSpeedButton->Caption darstellen soll:
void __fastcall TFormGen::pmItem1Click(TObject *Sender) { SetSpeedButton(Sender); } //--------------------------------------------------------------------------- void __fastcall TFormGen::SetSpeedButton(TObject *Sender) { TTeSpeedButton *sp = static_cast<TTeSpeedButton *>(Sender); TeSpeedButton1->Caption = sp->Caption; }
Bei letzten kommt aber leider eine Schutzverletzung. Mit sp->Name klappt es wiederum. Was mach ich denn falsch?
-
Hallo
Falls ich dein Vorgehen richtig verstanden habe : Ein TPopupMenu ist kein TTeSpeedButton, und deshalb kannst du nicht einfach Sender casten wie du willst.
Du kannst diese Behandlung nicht ohne Änderung von SpeedButton auf PopupMenu umstellen.bis bald
akari
-
Ups, da habe ich wohl schon an Wochenende gedacht. Danke sehr.
-
Man sollte eh den Sender mittels dynamic_cast casten um testen zu können ob das auch geht.