检查listbox上是否有重复项,如有,则删掉前面一个,如:
dev001---这个要删掉
dev002
dev003
dev001
dev004---这个要删掉
devoo4

解决方案 »

  1.   

    for i := listbox.items.count - 1 down to 0 do
      if (listbox.items[i] = 'dev001') or (listbox.items[i] = 'dev001') then
        listbox.items[i].delete;
      

  2.   

    var
      i:Integer;
      iIndex:Array of Integer;
      s:TStringList;
    begin
      SetLength(iIndex,0);  s:=TStringList.Create;
      try
        for i:=0 to ListBox1.Count-1 do
        begin
          if s.IndexOf(ListBox1.Items[i])>=0 then
          begin
            SetLength(iIndex,Length(iIndex)+1);
            iIndex[High(iIndex)]:=i;
          end
          else begin
            s.Add(ListBox1.Items[i]);
          end;
        end;
      finally
        s.Free;
      end;  for i:=High(iIndex) DownTo 0 do
        ListBox1.Items.Delete(iIndex[i]);  iIndex:=nil;
    end;
      

  3.   

    可以先读取到一个临时Combox里面
    然后检查后复制过去
    比如
    var
      Combobox1: TCombobox;
      i,j,k :integer;-------
    Combobox1.items.clear;for i := 0 to ListBox1.items.count-1 do
      Combobox1.items.add(ListBox1.items.string[i]);listbox1.Items.Clear;for i :=0 to combobox1.Items.Count-1 do
    begin
      for j := 0 to listbox1.Items.Count-1 do
      begin
        if combobox1.Items[i]<>listbox1.items[j] then
          listbox1.Items.Add(combobox1.Items[j]);
      end;
    end;
      

  4.   

    上面的好象有点问题
    改正如下
    var
      Combobox1: TCombobox;
      i,j: integer;
      Str: string;-------
    Combobox1.items.clear;for i := 0 to ListBox1.items.count-1 do
      Combobox1.items.add(ListBox1.items.string[i]);listbox1.Items.Clear;for j:=0 to (Combobox1.Items.Count-1) do 
    begin
      Str := combobox1.items[j];
      if listbox1.indexof(Str)=-1 then
        listbox1.Items.Add(Str);
    end; 
      

  5.   

    看來只能用代碼了, 兩個for循環都用downto
      

  6.   

    用两个循环,倒着读就可以了
    procedure TForm1.Button1Click(Sender: TObject);
    var i,j:integer;
    begin
        ListBox2.Items.Clear;
        j:=ListBox1.Items.Count-1;
        for i:=0 to j do
        begin
            if ListBox2.Items.IndexOf(ListBox1.Items.Strings[j-i])>0 then continue
            else ListBox2.Items.Add(ListBox1.Items.Strings[j-i]);
        end;
        ListBox1.Items.Clear;
        j:=ListBox2.Items.Count-1;
        for i:=0 to j do ListBox1.Items.Add(ListBox2.Items.Strings[j-i]);
    end;
      

  7.   

    哦,说的有点问题,我要的还不单是上面条件,假如listbox上的数据如下
    dev001 x001   ---这个要删掉
    dev002 x001
    dev003 x002
    dev001 x007
    dev004 x009   ---这个要删掉
    devoo4 x002也就是说,listbox上的每一项,包括两段数据,一段为标识(如dev001等),一段为所属区(如x001等),中间以空格分开,如标识有重复.就删掉前一个
    上面标识为dev001和dev004有重复,就删掉前面的一个,如上面我标的,结果在listbox1上如下
    dev002 x001
    dev003 x002
    dev001 x007
    devoo4 x002
      

  8.   

    hellolongbin(一个人[忆我少年游 跨我青聪马 仗剑江湖行 白首为功名:
    不行