AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Listview vergleichen und Löschen Problem

Ein Thema von Bernd29bln · begonnen am 27. Jul 2009 · letzter Beitrag vom 28. Jul 2009
Antwort Antwort
Bernd29bln

Registriert seit: 28. Feb 2005
Ort: Berlin
281 Beiträge
 
Delphi 7 Professional
 
#1

Listview vergleichen und Löschen Problem

  Alt 27. Jul 2009, 18:28
Hallo,

Ich habe 2 Listboxen.

In der Listview1 stehen z.B:

Thomas
Susi
Marc

In der Listview2 stehen auch Nahmen.

Mein Problem liegt darin, wenn ich nun in Listview1 mehrere verschiedene Namen Lösche, dann sollen die auch in der Listview2 gelöscht werden.

ich hab es schon mit dem Code Versucht:
Delphi-Quellcode:
   for il:= Listview1.Items.Count -1 downto 0 do
     begin
      if Listview1.Items[il].Checked then
       begin
        Listview1.Items.Delete(il);
        if Listview2.Items.IndexOf(Listview1.Items[il]) > 0 then
       begin
         Listview2.Items.Delete(il);
       end;
aber ich komme nicht weiter.

Hat jemand eine Idee?

Gruß Bernd
Bernd
Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen.
Sokrates
  Mit Zitat antworten Zitat
IceBube

Registriert seit: 9. Jul 2008
178 Beiträge
 
#2

Re: Listview vergleichen und Löschen Problem

  Alt 27. Jul 2009, 18:41
Ganz klar . Du solltest das Item von ListView1 erst nach der Abfrage von ListView2 löschen!

Also...

Delphi-Quellcode:
for iL = ListView1.Items.Count - 1 downTo 0 do
begin
 //Markiert?
 if ListView1.Items[iL].Checked then
 begin
 //Abfrage...nach Eintrag..wenn gefunden dann löschen..
 if ListView2.Items.IndexOf(ListView1.Items[iL]) <> -1 then
 ListView2.Items.Delete(ListView2.Items.IndexOf(ListView1.Items[iL]));

 //Löschen vom Eintrag in ListView1
 ListView1.Items.Delete(iL);
 end;
end;
lg

Edit:
Code ausgebessert bei .Delete(iL)
  Mit Zitat antworten Zitat
Bernd29bln

Registriert seit: 28. Feb 2005
Ort: Berlin
281 Beiträge
 
Delphi 7 Professional
 
#3

Re: Listview vergleichen und Löschen Problem

  Alt 27. Jul 2009, 19:09
Hi IceBube,

Danke für den anstoß klappt aber leider nicht.

Ich muss dazu sagen das in Listview2 die Namen doppelt und dreifach drin stehen wenn ich alse in listview1 nur Thomas und Susi gechecket habe, soll auch nur in Listview2 1x Thomas und 1x Susi gelöscht werden.

Gibs dafür ne Lösung?

Gruß Bernd
Bernd
Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen.
Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

Re: Listview vergleichen und Löschen Problem

  Alt 27. Jul 2009, 20:02
Und so?
Delphi-Quellcode:
for il:= Listview1.Items.Count -1 downto 0 do
  begin
    if Listview1.Items[il].Checked then
      begin
        FoundAt := Listview2.Items.IndexOf(Listview1.Items[il]);
        if FoundAt > -1 then
          Listview2.Items.Delete(FoundAt);
        Listview1.Items.Delete(il);
      end;
  end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Bernd29bln

Registriert seit: 28. Feb 2005
Ort: Berlin
281 Beiträge
 
Delphi 7 Professional
 
#5

Re: Listview vergleichen und Löschen Problem

  Alt 28. Jul 2009, 11:14
hallo,

@DeddyH Der Code ist Prima vielen Dank.

Ich hatte aber schon ne andere Lösung. Ich hab dem Namen noch eine ID verpasst und somit einmalig gemacht.

Welche der Lösungen ist besser oder schneller?

Das ist der jetzige Code:
Delphi-Quellcode:
        if Listview1.Items[il].SubItems[4] = Listview3.Items[iil].SubItems[1] then
          begin
           ListView3.Items.Delete(iiL);
           ListView1.Items.Delete(iL);
          end;
Gruß Bernd
Bernd
Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen.
Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

Re: Listview vergleichen und Löschen Problem

  Alt 28. Jul 2009, 11:19
Da Du den Code "außen rum" ja unterschlägst, mutmaße ich mal: kann es sein, dass das Item aus der 1. ListView nur dann gelöscht wird, wenn es eine Entsprechung in der 2. gibt? Ist das so beabsichtigt?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Bernd29bln

Registriert seit: 28. Feb 2005
Ort: Berlin
281 Beiträge
 
Delphi 7 Professional
 
#7

Re: Listview vergleichen und Löschen Problem

  Alt 28. Jul 2009, 11:26
Hi @DeddyH,

Ja aber vom prinzip her wäre es egal. Ich denke das ich auf deinen Code zurück greife, du nur eine Schleife verwendes. Ich dagegen muss 2 Schleifen ein Bauen.

Die Anzahl der Namen in Listview2 entspricht alle namen zusammen gefasst aus allen anderen Listen.

Wenn ich also Liste1 oder Liste3 öffne und dort einen Namen Lösche soll dieser auch in der Gesamtliste gelöscht werden.

Ich denke das deine Lösung die bessere wäre. Oder?


Gruß Bernd
Bernd
Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen.
Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#8

Re: Listview vergleichen und Löschen Problem

  Alt 28. Jul 2009, 11:36
Meine Lösung beruht auf der Überlegung: gehe in der 1. Listview alle Items durch. Ist das aktuelle angehakt, schaue nach einer Entsprechung in der 2. Listview und lösche diese ggf. Anschließend lösche auf jeden Fall das Item der 1. Listview. Ich denke mal, das sollte so richtig sein.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:05 Uhr.
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