Avatar billede rekun Nybegynder
07. marts 2007 - 18:35 Der er 4 kommentarer og
1 løsning

gem checkbox i en INI fil

Hei alle eksperter.
Jeg er lige begyndt at "lege" med INI filer, og jeg kan ikke lige få den til at gemme indstillingen i INI filen.
Jeg bruger normalt denne kode:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
Var
  MyINI: TINIFile; // TINIFile objektet
  PathToINIFile: String;
Begin
    PathToINIFile := IncludeTrailingBackslash(ExtractFilePath(ParamStr(0)))+'test.ini';
    MyINI := TINIFile.Create(PathToINIFile);
    MyINI.WriteInteger('Form1', 'Width', Form1.Width);
    MyINI.Free;
    end;

hvordan laver jeg indstillingen checkbox1.checked := true/false??
Avatar billede stone Forsker
07. marts 2007 - 19:03 #1
//skriv til ini

var
TheIni: TIniFile;
str: string;
begin
str := ExtractFilePath(Application.ExeName) + 'edit1.ini';
TheIni := TIniFile.Create(str);
TheIni.WriteString('Name', 'Num1', Edit1.Text);
end;


// læs fra ini

var
TheIni: TIniFile;
Str: String;
begin
str := ExtractFilePath(Application.ExeName) + 'edit1.ini';
TheIni := TIniFile.Create(str);
edit1.Text:=  TheIni.ReadString('Name', 'Num1', Edit1.Text);
end;

under din  Form1: TForm1;

var
ini : Tinifile;

//form close

var i : Integer;
begin
ini := TIniFile.Create(ExtractFilepath(Application.Exename) + 'MyIniFile.ini');

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

// form create

var
i : integer;
begin
ini := TIniFile.Create(ExtractFilepath(Application.Exename) + 'MyIniFile.ini');

for i := 0 to ComponentCount-1 do
  if (Components[i] is TCheckbox) then
    (Components[i] as TCheckbox).Checked := ini.ReadBool('Indstillinger',components[i].Name,false);
  ini.Free;
end;
Avatar billede stone Forsker
07. marts 2007 - 19:05 #2
edit skal du måske ikke bruge tog dem med alligevel ellers slet dem
Avatar billede rekun Nybegynder
08. marts 2007 - 19:43 #3
Kan du hjælpe mig med det her problem.
jeg er kun gået igang med OnClose og bruger denne kode:

Var
  MyINI: TINIFile; // TINIFile objektet
  PathToINIFile: String;
Begin
    PathToINIFile := IncludeTrailingBackslash(ExtractFilePath(ParamStr(0)))+'test.ini';
    MyINI := TINIFile.Create(PathToINIFile);
  if (Components[MyINI] is TCheckbox) then
    (Components[MyINI] as TCheckbox).Checked := MyINI.ReadBool('Indstillinger',components[MyINI].Name,false);
    MyINI.Free;

men jeg får denne fejl: "[Pascal Error] Unit5.pas(60): E2010 Incompatible types: 'Integer' and 'TIniFile'" kan du hjælpe med en løsning???
Avatar billede stone Forsker
08. marts 2007 - 21:19 #4
fejlen ligger nok i dine [MyINI] prøv at erstatte dem

Var
  i: Integer;
  PathToINIFile: String;
  MyINI: TINIFile;
Begin
    PathToINIFile := IncludeTrailingBackslash(ExtractFilePath(ParamStr(0)))+'test.ini';
    MyINI := TINIFile.Create(PathToINIFile);
    for i := 0 to ComponentCount-1 do
  if (Components [i] is TCheckbox) then
    (Components [i] as TCheckbox).Checked := MyINI.ReadBool('Indstillinger',components [i].Name,false);
    MyINI.Free;
Avatar billede rekun Nybegynder
10. marts 2007 - 16:49 #5
ja men du havde jo helt ret, du får dine point.
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