procedure saveListViewToFile(listview : TListView;fileName : string);
var
item : TListItem;
Column : TListColumn;
i ,j : integer;
line : string;
FileHandle : Integer;
F:textfile;
begin
if (listview = nil) then exit;
if (listview.Items.Count <= 0) then exit;
if FileExists(fileName) then DeleteFile(fileName);
FileHandle := FileCreate(FileName);
if (FileHandle <= 0) then exit;
FileClose(FileHandle);
assignFile(f,fileName);
append(f);
//保存标题
line := '';
for i := 0 to listview.Columns.Count -1 do
begin
Column := listview.Columns.Items[i];
line := line + Column.Caption + #9;
end;
writeln(f,line);
//保存数据
for i := 0 to listview.Items.Count -1 do
begin
line := '';
item := listview.Items.Item[i];
line := item.Caption + #9;
for j := 0 to item.SubItems.Count -1 do
begin
line := line + item.SubItems.Strings[j] + #9;
end;
writeln(f,line);
end;
closefile(f);
end;
procedure splitString(s : string;strlist : TStringList;splitTag : string);
var
indexbegin ,i ,len : integer;
str : string;
begin
len := length(s);
indexbegin := 1;
for i := 1 to len do
begin
if copy(s,i,1) = splitTag then
begin
str :=copy(s,indexbegin,i - indexbegin);
strlist.Add(str);
indexbegin := i +1;
end;
end;
strlist.Add(copy(s,indexbegin,len - indexbegin));
end;
procedure loadListViewFromFile(listview : TListView;fileName : string);
var
item : TListItem;
Column : TListColumn;
i ,j : integer;
line : string;
FileHandle : Integer;
F:textfile;
strlist : TStringList;
splitTag : string;
begin
if (listview = nil) then exit;
if FileExists(fileName) = false then exit;
assignFile(f,fileName);
Reset(f);
//添加标题
Readln(f,line);
if line = '' then exit;
strlist := TStringList.Create;
splitTag := #9;
Readln(f,line);
while line <> '' do
begin
splitString(line,strlist,splitTag);
item := listview.Items.Add;
item.Caption := strlist[0];
for j := 1 to strlist.Count -1 do
begin
item.SubItems.Add(strlist[j]);
end;
strlist.Clear();
Readln(f,line);
end;
strList.Free;
end;