Arbeiten mit Checkbox



  • Hallo @all,

    ich habe eine Frage zu checkboxen

    warum funktioniert meine if-Abrgage nicht?

    if (Checkbox1->Checked)
    

    wie müsste die if-Abfrage lauten, wenn die Checkbox ausgewählt wird?

    Und wie müsste die if Abfrage lauten, wenn die Checkbox wieder "abgewählt"(deaktiviert) wird?

    Vielleicht kann auch jemand schreiben, was man allgemein bei Checkboxen zu beachten hat.

    Danke
    LG Eliza



  • du mußt das OnClick-Ereignis der CheckBox verwenden, dort kannst du dann ermitteln welchen Status die gerade angeklickte CheckBox hat



  • Hallo Eliza,
    versuch mal das hier:

    if(Checkbox1->Checked==true)
    {
    //irgendwas
    }
    

    oder eben false wenn Du auf "nicht gechecked" prüfen willst.

    C-Bär



  • *Eliza schrieb:

    warum funktioniert meine if-Abrgage nicht?

    if (Checkbox1->Checked)
    

    was genau funktioniert nicht?

    Wenn du irgendwann im Programm den Status abfragen willst, funktioniert es genau so.

    if( Checkbox1->Checked )
        // Häkchen gesetzt
    if( !Checkbox1->Checked ) // oder einfach 'else'
        // Häkchen nicht gesetzt
    

    Allerdings kann eine CheckBox auch 'grayed( bool AllowGrayed )' sein, d. h. disabled.
    Dann gehts so:

    if( Checkbox1->State == cbChecked )     // Häkchen gesetzt
        ... // oder
    if( Checkbox1->State == cbUnchecked)    // Häkchen nicht gesetzt
        ... // oder
    if( Checkbox1->State == cbGrayed)       // disabled
        ...
    

    Und wenn du direkt auf eine Änderung des Status reagieren willst, dann nimm Linnea's Lösung mit dem OnClick-Ereignis.

    grüssle 🙂



  • Hallo,

    und bei jedem Klick auf ein Button wechselt Haken gesetzt/Haken nicht gesetzt:

    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
        CheckBox1->Checked = !CheckBox1->Checked;
    }
    //---------------------------------------------------------------------------
    

    Oder innerhalb eines Codeabschnittes anhand eines boolschen Wertes:

    bool activ = false;
       //------------------------------
       // später
    
       active = true;
       CheckBox1->Checked = activ;
    

    mfg
    kpeter



  • Hallo an alle,

    danke für die Anregungen, ich habe meinen Fehler inzwischen beheben können.

    Noch eine weitere Frage:
    Ich habe 5 Checkboxen

    Wenn alle 5 checkboxen "deaktiviert" sind, soll etwas bestimmtes passieren.
    Nicht wenn nur 3 oder 4, und eine oder zwei ist noch checked.
    Sondern wirlich wenn alle 5 "unchecked" sind.

    Ich hoffe ich habe mein Problem einigermaßen verständlich rübergebracht.

    Meine eigene Idee dazu: Ein Zähler der immer mitzählt wenn eine Checkbox deaktivitert wird und dann bei Zähler=5 eine bestimmte Aktion ausführt?

    Oder gibt es eine einfachere Lösung?
    Danke im Voraus für Antworten.

    LG
    Eliza



  • Hallo,

    'ne Funktion die bei jedem OnClick aufgerufen wird und die Checkboxen abfragt

    bool TForm::Check()
    {
    if (!CheckBox1->Checked &&
        !CheckBox2->Checked &&
        !CheckBox3->Checked &&
        //usw.
        return true;
    else
        return false;
    }
    
    void __fastcall TForm::CheckBox1Click(TObject *Sender)
    {
        Check();
    }
    

    LG, Micha



  • Danke!!



  • Hallo,

    kann mri jemand sagen, wie der Befehl lautet, eine Checkbox "unchecked" zu setzten nach dem ein bestimmtes Ereignis eingetreten ist?

    LG
    Eliza



  • Hallo,

    hab es schon selbst rausgefunden, lautet:

    Checkbox1->Checked=false;
    

    so einfach war das 😉

    Wenn noch jemand interessante Anregungen zu Checkboxen hat nur her damit.

    LG
    Eliza


Anmelden zum Antworten