不怎么明白你的意思?请具体说明你的意思阿。 我今天也写了两个listview程序,你看看吧。 SaveMappingFile是将listview中的值写入文件中,LoadMappingFile是将文件数据导入listview中。 你要从数据库中导入数据,操作类似。function TMycommon.SaveMappingFile(myListView:TListView):boolean; //保存listview里的数据 var tmplist:TStringlist; saveDlg:TSaveDialog; FileName:string; i:integer; j:integer; tmpstr:string; begin tmplist:=TStringlist.Create; saveDlg := TSaveDialog.Create(Application); saveDlg.Filter:='bbf files (*.bbf)|*.bbf'; if saveDlg.Execute then begin FileName := ExtractFileName(saveDlg.FileName); FileName := ChangeFileExt(FileName, '.bbf');
//filename:=ExtractFileName(saveDlg.FileName); if FileExists(FileName) then begin if DeleteFile(FileName) = false then begin MessageDlg('文件可能正在使用,请检查...', mtInformation, [mbYes,mbNo],0); result := false; exit; end; end;
if mylistview.Items.Count = 0 then begin MessageDlg('没有数据,请检查...', mtInformation, [mbYes,mbNo],0); result := false; exit; end;
for i:=0 to mylistview.Items.Count-1 do begin tmpstr:=''; tmpstr:=mylistview.Items.Item[i].Caption; for j:=0 to mylistview.Items.Item[i].SubItems.Count-1 do tmpstr:=tmpstr+'$'+mylistview.Items.Item[i].SubItems.Strings[j]; tmplist.Add(tmpstr); end; //for loop
tmplist.SaveToFile(filename); result:=true; exit; end //if loop else result:=false; saveDlg.Free; tmplist.free; end; function TMyCommon.LoadMappingFile(myListView:TListView):boolean; var LoadDlg:TOpenDialog; tmplist:TStringList; FileName:string; iPos,j:integer; //文件位置标志变量 tmpLine,tmpstr:string; //存储读的每一行字符串 tmpListItem:TListItem; begin tmplist := TStringList.create; LoadDlg := TOpenDialog.Create(Application); LoadDlg.Filter:='bbf files (*.bbf)|*.bbf' ; if loaddlg.Execute then FileName := loaddlg.Filename; if FileName = '' then begin result := false; MessageDlg('文件不存在或者运行期错误', mtError, [mbYes,mbNo], 0); exit; end else begin tmplist.LoadFromFile(filename); myListView.Items.Clear; if tmplist.count > 0 then begin for j:=0 to tmplist.count-1 do begin tmpListItem := myListView.Items.Add; iPos := 0; tmpLine := tmplist.strings[j]; iPos := pos('$', tmpLine); tmpstr := midstr(tmpline, 1, iPos-1); tmpListItem.caption := tmpstr; Delete(tmpline,1, iPos); iPos := pos('$', tmpLine); while (iPos > 0) do begin tmpstr := midstr(tmpline, 1, iPos-1); tmpListItem.SubItems.Add(tmpstr); Delete(tmpline,1, iPos); iPos := pos('$', tmpLine); end; //while end; //for end; //the second if result := true; end; //else
我今天也写了两个listview程序,你看看吧。 SaveMappingFile是将listview中的值写入文件中,LoadMappingFile是将文件数据导入listview中。 你要从数据库中导入数据,操作类似。function TMycommon.SaveMappingFile(myListView:TListView):boolean; //保存listview里的数据
var
tmplist:TStringlist;
saveDlg:TSaveDialog;
FileName:string;
i:integer;
j:integer;
tmpstr:string;
begin
tmplist:=TStringlist.Create;
saveDlg := TSaveDialog.Create(Application);
saveDlg.Filter:='bbf files (*.bbf)|*.bbf';
if saveDlg.Execute then
begin
FileName := ExtractFileName(saveDlg.FileName);
FileName := ChangeFileExt(FileName, '.bbf');
//filename:=ExtractFileName(saveDlg.FileName);
if FileExists(FileName) then
begin
if DeleteFile(FileName) = false then
begin
MessageDlg('文件可能正在使用,请检查...', mtInformation, [mbYes,mbNo],0);
result := false;
exit;
end;
end;
if mylistview.Items.Count = 0 then
begin
MessageDlg('没有数据,请检查...', mtInformation, [mbYes,mbNo],0);
result := false;
exit;
end;
for i:=0 to mylistview.Items.Count-1 do
begin
tmpstr:='';
tmpstr:=mylistview.Items.Item[i].Caption;
for j:=0 to mylistview.Items.Item[i].SubItems.Count-1 do
tmpstr:=tmpstr+'$'+mylistview.Items.Item[i].SubItems.Strings[j];
tmplist.Add(tmpstr);
end; //for loop
tmplist.SaveToFile(filename);
result:=true;
exit;
end //if loop
else
result:=false;
saveDlg.Free;
tmplist.free;
end;
function TMyCommon.LoadMappingFile(myListView:TListView):boolean;
var
LoadDlg:TOpenDialog;
tmplist:TStringList;
FileName:string;
iPos,j:integer; //文件位置标志变量
tmpLine,tmpstr:string; //存储读的每一行字符串
tmpListItem:TListItem;
begin
tmplist := TStringList.create;
LoadDlg := TOpenDialog.Create(Application);
LoadDlg.Filter:='bbf files (*.bbf)|*.bbf' ;
if loaddlg.Execute then
FileName := loaddlg.Filename;
if FileName = '' then
begin
result := false;
MessageDlg('文件不存在或者运行期错误', mtError, [mbYes,mbNo], 0);
exit;
end
else
begin
tmplist.LoadFromFile(filename);
myListView.Items.Clear;
if tmplist.count > 0 then
begin
for j:=0 to tmplist.count-1 do
begin
tmpListItem := myListView.Items.Add;
iPos := 0;
tmpLine := tmplist.strings[j];
iPos := pos('$', tmpLine);
tmpstr := midstr(tmpline, 1, iPos-1);
tmpListItem.caption := tmpstr;
Delete(tmpline,1, iPos); iPos := pos('$', tmpLine);
while (iPos > 0) do
begin
tmpstr := midstr(tmpline, 1, iPos-1);
tmpListItem.SubItems.Add(tmpstr);
Delete(tmpline,1, iPos);
iPos := pos('$', tmpLine);
end; //while
end; //for
end; //the second if
result := true;
end; //else
tmplistItem.Free;
tmplist.Free;
end;
end.