![]() |
Mehrere Listbox Einträge löschen
Hallo
ich habe jetzt dieses:
Delphi-Quellcode:
Wie kann ich das bei Multiselect mit mehreren Einträgen machen ?Listbox1.Items.Delete(Listbox1.ItemIndex); MfG |
Re: Mehrere Listbox Einträge löschen
Delphi-Quellcode:
liefert Dir die Anzahl der markierten Elemente.
ListBox1.SelCount
Einfach eine Schleife programmieren
Delphi-Quellcode:
For i := 0 to ListBox1.SelCount-1 do
|
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 |
Re: Mehrere Listbox Einträge löschen
Die Codevervollständigung hilft häufig weiter ;)
Delphi-Quellcode:
ListBox1.DeleteSelected;
|
Re: Mehrere Listbox Einträge löschen
@Pfoto: Beim Löschen, von oben anfangen!
|
Re: Mehrere Listbox Einträge löschen
Zitat:
Delphi-Quellcode:
until (i = Listbox1.SelCount-1
|
Re: Mehrere Listbox Einträge löschen
Zitat:
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:
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". ;)
until i >= Listbox1.Count;
Abgesehen davon gibt es - wie hier auch schon erwähnt wurde - ein TListBox.DeleteSelected. Abgesehen davon .. ach nö, das reicht nun. :wink: |
Re: Mehrere Listbox Einträge löschen
@Ingo, natürlich hast Du Recht, hätte mir eigentlich auffallen müssen :wall:
Delphi-Quellcode:
Vielleicht können wir uns darauf einigen :lol:
var i: integer;
begin i := Listbox1.Items.Count-1; repeat If Listbox1.Selected[i] then Listbox1.Items.Delete(i); dec(i); until (i < 0); [Edit]
Delphi-Quellcode:
gibt es nicht in allen Delphi Versionen.
TListBox.DeleteSelected
[/Edit] |
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 ;) . |
Re: Mehrere Listbox Einträge löschen
Danke für eure Bemühungen. :thumb:
Da
Delphi-Quellcode:
bei mir geht denke ich mal es ist das einfachste.
TListBox.DeleteSelected;
MfG |
Re: Mehrere Listbox Einträge löschen
Zitat:
Wenn das letzte Element der Liste selektiert ist und gelöscht wird, dann ist in seinem Code danach i größer als ListBox.Items.Count. Dann hält die Schleife nicht an und es scheppert beim nächsten Schleifendurchlauf. :!: |
Re: Mehrere Listbox Einträge löschen
Hallo Ingo,
vielleicht hat dich nur die unglückliche Formatierung des Quelltextes irritiert. Nach dem Löschen des Elements wird der Schleifenzähler nicht erhöht und die Schleife damit aufgrund der erfüllten Abbruchbedingung beendet. Gruß Hawkeye |
Re: Mehrere Listbox Einträge löschen
Zitat:
aber egal, Hauptsache, das Problem ist gelöst. Gruß Pfoto |
Re: Mehrere Listbox Einträge löschen
Zitat:
Zitat:
Zitat:
Zitat:
Ihr habt Recht. Ich nehme alles zurück und behaupte das Gegenteil. :wall: Sorry, Jungs! Zitat:
//Edit: Khabarakhs Zitat vervollständigt (Stichwort: Fehler bei leerer Liste), um nicht noch mehr Verwirrung zu stiften. |
Re: Mehrere Listbox Einträge löschen
Nunja, Pfotos Code ist solange richtig, solange es mindestens ein Item gibt...
Bei einer leeren Liste fällt er mit der Funktion auf die Nase... Performater und schöner wär es so:
Delphi-Quellcode:
Weil, nur eine einzige Abfrage in der Methode durchgeführt wird und nicht 2 wie bei
Var i: Integer;
For i := Listbox1.Items.Count - 1 Downto 0 Do Begin If Listbox1.Selected[ i ] Then Listbox1.Items.Delete( i ); End; Pfoto... Edit: Und weil diese auch bei leeren Listen funktioniert... Viel Spass noch :zwinker: Bye Christian |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz