Abhakliste
Hallo allerseits,
also ich hab folgendes Problem. Ich habe mehrere Checkboxes, die eine Art Liste dartsellen sollen die man nach und nach abhaken kann. Ich möchte den Zustand der liste natürlich speicher und nachher wieder laden. Zur unterscheidung der Checkboxes nutze ich die Tag-Eigenschaft, damit jede Checkbox von der anderen undabhängig vom Namen unterschieden werden kann. Um das Ganze zu realisieren habe ich mich etwas mit Ini-Files beschäftigt, ich kann Daten schreiben und speichern. Kann ich den den Zustand einer Checkbox, also ob geklickt oder nicht, in die Ini schreiben und sie nachher wieder auslesen? Also dass Checkbox1 = true gestzt wird? mfg CUBE [edit=SirThornberry]Rechtschreibfehler korrigiert, hier geht's wohl eher um das abhaken als das abharken - Mfg, SirThornberry[/edit] |
Re: Abharkliste
Wenn du durch alle Boxeb gehst und das in die Ini schreibst, sollte das ohne Weiteres gehen.
|
Re: Abharkliste
Hallo,
IniFile.ReadBoolm WriteBool (CheckBox.Checked) Heiko |
Re: Abharkliste
wie wäre es, wenn du eine CheckListBox nimmst, dann kannst du die durch den Index unterscheiden und musst nicht mit den Tags arbeiten...
|
Re: Abharkliste
ps: abhakliste, kommt von abhaken :wink:
|
Re: Abhakliste
Erstmal danke an die die mir geholfen haben :stupid:
@ computer-glossar.de Sorry kleiner Rechtschreibfehler meinerseits ^^ @ fLaSh11 Hab mir das mit der ChecklistBox mal angesehen, aber das gefällt mir von der Optik nicht so ganz. Mit den Tags von Buttons etc zu arbeiten habe ich kein Problem, hab das mal mit über 100 Stück gemacht für mein Schulprojekt und die alle mit ner Actionlist in eine Procedure zusammengeführt. :) @hoika Hab das mal probiert. Jedoch bekomme ich dann immer nen fehler und delphi möchte mir klarmachen dass boolean und strings sich nciht sonderlich gut miteinander vertragen ;) Hab mal zum Test eine kleine ini mit folgendem Inhalt selbst geschrieben: ____________ [Start] Wert1 = true ____________ hab das dann mal probiert auszulesen
Delphi-Quellcode:
Problem ist ich hab Null Ahnung was ich in die Klammern von ReadBool. Ich hab das so eingegeben wie ich das von readstring kenne. Dern Wert für den Abschnitt zu erst, dann den Name dem ein Wert zugeordnet ist und den Wert dann leer lassen, naja, mein pc sieht das anders als ich... :cry:
var vVariable1 : boolean;
begin vVariable1:= ini.ReadBool('Start','Wert1',''); if vVariable1 = true then showmessage('OK') end; |
Re: Abharkliste
Delphi-Quellcode:
(Oder eben true, jedenfalls ein typkompatibler Standardwert).
vVariable1:= ini.ReadBool('Start','Wert1',false);
|
Re: Abharkliste
hab ich eben erst gemacht :-D
Problem ist leider oder kommt es mir nur so vor(?), dass dann dieser wert trueoder false der variable zugeordnet wird? Ich will ja eigentlich dass der wert, der in der ini steht gelesen wird und dann auf die variable übertragen wird. Oo' Nur hat der mir eben dann diese immer auf true gesetzt, selbst wenn der wert der in der ini stand auf false war. |
Re: Abhakliste
Poste doch mal die Ini. Steht da etwa "false" drin?
|
Re: Abhakliste
Also ich habe 2 Procedures zum lesen und schreiben in/aus Inis:
Delphi-Quellcode:
So jetzt musst du nur die Procedure aufrufen, einen Pfad angeben und die Sacher ist gegessen.
{-----------------------------------------------------------------------------
Description: Schreibt in eine INI Procedure: schreibeini Arguments: pfad:string Result: None Detailed description: -----------------------------------------------------------------------------} procedure schreibeini(pfad:string); const endung='.ini'; var ini:TInifile; i:integer; procedure writeValues(comp:Tcomponent); var i:integer; begin with comp do for i:=0 to ComponentCount -1 do begin if Components[i] is TCheckBox then ini.WriteBool(comp.Owner.Name+' '+comp.Name+' '+Components[i].ClassName,Components[i].Name,TCheckBox(Components[i]).Checked); end; end; begin try if pfad='' then pfad:=ExtractFilePath(Application.ExeName)+dateToStr(now)+' '+inttostr(hourof(now))+' Uhr und '+inttostr(minuteof(now))+' Minuten'+endung else //macht doppelte endungen weg DelDubbleExtension(pfad,endung); //hier schreibt er alle Einstellungen in die Ini Datei, // egal ob die Datei vorher schon Existiert hat, es wird einfach überschrieben //hier in der ersten zeile wird die Ini datei mit create kreiert ini:=tinifile.Create(pfad); //hier läuft er alle Komponenten von Form1 durch und speichert die Werte writeValues(form1); except showmessage('Es konnte keine Datei erstellt werden!'+chr(13)+ 'Falls Sie das Programm von CD Starten kopieren Sie bitte die *.exe auf ihre Festplatte und starten Sie erneut!'); end; ini.Free; end; {----------------------------------------------------------------------------- Description: Liest aus einer INI Procedure: leseini Arguments: pfad:string Result: None Detailed description: -----------------------------------------------------------------------------} procedure leseini(pfad:string); var ini:TInifile; i:integer; procedure readValues(comp:Tcomponent); var i:integer; begin with comp do for i:=0 to ComponentCount -1 do begin if Components[i] is TCheckBox then TCheckBox(Components[i]).Checked:=ini.readBool(comp.Owner.Name+' '+comp.Name+' '+Components[i].ClassName,Components[i].Name,TCheckBox(Components[i]).Checked); end; end; begin ini:=tinifile.Create(pfad); try if fileexists(pfad) then begin //hier läuft er alle Komponenten durch und liest die Werte readValues(form1); end; except showmessage('Es konnte keine Datei erstellt werden!'+chr(13)+ 'Falls Sie das Programm von CD Starten kopieren Sie bitte die *.exe auf ihre Festplatte und starten Sie erneut!'); end; ini.Free; end; Im OnShow und im OnClose würde ich die Procedure leseini, bzw. schreibeini ausführen. Gruß Alexander |
Re: Abhakliste
Hallo,
wenn man von dem Beispiel in Beitrag #6 ausgeht, wird beim Lesen in jedem Fall der Defaultwert geliefert. Die Methode TIniFile.ReadBool erwartet einen Integerwert in der .ini-Datei. Der Wert 0 wird dabei als False interpretiert, jeder von Null verschiedene (ganzzahlige) Wert als True. Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz