Getter und Setter für Event-Handler



  • Hi,

    kan ich eine Getter/Sette-Methode für Eventhandler schreiben? Ich möchte nämlich einen Button in meiner Frame-Klasse aktivieren, wenn der zugehörige Eventhandler mit einer Funktion belegt wird (!= 0 gesetzt wird) bzw. den Button deaktivieren oder unsichtbar machen, wenn das nicht geschieht oder der Eventhandler zur Laufzeit auf 0 gesetzt wird...



  • Hallo

    Ja, Eventhandler sind auch nur Variablen. Du kannst Getter und Setter z.B. vom Typ TNotifyEvent verwenden. Auch als Property.

    bis bald
    akari



  • Coole Sache.

    jetzt hab ich allerdings etwas Schwierigkeiten mit der Umsetzung. Für das folgende Event möchte ich Getter/Setter Methoden bauen:

    void __fastcall (__closure *OnMyFormChange) (TStrings* MyStrings, String &MyString);
    

    Die Eigenschaft sähe dann so aus:

    __property void __fastcall (__closure *OnMyFormChange) (TStrings* MyStrings, String &MyString) = {read = GetOnMyFormChange, write = SetOnMyFormChange};
    

    Aber wie sehen dann die Parameter der Getter/Setter aus???



  • mach am besten ein typedef

    typedef void __fastcall (__closure *TOnMyFormChange)(TStrings* MyStrings, String &MyString);
    

    danach kannst du TOnMyFormChange als ganz normaler Datentyp verwenden.

    class A
    {
    public:
       TOnMyFormChange OnMyFormChange;
    };   
    void __fastcall Change(TStrings* MyStrings, String &MyString);
    ...
    
    A a;
    a.OnMyFormChange = &Change;
    


  • Mit dem typedef klappts 🙂


Anmelden zum Antworten