Avatar billede stone Forsker
08. april 2003 - 18:57 Der er 7 kommentarer og
1 løsning

gemme checkbox = checked

jeg har 6 checkbox og ønsker at gemme om de er checked eller ikke i en *.dat eller *.ini file, så når programmet starter læses de sidst gemte indstillinger.

hvad er den bedste metode?
Avatar billede dcgeek Nybegynder
08. april 2003 - 19:34 #1
Den bedste metode jeg kender til, er følgende:

Indsæt en memo1 på din form.

Under din CheckBox1's OnClick skriver du:

if checkbox1.checked = true then
begin
  if not(pos('check1TRUE',memo1.text) <> 0) then
    if pos('check1FALSE',memo1.text) <> 0 then
        memo1.text := stringreplace(memo1.text,'check1FALSE','check1TRUE', [rfreplaceall,rfreplaceall]) else
        memo1.lines.add('check1TRUE');
end else

begin
  if not(pos('check1FALSE',memo1.text) <> 0) then
    if pos('check1TRUE',memo1.text) <> 0 then
        memo1.text := stringreplace(memo1.text,'check1TRUE','check1FALSE', [rfreplaceall,rfreplaceall]) else
        memo1.lines.add('check1FALSE');
end;
Avatar billede dcgeek Nybegynder
08. april 2003 - 19:35 #2
ps. koden er skrevet direkte i notepad, da jeg ikke har Delphi lige ved hånden, så kan ikke garantere for nogen fejl, men prøv dig lidt frem med den.

Men mener da den skulle virke uden problemer...
Avatar billede doc404 Novice
08. april 2003 - 19:54 #3
Eller sådan her...


procedure SaveSettings;
var
  ini : TIniFile;

  procedure SaveCheckBox(Chk : TCheckBox);
  begin
    ini.WriteBool('CheckBoxes',Chk.Name,Chk.Checked);
  end;

begin
  ini := TIniFile.Create('d:\tmp\MyIniFile.ini');
  SaveCheckBox(CheckBox1);
  SaveCheckBox(CheckBox2);
  SaveCheckBox(CheckBox3);
  ...
  ini.Free;
end;

procedure LoadSettings;
var
  ini : TIniFile;

  procedure GetCheckBox(Chk : TCheckBox);
  begin
    Chk.Checked := ini.ReadBool('CheckBoxes',Chk.Name,False);
  end;

begin
  ini := TIniFile.Create('d:\tmp\MyIniFile.ini');
  GetCheckBox(CheckBox1);
  GetCheckBox(CheckBox2);
  GetCheckBox(CheckBox3);
  ....
  ini.Free;
end;
Avatar billede stone Forsker
08. april 2003 - 20:56 #4
dcgeek: nu vil jeg ikke have en memo på min form
Avatar billede stone Forsker
08. april 2003 - 21:02 #5
doc404:

får nogle fejlmeldinger om de forskellige checkbox
Avatar billede stoney Nybegynder
08. april 2003 - 21:31 #6
var
  Form1: TForm1;
  ini : Tinifile;

implementation

{$R *.dfm}

procedure TForm1.SaveClick(Sender: TObject);
var i : Integer;
begin
ini := TIniFile.Create('d:\MyIniFile.ini');

for i := 0 to ComponentCount-1 do
  if (Components[i] is TCheckbox) then
  ini.WriteBool('settings',components[i].Name,(Components[i] as TCheckbox).Checked);

  ini.Free;
end;

procedure TForm1.readClick(Sender: TObject);
var
i : integer;
begin
ini := TIniFile.Create('d:\MyIniFile.ini');

for i := 0 to ComponentCount-1 do
  if (Components[i] is TCheckbox) then
    (Components[i] as TCheckbox).Checked := ini.ReadBool('settings',components[i].Name,false);
  ini.Free;
end;


Stoney
Avatar billede stone Forsker
08. april 2003 - 21:40 #7
tak stoney:
det var lige det
Avatar billede doc404 Novice
08. april 2003 - 22:32 #8
Gik ud fra du kunne finde ud af at ændre navnene på dem...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester