首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在显示数据后立即保存虚拟列表视图?

如何在显示数据后立即保存虚拟列表视图?
EN

Stack Overflow用户
提问于 2011-01-26 03:15:37
回答 1查看 756关注 0票数 0

我希望在数据填充后立即将数据保存在虚拟列表视图中。如果我使用Savedialog来保存数据,它就能工作。如果在ListviewOnData事件中调用保存过程,则会提示错误“无法创建文件.”。我在这里复制我的观察结果。

代码语言:javascript
复制
procedure TForm6.savefileList(AListView: TListView; sFileName: string);

begin
F:= TFileStream.Create(sFileName, fmCreate or fmOpenRead);
...                                                       
...
F.free;

end;

Procedure Tform6.SavevirtualistinSaveDialog;// A buttonClick calls this procedure
begin
If SaveDialog1.execute then
savefilelist(listview1, savedialog1.FileName);; // It works and save data in sfilename.
..
end;

procedure TForm6.ListView1Data(Sender: TObject; Item: TListItem);
begin


with ld do begin     
...
...
// filling data in virtual list

end;
             // Right after filling data, I call Dosavelist procedure.
Dosavelist; //error line " Can not Create file", If I annotate this line
            // and call SavevirtualistinDialog in another buttonClick event, 
            //the data can be saved.

end;

Procedure Tform6.Dosavelist;
begin
savefilelist(listview1, extractfilepath(application.exename)+'list.tmp');
end;

我希望在填充完后将数据保存在listview (虚拟模式)中。但它会导致错误。

如何解决这个问题。提前谢谢你。

新编辑:

我从listview1data事件中删除Dosavelist,并将其放入另一个跟踪listview的函数中。它起作用了。所以这个问题解决了。谢谢大家的帮助。

代码语言:javascript
复制
//My complete savefilelist para is:

savefilelist(listview1, extractfilepath(application.exename)+'list.tmp'); 

//In SavevirtualistinSaveDialog procedure, the complete save code line is: 

savefilelist(listview1, savedialog1.FileName);

或者Dosavelist手术可能不会在那里被称为?哪里?如何捕捉虚拟列表视图刚刚完成填充的时刻?我不知道在ListviewData事件之后是什么事件?

再次感谢您。

EN

回答 1

Stack Overflow用户

发布于 2011-01-26 07:28:11

这听起来好像没有指定绝对文件路径。然后Windows在保存文件时依赖于当前的工作目录。“保存”对话框设置此目录,因此所有操作都正常。在您的ListviewOnData事件中,cwd可能没有正确设置。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4801135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档