delphi TListView
我选中第一TListView中的的行不会报错,第二次在选中的话就提示下面这个!哪位朋友能告诉我下为什么??代码如下:procedureTForm1.ListView1Se...
我选中第一TListView中的的行 不会报错,第二次在选中的话就提示下面这个!哪位朋友能告诉我下为什么?? 代码如下:procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);var i:integer;begin inherited; for i:=0 to ListView1.Selected.Index do begin Label1.Caption:= ListView1.Items[ListView1.Selected.Index].Caption; Label2.Caption:= ListView1.Items[ListView1.Selected.Index].SubItems.Strings[0]; Label3.Caption:= ListView1.Items[ListView1.Selected.Index].SubItems.Strings[1]; end;end;
展开
2个回答
展开全部
//你注意ListView1.Selected本身就是你选择的Item对象实例, 没记错的话当你点击了ListView的时候却没有选择任何项,这时候这里返回的是一个控对象(nil),
在这种情况下for i:=0 to ListView1.Selected.Index do当然会出错
按照这样改试试:(我不方便测试你自己照着这个方式改)
with ListView1 do
begin
if Selected <> nil then
begin
Label1.Caption:= Selected.Caption;
Label2.Caption:= Selected.SubItems.Strings[0];
Label3.Caption:= Selected.SubItems.Strings[1];
end;
end;
你那个循环从你发出的代码上来看是没有意义的并且影响效率上面的我给你去掉了
在这种情况下for i:=0 to ListView1.Selected.Index do当然会出错
按照这样改试试:(我不方便测试你自己照着这个方式改)
with ListView1 do
begin
if Selected <> nil then
begin
Label1.Caption:= Selected.Caption;
Label2.Caption:= Selected.SubItems.Strings[0];
Label3.Caption:= Selected.SubItems.Strings[1];
end;
end;
你那个循环从你发出的代码上来看是没有意义的并且影响效率上面的我给你去掉了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询