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 Problem: Mittels ListBox Strings aus StringList löschen !? (https://www.delphipraxis.net/7090-problem-mittels-listbox-strings-aus-stringlist-loeschen.html)

daniel-volk 1. Aug 2003 12:56


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!

Christian Seehase 1. Aug 2003 12:59

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.

daniel-volk 1. Aug 2003 13:01

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.

Christian Seehase 1. Aug 2003 13:02

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 :?

daniel-volk 1. Aug 2003 13:11

Re: Problem: Mittels ListBox Strings aus StringList löschen
 
Macht nichts.

Vielleicht weiß es ja zufällig jemand anders :?:

Chewie 1. Aug 2003 13:16

Re: Problem: Mittels ListBox Strings aus StringList löschen
 
Zitat:

Zitat von daniel-volk
Aber wie bekomme ich den Index des letzten markierten Items? Ich find einfach diese Funktion nicht.

Das liegt wohl daran, dass es diese Funktiomn nicht gibt :wink:
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.

Alexander 1. Aug 2003 13:18

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:
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;
Das ganze musst du dann mit einer for-Schleife durchgehen, um die Strings aus Listbox und Array zu löschen..

Tpercon 1. Aug 2003 13:29

Re: Problem: Mittels ListBox Strings aus StringList löschen
 
Delphi-Quellcode:
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;
Ungetestet sollte aber so funktionieren.

Gruß

Alexander 1. Aug 2003 16:42

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...

daniel-volk 10. Aug 2003 16:53

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 05:38 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