//你注意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;
你那个循环从你发出的代码上来看是没有意义的并且影响效率上面的我给你去掉了
你这个程序莫名其妙么。既然后面显示的是 Label1.Caption:= ListView1.Items[ListView1.Selected.Index].Caption,那么变量就是ListView1.Selected.Index,和上面的for有什么关系。和i又有什么关系?你这个循环就是多余的。还有,你的报错的消息是什么也不截图来看看,怎么能准确知道到底是什么原因报错的呢。