i:=lsvUser.Selected.Index;
    ShowMessage(lsvUser.Items[i].SubItems.Strings[0]);用错误跟踪出来说是参数不正确,87号但最后能得到我所需要的值,是怎么回事,有人知道吗

解决方案 »

  1.   

    没看出有啥问题,哪一句报错,ShowMessage?
      

  2.   

    前面加一句,这样写:
    if LsvUser.selected = nil then Exit;
    I := LsvUser.selected.Index;
    ShowMessage(lsvUser.Items[i].SubItems.Strings[0]); 
    先判断一下是否选中,如果没选中的话,你那个LsvUser.Items[0].SubItems都是空的,你取.Strings[0]当然要报错了。
      

  3.   


    我是在它的SelectItem事件里写的以下代码,如果没选中的话,是不会触发我写的代码的
      

  4.   

    i:=lsvUser.Selected.Index; 
    ShowMessage(lsvUser.Items[i].SubItems.Strings[0]);是否SubItems没有添加,先判断一下if lsvUser.Items[i].SubItems.Count > 0
      

  5.   


    SubItems在FORM_LOAD里面就加了的。
      

  6.   

    我重新试了一下,就仅仅是
    在窗体上放一个LISTVIEW 和一个LABEL然后向LISTVIEW加入如下数据1 11
    2 22
    3 33然后
    procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
      Selected: Boolean);
    begin
      Label1.Caption:=ListView1.Items[ListView1.Selected.Index].SubItems.Strings[0];
    end;
    还是会弹一个错。然后LABEL1里面显示正确的值,为什么会弹错误