在 sSkinListView1 的 OnSelectItem 事件中 
我这样写 bsSkinEdit2.Text:= bsSkinListView1.Selected.SubItems.Strings[0]; 取得选中行第0列的值
程序运行后 可以选择一次 得到正确结果 但是点第二个时候 程序会崩溃procedure TForm2.bsSkinListView1SelectItem(Sender: TObject;
  Item: TListItem; Selected: Boolean);
begin
if bsSkinListView1.Selected <> nil then
bsSkinEdit1.Text:=bsSkinListView1.Selected.Caption;
bsSkinEdit2.Text:= bsSkinListView1.Selected.SubItems.Strings[0];
end;不知道是什么问题! 报错是 Access violation at address 0050CE7E in module 'project1.exe'. read of address 00000008' Process stopped Use Step or Run to continue.

解决方案 »

  1.   

    if bsSkinListView1.Selected <> nil then
    begin
      bsSkinEdit1.Text:=bsSkinListView1.Selected.Caption;
      bsSkinEdit2.Text:= bsSkinListView1.Selected.SubItems.Strings[0];
    end;
      

  2.   

    procedure TForm2.bsSkinListView1SelectItem(Sender: TObject;
      Item: TListItem; Selected: Boolean);
    begin
      if bsSkinListView1.Selected <> nil then
      begin
        bsSkinEdit1.Text:=bsSkinListView1.Selected.Caption;
        bsSkinEdit2.Text:= bsSkinListView1.Selected.SubItems.Strings[0];
      end;
    end;
      

  3.   

    if bsSkinListView1.Selected <> nil then 
    begin 
      bsSkinEdit1.Text:=bsSkinListView1.Selected.Caption; 
      bsSkinEdit2.Text:= bsSkinListView1.Selected.SubItems[0]; // 最好判断一下COUNT>0?
    end; 
      

  4.   

    我看了半天,终于发现楼上与楼下的区别,是少了个begin end呵呵,让我好找啊