Moin Leute,
hat jemmand ne Idee wie man ´ne Listview von doppelten Einträgen befreien könnte?
Wobei nur die in der ersten Spalte relevant sind listivew.items[].caption, nicht die Subitems,
wohl aber sind oder könnten welche vorhanden sein. Und genau da liegt das Problem, denn evtl. vorhandene Subitems werden nicht mehr zurückgeschrieben.
Hab´s mal so versucht
Delphi-Quellcode:
procedure TForm1.Doppelkiller(Listview: TListview);
var
i: integer;
lTempList: TStringList;
begin
screen.Cursor := crhourglass;
if (Listview <> nil) then begin
lTempList := TStringList.Create;
try
Listview.Items.BeginUpdate;
try
for i := 0 to Listview.Items.Count - 1 do
if (lTempList.IndexOf(Listview.Items[i].Caption) = -1) then //IndexOf liefert -1 wenn nicht gefunden
lTempList.Add(Listview.Items[i].Caption);
Listview.Items.Clear;
for i := 0 to lTempList.Count - 1 do begin
listview.Items.Add;
Listview.Items[i].Caption := lTempList[i];
end;
finally
Listview.Items.EndUpdate;
end;
finally
lTempList.Free;
screen.Cursor := crdefault;
end;
end;
end;
//aufruf
Doppelkiller(Listview);
Hab versucht den Code entsprechend zu ergänzen, wollte aber einfach nicht gelingen.
Nachdem ich dann auch auf andere Art und Weise (zwei gegenläufige Schleifen) nicht weiterkam, nerve ich euch jetzt damit...
Danke schonmal
(PS: der code stammt im Original von hier, allerdings für Listbox1)