小弟今天写了一个程序,就是listview从文件导入数据的问题,虽然函数处理正确, 但listview就是不显示结果,为什么? 程序如下:
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;
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;
如果是vsReport的话,
那么必须要添加ListView1.Columns.Add()这样添加列才行的