CheckBox Problem



  • Ich habe folgendes Problem: Ich habe eine CheckBox auf Form3 deren Status auf Form1 in einem Edit angezeigt wird. Nur leider wird der Status erst beim anklicken der Checkbox aktiviert. Kann ich nicht irgendwie prüfen ob die CheckBox aktiviert ist oder nicht?



  • die CheckBox besitz die Eigenschaft "Checked" und die kann man abfragen -> siehe BCB-Hilfe



  • So ganz habe ich nicht verstanden, was Du eigentlich in dem Edit anzeigst; State, Checked oder Enabled - oder was ganz anderes?
    Und wie machst Du das? Aktiviert oder nicht - heißt das, ob die CheckBox den Focus hat? Dafür gäbe es Focused().

    Gruß,

    Alexander



  • Also die Checkbox bestimmt was im Edit steht. Das ist entweder "Ja" oder "Nein" nur das Problem ist das beim Programmsatrt im Edit nicht "Nein" steht. Dafür muss man die Checkbox erst aktivieren und dann wieder deaktivieren. Das Problem dabei ist das die CheckBox auf einer andren Form liegt. Sonnst könnte ich das ja einfach bei "OnActivate" eingeben.



  • OnShow ????



  • Zeig doch mal, was Du da machst. Reagierst Du irgendwo auf das OnClick-Ereignis oder wie hast Du das gelöst?

    Gruß,

    Alexander



  • Da gehts auch nicht bzw. ich kann es nicht auswählen was aber auf der Form auf der auch die Checkbox liegt geht.



  • Also die Checkbox auf Form3 (sehe gerade das ist ein Label und kein Edit):

    if (CheckBox1->Checked)
    Form1->Label11->Caption="Ja";
    else
    Form1->Label11->Caption="Nein";
    

    Ausserdem wird das ganze in einer Ini Datei gespeichert. Nur das Problem ist das es beim ersten Programmstart noch keine Ini gibt da diese erst erstellt wird. Nur das Label fragt den Status nicht ab. Und das ist das Problem bei der ganzen Sache.



  • Der Checkbox-Status (also die Checked-Eigenschaft) wird doch in Abhängigkeiten irgendwelcher Daten gesetzt, also stellt die Anzeige für
    einen Eintrag in einer Ini-Datei dar. Dann sollte die Label-Caption auch anhand dieses Werts gesetzt werden - und nicht anhand der
    Checkbox-Eigenschaft, auch wenn die Checkbox diesen Wert ändern kann.
    Anders ausgedrückt: Du solltest den Zustand nicht in einer Checkbox speichern. Die Checkbox sollte den Zustand nur anzeigen und verändern
    dürfen. Im Grunde solltest Du das Model-View-Controller- oder Document/View-Prinzip beherzigen.

    Gruß,

    Alexander



  • ZeroOne schrieb:

    Ausserdem wird das ganze in einer Ini Datei gespeichert. Nur das Problem ist das es beim ersten Programmstart noch keine Ini gibt da diese erst erstellt wird.

    Wenn die ini Datei noch nicht existiert kannst Du einen default angeben, im dem
    Beispiel wäre das "NEIN".

    TIniFile *ini; 
        ini = new TIniFile(ChangeFileExt(Application->ExeName, ".ini")); 
        Label1->Caption =ini->ReadString("Checkbox", "State", "NEIN"); 
        delete ini;
    

Anmelden zum Antworten