Funktionsname in Varibale speichern ?



  • Hi,

    hab ne Funktion dessen name ich in eine Variable speichern will,
    nur kenn ich den Datentype dieser Variable nicht.

    void __fastcall TForm1::TestClick(TObject *Sender)
    	{
    		ShowMessage("Hallo");		
    	}
    
    	TMenuItem *NewItem;
    
    	NewItem = new TMenuItem(PopupMenu1);
    	NewItem->Caption = "erster Eintrag";
    	NewItem->OnClick = TestClick;           //<- da 
    	PopupMenu1->Items->Add(NewItem);
    

    So soll das dann später mal funktionieren:

    void __fastcall TForm1::TestClick(TObject *Sender)
    	{
    		ShowMessage("Hallo");		
    	}
    
        variable = TestClick(TObject *Sender); ?????????????
    
    	TMenuItem *NewItem;
    
    	NewItem = new TMenuItem(PopupMenu1);
    	NewItem->Caption = "erster Eintrag";
    	NewItem->OnClick = variable;           // <- ???????????????
    	PopupMenu1->Items->Add(NewItem);
    

    weiss da jemand wie ich den funktionsnamen in die variable bekomme ?



  • laut BCB hilfe ist TMenuItem::OnClick vom Typ TNotifyEvent

    zB:

    TNotifyEvent MyEvent;
    MyEvent = TestClick;
    ...
    
    NewItem->OnClick = MyEvent;
    

    deklariert ist TNotifyEvent in der hilfe so:

    typedef void __fastcall (__closure *TNotifyEvent)(System::TObject* Sender); 	// declared as global in namespace 
    			// Classes in classes.hpp
    

    findet man alles in der Hilfe.
    Falls es das ist, was du suchst.



  • Hallo

    Siehe auch die FAQ hier im Forum, Abschnitt "Komponenten benutzen", Beitrag "zur Laufzeit erstellen, anzeigen und Events zuweisen".

    bis bald
    akari



  • hi,

    wollte mich bei Euch bedanken, funktioniert einfach genial.


Anmelden zum Antworten