![]() |
Problem: Mittels ListBox Strings aus StringList löschen !?
Hi,
wer kann mir bei folgendem Problem helfen? Ich habe in einer StringList untereinander eine Menge Dateipfade stehen. Die reinen Dateinamen werden dabei vom Programm für den Benutzer noch einmal in eine Listbox geschrieben. Die Stringlist wird also programmintern verwendet, während die Listbox als Userinterface dient. Der User soll jetzt in der ListBox (Multiselect = true) verschiedene Items auswählen und auf "löschen" klicken können. Dabei sollen in der Stringlist die entsprechenden Strings (Index von ListBox Item = Index von StringList String) gelöscht werden. (Es sollen also die gewählten Dateinamen aus der StringList entfernt werden). Wie mache ich das am besten? Ich hab schon mit ListBox1.SelCount und ListBox1.ItemIndex gearbeitet (mit for-Schleife), das führt aber oft zum Löschen falscher Strings. Danke für eure Hilfe! |
Re: Problem: Mittels ListBox Strings aus StringList löschen
Moin Daniel,
Du müsstest die Daten von hinten nach vorne löschen, also vom höchsten Index zum niedrigsten, da sich nach jedem Löschen der Index der Nachfolgenden Einträge verschiebt. |
Re: Problem: Mittels ListBox Strings aus StringList löschen
Daran hab ich auch schon gedacht. Aber wie bekomme ich den Index des letzten markierten Items? Ich find einfach diese Funktion nicht.
Danke. |
Re: Problem: Mittels ListBox Strings aus StringList löschen
Moin Daniel,
aus dem Kopf weiss ich das leider auch nicht, und nachschauen kann ich im Moment nicht :? |
Re: Problem: Mittels ListBox Strings aus StringList löschen
Macht nichts.
Vielleicht weiß es ja zufällig jemand anders :?: |
Re: Problem: Mittels ListBox Strings aus StringList löschen
Zitat:
Du musst da ein bisschen selbst Hand anlegen. Mit ListBox.Selected[Index] bekommst du einen boolschen Wert, der angibt, ob entsprechendes Element markiert ist oder nicht. Es sind genau ListBox.SelCount Elemente markiert. |
Re: Problem: Mittels ListBox Strings aus StringList löschen
versuch mal so die Strings aus dem Array zu löschen (Array muss global sein):
Delphi-Quellcode:
Das ganze musst du dann mit einer for-Schleife durchgehen, um die Strings aus Listbox und Array zu löschen..
procedure Tform1.delete_row(row: integer);
var i: integer; begin for i := row to High(deinarray)-1 do deinarray[i] := deinarray[i+1]; SetLength(deinarray, Length(deinarray) - 1); end; |
Re: Problem: Mittels ListBox Strings aus StringList löschen
Delphi-Quellcode:
Ungetestet sollte aber so funktionieren.
for i := ListBox1.Items.Count - 1 downto 0 do begin
if ListBox1.Selected[i] then begin deineStringList.Delete(i); ListBox1.Items[i].Delete; end; end; Gruß |
Re: Problem: Mittels ListBox Strings aus StringList löschen
so'n mist aber auch, da war ich wohl nicht ganz wach...:oops: :oops
ist natürlich Quatsch was ich oben geschrieben habe, du willst es ja aus einer Stringlist löschen und nicht aus einem Array... |
Re: Problem: Mittels ListBox Strings aus StringList löschen
Danke für eure Hilfe, hab es inzwischen auch geschafft.
Ein Problem hab ich aber immer noch: Ich möchte gerne, dass ich in der ListBox (Multiselect an) auch Items in ihrer Position verschieben kann. Das soll dann natürlich auch in der Stringlist passieren. Wo liegt eigentlich der Vorteil, wenn ich ein array verwende? Danke. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 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