Listview - usuwanie identycznych wierszy

0

Witam.
Męczę od rana jedną procedurkę, ale nie mam pojęcia co z nią zrobić, aby działała poprawnie.

Mam w Listview (z 4 kolumnami) jakąś ilość wierszy.
Niektóre wiersze są identyczne i chcę usunąć te wiersze aby został tylko 1 z tych powtarzających się. Czyli chcę usunąć duplikaty.

Na Listboxie czy Comboboxie (tam gdzie nie ma kolumn) umiem to zrobić, ale w Listview z kolumnami już nie potrafię :( Może ktos poprawić ten kodzik?
Program się nie kompiluje.

  var
  NewList: TStringList;
  Idx: Integer;
 begin
        NewList := TStringList.Create;
    try
        for Idx := 0 to Listview1.Items.Count -1 do
            if (NewList.IndexOf(Listview1.Items[Idx]) = -1) and
               (Listview1.Items[Idx] <> '')
            then NewList.Add(Listview1.Items[Idx]);
        Listview1.Items.Text := NewList.Text;
    finally
        NewList.Free;
end; 
 end;
0
procedure TForm1.Button1Click(Sender: TObject);
  var
    i,j,k:integer;
    buf,buf2:string;
begin
  for i:=ListView1.Items.Count-1 downto 0 do
  begin
    for j:=0 to i-1 do
    begin
      buf := '';
      buf2 := '';


      for k:=0 to Listview1.Items[i].SubItems.Count-1 do
        buf:=buf+Listview1.Items[i].SubItems[k]+' ';
      buf:=buf+ListView1.Items[i].Caption+' ';
      buf:=trim(buf);

      for k:=0 to Listview1.Items[j].SubItems.Count-1 do
        buf2:=buf2+Listview1.Items[j].SubItems[k]+' ';
      buf2:=buf2+ListView1.Items[j].Caption+' ';
      buf2:=trim(buf2);

      //ShowMessage('Buf="'+buf+'"'+#13#10+'Buf2="'+buf2+'"');

      if UpperCase(buf)=UpperCase(buf2) then ListView1.Items.Delete(j);
    end;
  end;
end;

oczywiscie nasz listview to listview1

zamiencie nazwy jesli trzeba

1 użytkowników online, w tym zalogowanych: 0, gości: 1