// Hiermit kann man doppelte Einträge in TListView entfernen.


// Getestet mit D4 unter WinME

type 
  loeschart = 
    (Caption_gleich, Icon_gleich, Beides_gleich, EinsVonBeiden_gleich); 
 
function DoppelteItemsWeg(lv: TListView; art: loeschart): integer; 
var x, y: integer; 
  function Icons: boolean; 
  begin 
    result := lv.items[x].imageindex = lv.items[y].imageindex; 
  end; 
  function Captions: boolean; 
  begin 
    result := lv.items[x].caption = lv.items[y].caption; 
  end; 
  procedure weg; 
  begin 
    lv.items.delete(y); 
    inc(result); 
  end; 
begin 
  x := 0; 
  result := x; 
  while x < lv.items.count - 1 do begin 
    y := x + 1; 
    while y < lv.items.count do 
      if (ord(art) in [1, 3]) and Icons then weg else 
        if (ord(art) in [0, 3]) and Captions then weg else 
          if (ord(art) = 2) and Captions and Icons then weg 
          else inc(y); 
    inc(x); 
  end; 
  lv.arrange(arDefault); 
end; 
 
// Beispielaufruf 
 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  showmessage('Es wurde(n) ' + inttostr( 
    DoppelteItemsWeg(ListView1, Caption_gleich)) + 
    ' Item(s) gelöscht.'); 
end; 


 

Zugriffe seit 6.9.2001 auf Delphi-Ecke