eigene Parameter zu Ereignissen hinzufügen



  • Ich möchte z.B. dem Ereignis OnChange:

    void __fastcall TForm1::Edit1Change(TObject *Sender)
    

    einen eigenen Parameter hinzufügen. Etwa so:

    (void __fastcall TForm1::Edit1Change(TObject *Sender,int i)
    

    In der Unit1.h und der Unit1.cpp kann ich den Prototyp bzw. die Syntax entsprechend ändern. Aber wo finde ich den entsprechenden Funktionsaufruf?
    So kommt immer die Fehlermeldung inkompatible Parameterliste.
    Ist dies überhaupt möglich, und wenn ja wie?



  • welchen Sinn soll das haben???

    gruß Micha



  • Ich moechte nur eine Methode für alle Editfelder schreiben. Mit dem zusätzlichen Parameter soll erkannt werden von welchen Editfeld die Methode aufgerufen wurde.
    Diese Methode sollte etwa so aussehen:

    (void __fastcall TForm1::EditChange(TObject *Sender,int i) 
    {
      setzeWert(i);
    }
    


  • Benutz doch dynamic_cast oder vergib Tag's die du dann abfragen kannst.



  • Tut mir leid aber ich habe keine Ahnung von was du da redest.



  • TEdit *Editfeld;
            if (Editfeld = dynamic_cast <TEdit*>(Sender)) {
                    //Dein Code hier
                    //Welches Edit ist es ?
                    //Editfeld->Name
                    //etc.
            }
    

    Benutze auch die Suchfunktion, die FAQ und die Hilfe!

    gruß Micha

    Edit:
    PS: Die Funktion ist in Pascal geschrieben und um Sie Umzuschreiben, damit
    die Editfelder Durchnummeriert werden, kannst ja gleich die ganze VCL neu schreiben. 😃



  • Danke für eure Hilfe. Ich denke damit kann ich was anfangen. 👍



  • Nochmal ne Frage:
    Kann ich statt dem dynamic_cast nicht auch einfach
    *((TEdit )Sender) verwenden? Oder bringt der dynamic_cast irgendwelche Vorteile?



  • Schmeiss mal nen Blick in die FAQ. da gibts was zu dem Thema.

    -junix


Log in to reply