with cxListView_NotSelectPhones do
  begin
    for I := 0 to items.count-1 do
    begin
      if Items[I].Selected then
      begin
        AddNewPhoneListItem(cxListView_SelectPhones, trim(Items[I].Caption),trim(Items[I].SubItems[0]));
        Items[I].Delete;
      end;
    end;  end;

解决方案 »

  1.   

    删了一行就少了一行,不能这样循环的。
    1
    2
    3选中
    4
    5
    删了后4九成了Item[2]了,5成Item[3],Item[4]????出错了吧?
      

  2.   

    倒着来,用for I := items.count-1 downto 0 do
    就不出错了
      

  3.   

    with cxListView_NotSelectPhones do
    begin
      while items.count>0 do
      begin
        AddNewPhoneListItem(cxListView_SelectPhones, trim(Items[I].Caption),trim(Items[I].SubItems[0]));
        Items[I].Delete;
      end;
    end;
    这样试试,简单有效
      

  4.   

    修正一下
    with cxListView_NotSelectPhones do
    begin
      while items.count>0 do
      begin
        AddNewPhoneListItem(cxListView_SelectPhones, trim(Items[I].Caption),trim(Items[I].SubItems[0]));
        Items.Delete;
      end;
    end;
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    var I: integer;
    begin
      for I := 0 to listview1.SelCount - 1 do
      begin
          listview1.Selected.Delete;
      end;
    end;
      

  6.   

    with cxListView_NotSelectPhones do
    begin
      while items.count>0 do
      begin
        Items.Delete;
      end;
    end;
      

  7.   

    同意 ttzzj(标识符) ,循环应用downto方式
      

  8.   

    还可以考虑用双层循环,只是效率低了些!
    即里层循环用于删除,删除完了后再break出来查询一下Items的数量!