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; 展开
 我来答
百度网友bc2d03b71
2011-11-29 · 超过19用户采纳过TA的回答
知道答主
回答量:62
采纳率:100%
帮助的人:48.4万
展开全部
//你注意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;

你那个循环从你发出的代码上来看是没有意义的并且影响效率上面的我给你去掉了
z5597972
2011-11-26 · 超过17用户采纳过TA的回答
知道答主
回答量:93
采纳率:0%
帮助的人:65.8万
展开全部
你这个程序莫名其妙么。既然后面显示的是 Label1.Caption:= ListView1.Items[ListView1.Selected.Index].Caption,那么变量就是ListView1.Selected.Index,和上面的for有什么关系。和i又有什么关系?你这个循环就是多余的。还有,你的报错的消息是什么也不截图来看看,怎么能准确知道到底是什么原因报错的呢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式