GroupBox - OnChange bei Elementen in der Box



  • Hallo zusammen!

    Ich schreibe eine kleine Software, bei der einige Einstellungen gemacht werden. Dazu verwende ich eine GroupBox oder ein Panel und darin befinden sich dann Checkboxen, Edits usw.
    Nun gibt es ja diesen "OnChange"-Event, mit dem ich z.B. Änderungen eines Edit-Feldes direkt z.B. in die Registry schreiben kann. Momentan mache ich das so mit jedem Edit und jeder Checkbox, sprich es gibt zig OnChange-Events.

    Ist es irgendwie möglich, das OnChange zu globalisieren, sprich dass es nur noch einen OnChange-Event auf der GroupBox oder dem Panel gibt und sobald sich irgendein Edit-Feld darin ändert, dieser Event ausgelöst wird?



  • Du kannst den gleichen Event Handler an mehrere Quellen hängen, z.B. alle OnChange Ereignisse von Checkboxen.



  • bergwerkzwerg2 schrieb:

    Ist es irgendwie möglich, das OnChange zu globalisieren, sprich dass es nur noch einen OnChange-Event auf der GroupBox oder dem Panel gibt und sobald sich irgendein Edit-Feld darin ändert, dieser Event ausgelöst wird?

    ist möglich.
    OnChange erstellen, dann jedem Edit... dieses OnChange zuweisen, und mit z.B.

    TEdit* edit = dynamic_cast<TEdit*>(Sender)->Name;
    

    das Control ermitteln, das den OnChange ausgelöst hat.
    Danach weiter wie gehabt.

    grüssle 🙂



  • Und wenn Sender mal aus irgendwelchen Gründen keine Edit-Box ist, gibt es dort eine Zugriffsverletzung.



  • Morle schrieb:

    Und wenn Sender mal aus irgendwelchen Gründen keine Edit-Box ist, gibt es dort eine Zugriffsverletzung.

    Nö, das ist ja das tolle am dynamic_cast , wenn der cast fehlschlägt wird NULL zurückgegeben. Musst natürlich auf ein gültiges Ergebnis prüfen.

    Edit:
    Hast recht Morle, hab den Zugriff auf ->Name übersehen... aber so sollte der Quelltext auch nicht kompilieren, ein String ist halt kein TEdit.


Anmelden zum Antworten