Probleme beim Setzen von Checked bei RadioButtons in GroupBox



  • Hallo zusammen,

    abhängig vom Wert der Bool-Variable gbAktiv sollen zwei RadioButtons in einer GroupBox auf Formular Form_Einstellungen gesetzt werden.

    Bei Programmstart funktioniert das Setzen einwandfrei.
    Wenn ich gbAktiv zur Laufzeit ändere und anschließend Form_Einstellungen erneut aufrufe, sehe ich im Debugger den gewünschten Wert, aber die Einstellung der RadioButtons ist unverändert.

    Beim Schließen der Anwendung wird gbAktiv gespeichert. Beim nächsten Programmstart funktioniert das Setzen wie gewünscht.

    Ich kann mir auf dieses Verhalten keinen Reim machen.
    Hat jemand eine Idee?

    Anbei der Zuweisungscode:

    if(gbAktiv){
            Form_Einstellungen->RadioButton_Aktive->Checked = true;
        }else{
            Form_Einstellungen->RadioButton_Alle->Checked = true;
        }
    
        Form_Einstellungen->ShowModal();
    
        if(Form_Einstellungen->RadioButton_Aktive->Checked){
            gbAktive = true;
        }else{
            gbAktive = false;
        }
    

    Gruß
    Leo



  • Leo Freitag schrieb:

    Wenn ich gbAktiv zur Laufzeit ändere [...]

    ... dann musst du auch die RadioButtons neu setzen. Einen Automatismus gibt es da nicht.



  • Schon klar. Mache ich natürlich auch. Immer mit dem geposteten Code.



  • Hmmm. Mit den gegebenen Informationen ist das Problem für mich nicht nachvollziehbar.



  • Gibt es ein Grund gbAktive und gbAktiv zu verwenden?



  • Sorry, das war ein Schreibfehler. Den Variablenname im Original 'gbSongVersionen_NurAktuelleSpeichern' hatte ich wegen besserer Verständlichkeit in gbAktive umbenannt.

    Aber an der Länge des Variablennamens kann es nicht liegen?

    Gruß
    Leo



  • Problem gelöst!

    Wenn ich das Formular Form_Einstellungen erst zur Laufzeit erzeuge, ...

    Application->CreateForm(__classid(TForm_Einstellungen), &Form_Einstellungen);
        Form_Einstellungen = new TForm_Einstellungen(Application);
    
        // Formulardaten setzen
        // (...)    
    
        Form_Einstellungen->ShowModal();
    
        // Formulardaten auswerten
        // (...)    
    
        delete Form_Einstellungen;
    

    ... dann geht's.

    Nur das Warum würde mich dennoch interessieren!

    Gruß
    Leo



  • Hallo

    Diese beiden Zeilen machen schon mal das gleiche, du brauchst nur eine von beiden. Ich empfehle die zweite.

    Application->CreateForm(__classid(TForm_Einstellungen), &Form_Einstellungen);
        Form_Einstellungen = new TForm_Einstellungen(Application);
    

    Was genau das Problem können wir dir anhand der gezeigte nCodeausschnitte nicht sagen. Ich vermute, da du für das dynamisch erstellte Form den von der IDE generierten Pointer Form_Einstellungen benutzt, das du einfach mit mehreren verschiedenen Instanzen der Formklasse durcheinander kommst.

    bis bald
    akari


Anmelden zum Antworten