Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi 3e Spalte Listview auf doppelte Eintraege kontrollieren? (https://www.delphipraxis.net/58315-3e-spalte-listview-auf-doppelte-eintraege-kontrollieren.html)

lucius 5. Dez 2005 14:21


3e Spalte Listview auf doppelte Eintraege kontrollieren?
 
Hallo Leute,

Ich moechte von meiner Listview die 3e Spalte kontrollieren auf doppelte Eintraege, hab auch schon etwas Code aber ich kom nicht weiter.
Delphi-Quellcode:
procedure TMain.DoppeltClick(Sender: TObject);
var
k : integer;
begin
for k := listview.Items.Count -1 downto 0 do
      begin
          if listview.Items.IndexOf(listview.Items.Item[k].SubItems[2]) <> k then
          listview.Items[k].Delete;
      end;
end;
Kann mir jrmand bitte helfen?
Besten Dank im voraus.

MFG, Lucius.

Bernhard Geyer 5. Dez 2005 14:24

Re: 3e Spalte Listview auf doppelte Eintraege kontrollieren?
 
Schmeiß doch alle Werte in eine TStringList wobei du Duplicates auf dupError setzt.
Dann kommt schon eine Exception wenn doppelter Eintrag gefunden wird.

lucius 5. Dez 2005 14:33

Re: 3e Spalte Listview auf doppelte Eintraege kontrollieren?
 
Hi Bernhard,

Ich wollte das aber mal ohne TStringList versuchen.

Bernhard Geyer 5. Dez 2005 14:34

Re: 3e Spalte Listview auf doppelte Eintraege kontrollieren?
 
Zitat:

Zitat von lucius
Hi Bernhard,

Ich wollte das aber mal ohne TStringList versuchen.

na wenn's sein Muss.

Zwei verschachtelte Schleifen wobei die innere ab dem Item startet wo die äußere aktuell ist und anschließend
vergleich der beiden ausgewählten Einträge.

lucius 5. Dez 2005 14:55

Re: 3e Spalte Listview auf doppelte Eintraege kontrollieren?
 
Habe jetzt folgenden Code aber der klappt noch nicht so ganz.

Delphi-Quellcode:
procedure TMain.DoppeltClick(Sender: TObject);
var
D1, D2: integer;
begin
while D1 < listview.Items.Count do
begin
  for D2 := (listview.Items.Count - 1) downto 0 do
  begin
    if (listview.Items.item[D1].SubItems[2] = listview.Items.item[D2].SubItems[2]) then
      listview.Items[D2].Delete;
  end;
  inc(D1);
end;
end;
Gruss Lucius.

Bernhard Geyer 5. Dez 2005 14:57

Re: 3e Spalte Listview auf doppelte Eintraege kontrollieren?
 
Probier mal

Delphi-Quellcode:
for D2 := (listview.Items.Count - 1) downto D1+1 do

lucius 5. Dez 2005 15:00

Re: 3e Spalte Listview auf doppelte Eintraege kontrollieren?
 
Nee klappt nicht Bernard.

Bernhard Geyer 5. Dez 2005 15:03

Re: 3e Spalte Listview auf doppelte Eintraege kontrollieren?
 
Was passiert denn?

lucius 5. Dez 2005 15:15

Re: 3e Spalte Listview auf doppelte Eintraege kontrollieren?
 
Es passiert gar nichts bei dein Code Bernard, wenn ich meinen nehme loescht er wohl Items aber viel zu viele und danach gibts ne Exception.

Bernhard Geyer 5. Dez 2005 15:25

Re: 3e Spalte Listview auf doppelte Eintraege kontrollieren?
 
Zitat:

Zitat von lucius
Es passiert gar nichts bei dein Code Bernard, wenn ich meinen nehme loescht er wohl Items aber viel zu viele und danach gibts ne Exception.

Wenn Du mittels
Delphi-Quellcode:
for D2 := (listview.Items.Count - 1) downto 0 do
durchläufst hat D2 irgendwann den Werte von D1 und damit wird das gerade aktuelle Item auch gelöscht, da der Vergleich immer True ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:33 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz