关于delphi Virtual Listview的使用问题

1、设置了OwnerData:=true后,为什么不能在过程中关闭即不能再设置OwnerData:=false;2、OnData过程中可以瞬间加载几十万的文本,但如何在O... 1、设置了OwnerData:=true后,为什么不能在过程中关闭即不能再设置OwnerData:=false;
2、OnData过程中可以瞬间加载几十万的文本,但如何在OnData添加其他函数操作或进行其他工作。
添加文本中的信息:
procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
begin
if item.Index > listbox1.Items.Count then exit;
Item.Caption := '第'+IntToStr(Item.Index+1)+'名';//添加序号
Item.SubItems.add(listbox1.Items.Strings[Item.Index]);//添加用户信息
end;
展开
 我来答
百度网友3ff0001
2012-01-11 · 超过10用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:6.8万
展开全部
因为当你设置listview的ownerdata为TRUE后,程序就认为你将管理大量的数据,并将listview设置为virtual listview,并允许你使用非常大的数据量。但代价就是,一旦设置为virtual listview,则你以前设置的数据就丢失,因此,在执行过程中ownerdata是不允许再设置为false的。
追问
感谢luohq热情回答,我能否再问:
1、在这个ListView1Data过程中如何进行其他工作,如遍历、删除等工作。
2、能否留QQ再向你请教。
我的QQ:6599056。
追答
listview1的遍历并不应该在ListView1Data过程中实现,实际上,listview1data是用来管理virtual listview的数据的,正如ListView1AdvancedCustomDrawItem是用来管理显示的一样。
要遍历listview1的items,完全可以用个循环语句就可以实现。
例如:
str:='宋体'
for i:=0 to listview1.Items.Count-1 do
begin
if pos(str,listview1.items[i].caption)>0 then
begin
listview1.Items[i].Selected:=true;
break;
end;
end;
同样删除语句可以写成:
listview1.Selected.Delete;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式