Jeg er ved at lave et program hvor jeg bruger listview. Jeg skal så have gjort sådan at man kan gemme item'ne i en tekst el.
Problemet med ovenstående problemstilling er hvis du ønsker at hente de gemte værdier ind i din ListView igen. Så er det nødvendigt at gemme i et format der angiver hvad der er Items og SubItems. Til dette er det klart nemmest blot at gemme hele komponenten til en fil som følgende:
var
FileStream: TFileStream;
begin
FileStream := TFileStream.Create('ListView.dat', fmCreate);
FileStream.WriteComponent(ListView);
FileStream.Free;
Hvorefter det gemte kan hentes ind i komponenten igen ved hjælp af følgende:
var
FileStream: TFileStream;
begin
FileStream := TFileStream.Create('ListView.dat', fmOpenRead);
ListView := TListView(FileStream.ReadComponent(ListView));
FileStream.Free;
Ovenstående kode gør dog at al information om den givne ListView gemmes hvormed filens størrelsen vil blive noget større end hvis du kun havde gemt værdierne. Derudover er den gemte fil i binær.
Hvis du ikke ønsker at hente de gemte værdier ind i din ListView igen og samtidigt gerne vil gemme indholdet af din ListView som en normal tekstfil så kan det gøres på følgende måde:
var
StringList: TStringList;
Item: TListItem;
I, S: Integer;
begin
StringList := TStringList.Create;
for I := 0 to ListView.Items.Count - 1 do
begin
Item := ListView.Items[I];
StringList.Add(Item.Caption);
for S := 0 to Item.SubItems.Count - 1 do
StringList.Add(Item.SubItems[S]);
end;
StringList.SaveToFile('List.txt');
StringList.Free;
end;
Hvis du ønsker at hente de gemte værdier ind i din ListView igen og samtidigt ønsker at de skal gemmes som tekst, så bliver du nød til konstruere et format der kan angive hvad der "hænger sammen". Må jeg anbefale XML?
[Redigeret d. 31/01-03 20:01:10 af MHA]