Virtual Listview怎样实现,请各位帮帮忙!

ZBYF 2005-03-09 02:26:03
用按钮实现查询数据库,然后加入道listview中,记录大约有10000条,listview显示的速度很慢,请各位给一个例子,谢谢了!
...全文
230 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
码农天天向上 2005-03-10
  • 打赏
  • 举报
回复
对对对,我以前一高手同事在TreeView里就用的动态查询展开!虽然那数据少得可怜:)
g961681 2005-03-10
  • 打赏
  • 举报
回复
1.也可以先只导入第一层的数据。然后在展开第一层结点的时候,再导入该结点下的第二层数据。
2..BeginUpdate/EndUpdate也最好用一下!
Cappuccino 2005-03-10
  • 打赏
  • 举报
回复
你向listview里面添加Items之前
先用ListView.Items.BeginUpdate;

添加结束后,在ListView.Items.EndUpdate;

这样可以大幅度提高速度,主要是放置在添加过程中ListView的刷新。
xthmpro_cn 2005-03-10
  • 打赏
  • 举报
回复
请参考Delphi的Demo:
E:\Program Files\Borland\Delphi6\Demos\Virtual Listview
taber 2005-03-09
  • 打赏
  • 举报
回复
在ondata事件里:
if (Item.Index > FIDList.Count) then Exit;
with ShellItem(Item.Index)^ do
begin
Item.Caption := DisplayName;
Item.ImageIndex := ImageIndex;

if ListView.ViewStyle <> vsReport then Exit;

if not IsFolder(FIShellFolder, ID) then
Item.SubItems.Add(Format('%dKB', [Size]))
else
Item.SubItems.Add('');
Item.SubItems.Add(TypeName);
try
Item.SubItems.Add(ModDate);
except
end;

if Bool(Attributes and FILE_ATTRIBUTE_READONLY) then Attrs := Attrs + 'R';
if Bool(Attributes and FILE_ATTRIBUTE_HIDDEN) then Attrs := Attrs + 'H';
if Bool(Attributes and FILE_ATTRIBUTE_SYSTEM) then Attrs := Attrs + 'S';
if Bool(Attributes and FILE_ATTRIBUTE_ARCHIVE) then Attrs := Attrs + 'A';
end;
Item.SubItems.Add(Attrs);
码农天天向上 2005-03-09
  • 打赏
  • 举报
回复
delphi 的例子有看头
ZBYF 2005-03-09
  • 打赏
  • 举报
回复
请具体一点,如怎样加载数据,在那个事件里加?我是一个新手,您能举个例吗?谢谢!
taber 2005-03-09
  • 打赏
  • 举报
回复
方式为自己加载数据,在事件里编程,delphi自带有例子,注意ownerdata设为true
ZBYF 2005-03-09
  • 打赏
  • 举报
回复
可以,但怎样才能提高速度?谢谢!
码农天天向上 2005-03-09
  • 打赏
  • 举报
回复
例子稍等
码农天天向上 2005-03-09
  • 打赏
  • 举报
回复
你100道100道分批显示好不?

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧