关于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; 展开
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; 展开
1个回答
展开全部
因为当你设置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;
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询