【发布时间】:2010-08-13 08:06:12
【问题描述】:
我尝试使用TListView 组件来显示相当大的数据列表(例如 4000 行大),但创建列表非常慢 - 大约需要 2-3 秒,这使得 UI 变得迟钝和关闭无法使用。
我在BeginUpdate/EndUpdate 块内填充TListView.Items,只使用预分配的字符串 - 我的意思是:我构建了一个要存储的所有字符串的列表(这不会花费人工注意的时间),然后我把它们放在 TListView 中。
我希望在 vsReport 模式下显示 TListView 的内容,并带有几列。
代码如下所示:
MyList.Items.BeginUpdate;
for i := 0 to MyCount - 1 do
begin
ListItem := MyList.Items.Add;
ListItem.Caption := StrCaptions[i];
ListItem.SubItems.Add(StrSubItems1[i]);
ListItem.SubItems.Add(StrSubItems2[i]);
end;
MyList.Items.EndUpdate;
我在 TListView 组件的逻辑中是否遗漏了其他一些技巧?还是我应该忘记使用这个组件进行表演?
【问题讨论】:
-
是 StrCaptions 等 TStringLists 吗?或者获取 Items[i] 需要一些时间吗?
-
@Gerry :它们是哑数组