Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Abhakliste (https://www.delphipraxis.net/93587-abhakliste.html)

CUBEstorm 7. Jun 2007 21:14


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]

mkinzler 7. Jun 2007 21:17

Re: Abharkliste
 
Wenn du durch alle Boxeb gehst und das in die Ini schreibst, sollte das ohne Weiteres gehen.

hoika 7. Jun 2007 21:18

Re: Abharkliste
 
Hallo,

IniFile.ReadBoolm WriteBool (CheckBox.Checked)


Heiko

fLaSh11 7. Jun 2007 22:59

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...

semo 7. Jun 2007 23:00

Re: Abharkliste
 
ps: abhakliste, kommt von abhaken :wink:

CUBEstorm 10. Jun 2007 17:03

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:
var vVariable1 : boolean;
begin
  vVariable1:= ini.ReadBool('Start','Wert1','');
  if vVariable1 = true then
  showmessage('OK')
end;
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:

DeddyH 10. Jun 2007 17:04

Re: Abharkliste
 
Delphi-Quellcode:
vVariable1:= ini.ReadBool('Start','Wert1',false);
(Oder eben true, jedenfalls ein typkompatibler Standardwert).

CUBEstorm 10. Jun 2007 17:19

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.

DeddyH 10. Jun 2007 17:24

Re: Abhakliste
 
Poste doch mal die Ini. Steht da etwa "false" drin?

Alexander Roth 10. Jun 2007 17:33

Re: Abhakliste
 
Also ich habe 2 Procedures zum lesen und schreiben in/aus Inis:
Delphi-Quellcode:
{-----------------------------------------------------------------------------
  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;
So jetzt musst du nur die Procedure aufrufen, einen Pfad angeben und die Sacher ist gegessen.
Im OnShow und im OnClose würde ich die Procedure leseini, bzw. schreibeini ausführen.

Gruß Alexander


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:48 Uhr.
Seite 1 von 2  1 2      

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