pagecontrol und radiobutton (auswahl) problem



  • Ich hoffe, dass ich es richtig verstanden habe:

    wieder einmal: siehe BCB Hilfe

    Standardmäßig gehören alle Optionsfelder, die in einem fensterorientierten Container enthalten sind (z.B. in TRadioGroup oder TPanel), zur selben Gruppe. Zwei Optionsfelder in einem Formular können beispielsweise nur dann gleichzeitig aktiviert sein, wenn sie in separaten Containern (z.B. in zwei unterschiedlichen Gruppenfeldern) enthalten sind.

    Also wird es wohl nicht gehen, ohne es selbst zu programmieren.

    Nighthero



  • Nighthero hat mich verstanden 😋 🤡
    nunja, leider muss ich dann wohl diesen weg einschlagen.... 😞



  • was mich dabei drum stört ist, das ich mit ini dateien arbeite. und wenn dann ein lustiger hase mal die ini datei manuell bearbeitet und dann zwei oder mehr optionen für die radiobuttons auf true setzt, wird es beim ausführen von programm code kollisionen geben...

    ich muss also zusätzlich ein verfahren einsetzen das die ini datei überprüft.
    nur, wie soll ich wissen, wenn mehrere optionen in der ini datei (durch eben jucks) auf true sind, dann die richtige option übernehmen?



  • Dann prüfst Du eben beim Einlesen der INI-Files die Konsistenz und wenn nicht gegeben, setzt Du einen Defaultwert und machst den User darauf aufmerksam.



  • Hallo

    beim sequentiellen Einlesen der Radiobutton-Werte liest du nur bis zum ersten gesetzten Wert ein, danach brichst du das Einlesen dieser Werte ab.
    (Wenn vorher alle Buttons auf negativ standen)

    bis bald
    akari



  • (Wenn vorher alle Buttons auf negativ standen)

    soweit hast du recht, hätte ich mir auch gedacht. was aber wenn beim beenen, radiobutton5 aktive ist und somit in der ini datei dieser radiobutton true ist, der user nun alle anderen in der ini datei auch auf true setzt, woher soll ich nun wissen das radiobutton5 der richtige war?



  • gut ich könnte das so oder so machen. sprich bis zum ersten bzw. letzten true. ich glaube nähmlich das es standard mässig auch so läuft, wenn man jeweils nur einen radio button auf true setzen kann, wird wohl beim einlesen der ini datei, immer der erste radiobutton auf true gesetzt. wenn nun die zweite ini zeile den nächsten radiobutton auch auf true setzt, wird der vorgänger auf false gesetzt. so mach ich das dann wohl...



  • Hallo

    Das soll nicht dein problem sein. Wer an Ini-Dateien rumspielt, ist selber schuld.
    Ansonsten mach wie Joe_M vorgeschlagen hat, eine Fehlermeldung, damit der User weiß, das er das nicht machen darf.

    bis bald
    akari



  • du kannst nicht mehrere radiobtns in ein ini abspeichern und dan beim nächsten start merken ob was geändert wurde..
    umd änderungen am file direkt etwas zu erschwehren, kannst du entweder das iniFile verschlüsseln, oder auf die Registry zugreifen(wovon ich aber abrate)



  • grundsätzlich hast du damit schon recht 🙂
    ich bin aber leider(?) ein perfektionist 😉



  • oh, dieser beitrag ging an akari hehe.
    hab nicht damit gerechnet das noch einer vor mir es schafft...



  • Hallo

    was mir erst jetzt einfällt :
    Warum speicherst du den Wert jedes einzelnen Radiobuttons, wenn du daraus doch genau einen Wert extrahierst? Du kannst doch gleich nur die Nummer des aktieven Buttons speichern. Problem gelöst.

    bis bald
    akari



  • akari, hast recht. dazu aber zwei probleme (B gerade festgestellt ;))

    A) Dazu müsste ich aber beim beenden elenlange if/else blöcke schreiben. aber gut, warum nicht.

    😎 das soeben festgestellte problem ist, das ich die radiobuttons aus einem anderen tabsheet garnicht auf false setzen kann, wenn bereits ein radiobutton auf true sitzt 😮 😮

    beispiel (RadioButton1OnClick event)

    if(RadioButton1->Checked) //TabSheet1 <--!!
    	{
    		RadioButton2->Checked = false; //TabSheet2 <--!!
    		RadioButton3->Checked = false; //TabSheet2 <--!!
    	}
    

    auf tabsheet2 sollen also alle (hier 2 und 3) radiobuttons auf false gesetzt werden. leider geht das nicht 🙄 😮



  • Warum nimmst du nicht einfach TCheckBox? und schreibst dir nen eigenen Control dafür, über die Handhabung.

    EDIT: Und zum Speichern: Speichere doch statt einer Nummer einfach den Namen der gecheckten CheckBox... und beim Starten sett du diese wieder auf Checked=true... und wnens sie nicht gibt (wenn jemand den Namen in der ini ändert), machst du halt die erste auf Checked=true...



  • Hast Du Dir schon mal TRadioGroup angesehen? Wenn Du den ItemIndex dort auf -1 setzt, ist kein RadioButton ausgewählt. Also alle Radiobuttons auf einer PageControl in eine RadioGroup, dann brauchst Du Dir in der INI-Datei nur die RadioGroup und den ItemIndex in dieser RadioGroup zu speichern. Alle anderen RadioGroups setzt Du auf ItemIndex -1...


Anmelden zum Antworten