![]() |
mehrere Markierungen in Listbox
Hallo Leute,
wie bekommt man in einer Listbox die Strings der markierten Zeilen zurückgeliefert? Wenn man nur eine Zeile markiert hat, kann man ja den String etwa so in ein edit schieben wenn ich mich nicht irre
Delphi-Quellcode:
Jetzt habe ich aber so gar keine Idee wie ich das anstelle, wenn mehrere Zeilen markíert sind, und schlimmer noch, wenn diese nicht hintereinander also an einem Stück markiert sind.
edit1.text := Listbox1.item[Listbox1.Itemindex];
(klar das ich mehrere Einträge dann in ein array oder Memo schieben müsste) Vielen Dank im Voraus. |
Re: mehrere Markierungen in Listbox
Statt ListBox1.Items kannst du mit ListBox1.Selected z.B. in einer for-Schleife jedes einzelne Item prüfen, ob es ausgewählt wurde.
Mehr dazu in der Delphi-Hilfe. |
Re: mehrere Markierungen in Listbox
Vielen Dank erstmal für die schnelle Antwort.
Aber ist diese Methode nicht sehr rechenintensiv für den Rechner wenn die Listbox viele Einträge enthält? Falls es so ist, es aber keine andere Methode gibt, dann sei´s drum... |
Re: mehrere Markierungen in Listbox
Ich denke, da brauchst du schon sehr viele Einträge, um etwas davon zu bemerken. Und ich kann mir auch nicht vorstellen, dass man diese Vorgehensweise noch sehr beschleunigen könnte.
|
Re: mehrere Markierungen in Listbox
Alles klar, vielen dank erstmal
|
Re: mehrere Markierungen in Listbox
Zitat:
|
Re: mehrere Markierungen in Listbox
Delphi-Quellcode:
Oder du machst das ganze so...
procedure TForm1.FormCreate(Sender: TObject);
var a:integer; begin randomize(); for a:=0 to 20 do ListBox1.Items.Add(inttostr(random(10000))); end; procedure TForm1.ListBox1Click(Sender: TObject); var a,n,n1:integer; Indexes : array of Integer; begin n := SendMessage(ListBox1.Handle,LB_GETSELCOUNT,0,0); SetLength(Indexes,n); ListBox2.Clear; n1 := SendMessage(ListBox1.Handle,LB_GETSELITEMS,n,Integer(@Indexes[0])); if n1<>n then Application.MessageBox('n1 = n muss sein!!!','Fehler'); for a:=0 to n1-1 do ListBox2.Items.Add( ListBox1.Items.Strings[Indexes[a]]); SetLength(Indexes,0); end; |
Re: mehrere Markierungen in Listbox
Zitat:
|
Re: mehrere Markierungen in Listbox
Also ich habe den ersten Vorschlag jetzt in meinem Programm umgesetzt. Wie könnte es anders sein, es ist natürlich die Playlist eines MP3-Players, auf jeden Fall sind bei knapp 2000 Einträgen in der Tat eigentlich kein merklicher zeitlicher Verzug erkennbar.
Vielen Dank! :cheers: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 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