CheckBox Eigenschaften speichern.



  • Hi

    Wie kann ich die Eigenschaften der Checkbox speichern?
    Geht es, dass ich die Eigenschaften in eine *.txt Datei schreibe und sie dann wieder herauslese beim Programmstart, dass die vorher markierten CheckBox"es" wieder markiert sind (Die vorherigen Eigenschaften wiederhergestellt sind)?

    Danke,
    Andi



  • Klar geht das. Schreib einfach z.B. nen "true" oder "false" in deine txt.datei, oder noch besser mach dir eine ini.datei.

    Dann liest du Am Anfang die Datei aus, und setzt halt bei "true" die checkbox auf enabled und umgekehrt 😉



  • noch leichter: guck dir TIniFile an.
    Dann nimmst du halt z.b. CheckBoxName=true und so



  • und wie SCHREIBE ich "enabled=true" in eine Textdatei.
    Ich finde den "SaveToFile" Befehl nicht "Checkbox1->?"

    was muss ich da eingeben?



  • Ein Tipp (wenn du mit einem txt.file arbeiten willst):

    Die Checkbox kennt nix womit du den "checked" wert als "string" in eine Datei schreiben kannst 🙄

    Also speichere abhägig vom Status ein "true" oder "false" in einen String oder eine Stringlist und speicher dann den string in die datei...



  • Könntest du mir bitte ein Beispiel geben 😞



  • Hmm, ok. So jetzt aus dem Stehgreif (hab grad kein C++Builder zur Hand)

    das txt.file legst du am besten zuerst per Hand an und schreibst in die erste Zeile ein "true"

    //im FormCreate

    TStringist *liste = new TStringList;
    liste->Clear();
    
    liste->LoadFromFile("status.txt");
    
    if(liste->Items->Strings[0] == "true")
    {
    checkbox->Checked = true;
    }
    else
    {
    checkbox->Checked = false;
    }
    delete liste;
    

    zum Abspeichern des Status

    TStringist *liste = new TStringList;
    liste->Clear();
    
    if(checkbox->Enabled == true)
    {
    liste->Add("true");
    liste->SaveToFile("status.txt");
    }
    else
    {
    liste->Add("false");
    liste->SaveToFile("status.txt");
    }
    
    delete liste;
    

    Sollte ich mich irgendwo verptippt haben, guck dir die eigenschaften von TStringList an.

    Aber,das ist nur ne notlösung, besser ist die verwendung von TIniFile 😉



  • "liste->Items" kennt er nicht 😞 . =funktioniert nicht.
    [C++ Fehler] Unit1.cpp(50): E2316 'Items' ist kein Element von 'TStringList'

    Ist die Verwedung eines *.ini files einfacher?



  • TStringList->Strings->Items
    ja, ne ini is viel leichter, weil es dazu klassen gibt!



  • Könnest du mir das bitte erklären, bzw sagen wo ich ein Beispiel finde?

    Das mit der *.txt kommt mir grad n bissl spanisch vor 😕



  • Öffne mal die Borland Hilfe, und tipp dort TIniFile ein! Dann DblKlicke auf "TIniFile" und dann auf "Beispiel" (oben)!
    Klar soweit? 😉
    Das Beispiel ist recht gut, und da müsste alles enthalten sein, was du benötigst!



  • Hallo!

    Hier mal für Anfänger ein lauffähiges Beispiel (habe ich mal vor Jahren programmiert, also nicht schimpfen 😉

    ABER: TIniFile ist wirklich ansehnlicher und empfehlenswerter!

    Globale Variablen:

    int messagef1=true;
    int messagef2=true;
    int messager=true;
    

    Einstellungen laden:

    if((datei2=fopen("nihongo.ncf", "r"))==NULL)
    {
    Application->MessageBox("Datei kann nicht gelesen werden!", "Error", MB_OK);
    return;
    }
    fscanf(datei2,"%2d %2d %2d",&messager,&messagef1,&messagef2);
    fclose(datei2);
    rm1->Checked=messager;  // rm1 ist eine CheckBox
    nfm1->Checked=messagef1; // nfm1 ist eine CheckBox
    lfm1->Checked=messagef2;
    

    // lfm1 ist eine CheckBox

    Einstellungen speichern:

    if((datei2=fopen("nihongo.ncf", "wr+"))==NULL)
    {
    Application->MessageBox("Datei konnte nicht geschrieben werden", "Error", MB_OK);
    return;
    }
    messager= rm1->Checked;  // rm1 ist eine CheckBox
    messagefl=nfm1->Checked; // nfm1 ist eine CheckBox
    messagef2=lfm1->Checked;
    

    // lfm1 ist eine CheckBox
    fprintf(datei2,"%d %d %d",messager,messagef1,messagef2);
    _fcloseall();[/code]

    Grüße



  • ich bevorzuge trotz aller schreibtechnik TIniFile 😃

    Beispiel :

    //ini.ini:
    [CB]
    cb1=true
    cb2=false
    
    //unit1.cpp:
    [b]#include <IniFiles.hpp>[/b]
    TIniFile *ini=new TIniFile("C:\Programme\MyProjects\Ini\ini.ini");
    cb1->Enabled=ini->ReadString("CB","cb1",false);  //cb1 u cb2 sind CheckBoxen
    cb2->Enabled=ini->ReadString("CB","cb2",false);
    //ini->ReadString(AnsiString Section,AnsiString Key,Rückabewert_wenn_nichtlesbar);
    delete ini;
    


  • ich bin am verzweifeln 😞 *heul*
    ich kann als anfänger mit den sachen fast gar nix anfangen, bzw. ich glaub ich stell mich grad sehr blöd an. Die hilfe von borland ist meiner meinung nach beschissen.

    Könnt ihr mir einfach nur sagen wie ich jetzt KONKRET den "TEXT eines Labels" in die "status.ini"(Befindet sich im Projektverzeichnis) schreibe. Mit "Label1->caption" ,etc.

    wäre echt nett von euch
    ..wenn ich das habe ist es kein problem mehr andere dinge reinzuschreiben.



  • neobanz schrieb:

    ...
    Könnt ihr mir einfach nur sagen wie ich jetzt KONKRET den "TEXT eines Labels" in die "status.ini"(Befindet sich im Projektverzeichnis) schreibe. Mit "Label1->caption" ,etc. ...

    Zum reinschreiben (Kopie aus der Borland-Hilfe, welche btw. eine der besten im Vergleich zu M$ ist..):

    TIniFile *ini;
       ini = new TIniFile("status.ini");
       ini->WriteString ( "Label1", "Caption", Label1->Caption);
       delete ini;
    


  • sorry aber bei mir steht immer noch nix in dem inifile "status.ini" 😞 .
    Aber es kommt keine Fehlermeldung mehr 😃



  • sag mal, was steht denn in dem Label1?

    Wenn da nichts drin steht, kann da auch nichts in die INI reingeschrieben werden!

    Vorschlag:

    Mache dies:
    1. Lösche deine status.ini
    2. nimm diesen Code:

    Label1->Caption="Hallo";
    TIniFile *ini;
    ini = new TIniFile("status.ini");
    ini->WriteString ( "Label1", "Caption", Label1->Caption);
    delete ini;
    

    3. Suche über die Windows-Such-Funktion ("Start"->"Suchen") die Datei "status.ini" auf allen Festplatten und Unterverzeichnissen...

    Dann sehen wir weiter 😉



  • Die Datei ist auf einam unter c:\status.ini?! 😮
    ich hab dacht wenn man nix angibt liest er aus dem Projektverzeichnis? 🙄
    ups..was muss ich angeben um die Datei ins Projektverzeichnis zu speichern ohne "C:\Dokumente und Einstellungen\Admin\Eigene Dateien\Projekte\......" anzugeben?



  • Hilft dies?

    "GetCurrentDir gibt den Namen des aktuellen Verzeichnisses zurück."



  • Allerletzte Frage: Wie bette ich das "GetCurrentDir" ein 😞
    ansonstn hab ich alles und es funktioniert auch.

    ..nochmals !!danke!! dass ihr so geduldig ward 🙄



  • is ja echt schlimm mit dir 😃
    nee, versteh ich ja, ich war auch mal newb

    am besten du nimmst

    TIniFile *ini=new TIniFile(".\\status.ini");
    

    dann .==aktuelles verzeichnis und halt in dem verzeichnis in die status.ini!

    anders:

    AnsiString Pfad=GetCurrentDir()+"\\status.ini";
    

Anmelden zum Antworten