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.


Anmelden zum Antworten