OnChange Event einer Combo auslösen ohne IwasComboChange



  • Hi zusammen,

    Ich habe einen Zeiger auf eine Combo, und möchte nun(nachdem ich den Index der Combo geändert habe) auch den OnChange-Event auslösen(Warum auch immer der nicht feuert 😢 )

    Von der Möglichkeit IwasComboChange habe ich beim googeln gelesen, nützt mir aber nix, da ich ja nur den Zeiger habe.

    Ich hoff jmd hat ne Lösung für mein Prob, sonst steh ich echt auf dem Schlauch ^^

    lg

    😮



  • Hallo,

    s. http://docwiki.embarcadero.com/Libraries/XE3/de/Vcl.StdCtrls.TComboBox.OnChange

    Anmerkung: OnChange tritt nur als Reaktion auf Benutzeraktionen ein. Wenn die Eigenschaft Text programmgesteuert geändert wird, wird das Ereignis OnChange nicht ausgelöst.

    Warum möchtest du denn unbedingt das OnChange-Ereignis auslösen?



  • neija, da sind ebent andere Programmteile, die schon fertig sind und die den Inhalt(von anderen Combos) aufgrund von OnChange ändern.

    Notfalls wäre das noch ne Lösung, die dann indirekt aufzurufen.

    Ich habe in Delphi was gelesen, mit Nachricht senden "CM_TEXTCHANGED", konnte das Beispiel jedoch nicht auf C++ übersetzen.

    lg



  • Vielleicht

    void f()
    {
       if( MyCombobox->OnChange ) MyComboBox->OnChange( MyComboBox );
    }
    

    ?

    Edit:
    Schicker ist es natürlich, das Befüllen der anderen Comboboxen in eine eigene Methode zu verlagern und diese Methode aus dem OnChange Handler aufzurufen. Damit kannst du in deiner Initialisierung auch einfach die neue Methode aufrufen, ohne den Umweg über GUI Events gehen zu müssen.



  • Genau so hab ichs gemacht. Ich übergebe meiner Klasse jetzt einen Funktionszeiger(oder NULL), und wenn der dann !=NULL ist, rufe ich die Funktion über den Zeiger auf.

    Alles andere sieht mir zu sehr nach hack aus!

    THX

    und

    lg


Anmelden zum Antworten