Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Mehrere Listbox Einträge löschen (https://www.delphipraxis.net/87734-mehrere-listbox-eintraege-loeschen.html)

ebber 5. Mär 2007 12:50


Mehrere Listbox Einträge löschen
 
Hallo

ich habe jetzt dieses:

Delphi-Quellcode:

Listbox1.Items.Delete(Listbox1.ItemIndex);
Wie kann ich das bei Multiselect mit mehreren Einträgen machen ?

MfG

uwewo 5. Mär 2007 12:55

Re: Mehrere Listbox Einträge löschen
 
Delphi-Quellcode:
ListBox1.SelCount
liefert Dir die Anzahl der markierten Elemente.

Einfach eine Schleife programmieren

Delphi-Quellcode:
For i := 0 to ListBox1.SelCount-1 do

Pfoto 5. Mär 2007 13:11

Re: Mehrere Listbox Einträge löschen
 
Hi!

ich würde es so machen:

Delphi-Quellcode:
var
  i: integer;
begin
  i:= 0;
  repeat
    If Listbox1.Selected[i] then
      Listbox1.Items.Delete(i) else
      inc(i);
  until (i = Listbox1.items.count);

Gruß
Pfoto

Matze 5. Mär 2007 13:12

Re: Mehrere Listbox Einträge löschen
 
Die Codevervollständigung hilft häufig weiter ;)

Delphi-Quellcode:
ListBox1.DeleteSelected;

mkinzler 5. Mär 2007 13:14

Re: Mehrere Listbox Einträge löschen
 
@Pfoto: Beim Löschen, von oben anfangen!

uwewo 5. Mär 2007 13:15

Re: Mehrere Listbox Einträge löschen
 
Zitat:

Zitat von Pfoto
Hi!

ich würde es so machen:

Delphi-Quellcode:
var
  i: integer;
begin
  i:= 0;
  repeat
    If Listbox1.Selected[i] then
      Listbox1.Items.Delete(i) else
      inc(i);
  until (i = Listbox1.items.count);

Gruß
Pfoto

So würde es auch gehen, allerding möchte er ja nicht alle löschen

Delphi-Quellcode:
until (i = Listbox1.SelCount-1

IngoD7 5. Mär 2007 13:56

Re: Mehrere Listbox Einträge löschen
 
Zitat:

Zitat von uwewo
Zitat:

Zitat von Pfoto
Hi!

ich würde es so machen:

Delphi-Quellcode:
var
  i: integer;
begin
  i:= 0;
  repeat
    If Listbox1.Selected[i] then
      Listbox1.Items.Delete(i) else
      inc(i);
  until (i = Listbox1.items.count);

Gruß
Pfoto

So würde es auch gehen, allerding möchte er ja nicht alle löschen

Delphi-Quellcode:
until (i = Listbox1.SelCount-1

@uwewo
Du bist auf dem falschen Dampfer. Sieh doch mal in der Hilfe nach, was TListBox.Selected[] genau ist.

Abgesehen davon müsste die until-Anweisung wie folgt lauten, um nicht auf die Nase zu fallen, wenn der letzte Listeneintrag auch markiert war:
Delphi-Quellcode:
until i >= Listbox1.Count;
Abgesehen davon sollte man - wie hier schon erwähnt wurde - von oben löschen, also mit dem höchsten Index anfangen und runterzählen. Dann verhindert man zuverlässig die Möglichkeit, dass man sich "den Boden unter den Füßen weglöscht". ;)

Abgesehen davon gibt es - wie hier auch schon erwähnt wurde - ein TListBox.DeleteSelected.

Abgesehen davon .. ach nö, das reicht nun. :wink:

uwewo 5. Mär 2007 14:10

Re: Mehrere Listbox Einträge löschen
 
@Ingo, natürlich hast Du Recht, hätte mir eigentlich auffallen müssen :wall:

Delphi-Quellcode:
var i: integer;
begin
  i := Listbox1.Items.Count-1;
   repeat
    If Listbox1.Selected[i] then
      Listbox1.Items.Delete(i);
      dec(i);
  until (i < 0);
Vielleicht können wir uns darauf einigen :lol:

[Edit]
Delphi-Quellcode:
TListBox.DeleteSelected
gibt es nicht in allen Delphi Versionen.
[/Edit]

Khabarakh 5. Mär 2007 14:22

Re: Mehrere Listbox Einträge löschen
 
Was habt ihr denn gegen den armen Pfoto, sein Code ist vollkommen richtig - den einzigen kleinen Fehler habt ihr aber übersehen: EListError bei leeren Items.

Noch weniger zu sagen gibts natürlich gegen Matzes Methode ;) .

ebber 5. Mär 2007 15:03

Re: Mehrere Listbox Einträge löschen
 
Danke für eure Bemühungen. :thumb:

Da

Delphi-Quellcode:
TListBox.DeleteSelected;
bei mir geht denke ich mal es ist das einfachste.

MfG


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:36 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