Pytanie dotyczy ListView1 i zapisywanie danych

0

Chodzi mi oto aby podczas zamykania programu zapisywał dane z kolumn ListView1do pliku tak samo jak i przy otwieraniu wczytywał dane do kolumn ListView1. Lub coś podobnego.

Oto kod zapisywania do pliku, które znalazłem na stronie „4programmers.net”
procedure TForm1. Button1Click(Sender: TObject);
var
F: TFileStream;
Begin
F := TFileStream.Create('C:\Plik\List.txt', fmCreate or fmShareCompat);
try
F.WriteComponent(ListView1);
finally
F.Free;
end;
end;

A to do wczytywania z pliku, który też znalazłem na stronie „4programmers.net”
procedure TForm1.Bbb3Click(Sender: TObject);
var
F: TFileStream;
Begin
F := TFileStream.Create('C:\ Plik\List.txt', fmOpenRead or fmShareDenyWrite);
try
F.ReadComponent(ListView1);
finally
F.Free;
end;
end.

0

Procedure TForm1.Zapisz;
Var F : TextFile;
i , j : integer;
s : string;
begin
s := ExtractFileDir(ParamStr(0)) + '\dane.txt.';
AssignFile(f,s);
Rewrite(f);
try
i := ListView1.Items.Count;
Writeln(f,i);
for j := 1 to i do begin
s := ListView1.Items.Item[j-1].Caption;
//ShowMessage(s+',Wpis: '+IntToStr(j-1));
WriteLn(F,s);

    s := ListView1.Items.Item[j-1].SubItems.Strings[0];
    //ShowMessage(s+',Wpis: '+IntToStr(j-1));
    WriteLn(F,s);

    s := ListView1.Items.Item[j-1].SubItems.Strings[1];
    //ShowMessage(s+',Wpis: '+IntToStr(j-1));
    WriteLn(F,s);

    s := ListView1.Items.Item[j-1].SubItems.Strings[2];
    //ShowMessage(s+',Wpis: '+IntToStr(j-1));
    WriteLn(F,s);
    //j := j + 1;
end;

finally
CloseFile(f);
end;
end;

Procedure TForm1.Odczytaj;
Var F : TextFile;
i : integer;
j : integer;
s : string;
begin
s := ExtractFileDir(ParamStr(0)) + '\dane.txt.';
if FileExists(s) then begin
AssignFile(f,s);
Reset(f);
try
Readln(f,i);
//ShowMessage('Ilość: '+IntToStr(i));
j := 0;
While not Eof(f) do
begin
Readln(f,s);
//ShowMessage(s+' ,Wpis: '+IntToStr(j));
ListView1.Items.Add.Caption := s;

    ReadLn(f,s);
    //ShowMessage(s+' ,Wpis: '+IntToStr(j));
    ListView1.Items.Item[j].SubItems.Add(s);

    ReadLn(f,s);
    //ShowMessage(s+' ,Wpis: '+IntToStr(j));
    ListView1.Items.Item[j].SubItems.Add(s);

    ReadLn(f,s);
    //ShowMessage(s+' ,Wpis: '+IntToStr(j));
    ListView1.Items.Item[j].SubItems.Add(s);
    j := j + 1;
end;

finally
CloseFile(f);
end;
end else MessageBox(handle,'Jest to pewnie pierwsze uruchomienie programu lub w poprzedniej sesji nie zapisałeś swojej pracy','Informacja',MB_OK + MB_ICONINFORMATION);
end;

to jest dla 4 kolumn w LV.

0

jest prostsza wskazówka w FAQ

1 użytkowników online, w tym zalogowanych: 0, gości: 1