Frage zu "TObject *Sender"



  • Ich habe ein MainMenu und Untermenus und möchte wenn ich auf ein Menüpunkt klicke, das er mir in der Caption des Fensters den Namen des ausgewählten Menüeintrages anzeigt.

    Beispiel:

    SubMenu->OnClick = MeinEreignis;
    
    void __fastcall TForm1::MeinEreignis(TObject *Sender)
    {
        Caption = (TMenuItem*)Sender->Caption; // So klappts leider nicht
    }
    

    Eigentlich auch des Hauptmenüpunktes des gewählten Submenüs, kann mir jemand dabei helfen?



  • So ich denke ich habs doch selber hinbekommen. Falls noch ander Wege gibt würde ich mich freuen die zu hören.

    TMenuItem *Item = dynamic_cast<TMenuItem*>(Sender);
    


  • Hallo

    Das ist schon richtig. Du kannst auch static_cast nehmen wenn sicher ist das diese Eventmethode nur von MenuItem aus aufgerufen wird.
    Der Vollständigkeit halber noch die berichtigung für den alten C-Cast, da haben nur zwei Klammern gefehlt :

    Caption = ((TMenuItem*)Sender)->Caption;
    

    Aber die C++ Cast sind besser da typsicher.

    bis bald
    akari



  • Argh, ja klar. Danke für die Korrektur!


Anmelden zum Antworten