Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi mehrere Markierungen in Listbox (https://www.delphipraxis.net/40788-mehrere-markierungen-listbox.html)

padavan 21. Feb 2005 06:07


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:
edit1.text := Listbox1.item[Listbox1.Itemindex];
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.

(klar das ich mehrere Einträge dann in ein array oder Memo schieben müsste)

Vielen Dank im Voraus.

scp 21. Feb 2005 06:39

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.

padavan 21. Feb 2005 07:54

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

Khabarakh 21. Feb 2005 13:07

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.

padavan 21. Feb 2005 15:21

Re: mehrere Markierungen in Listbox
 
Alles klar, vielen dank erstmal

sniper_w 21. Feb 2005 15:45

Re: mehrere Markierungen in Listbox
 
Zitat:

Und ich kann mir auch nicht vorstellen, dass man diese Vorgehensweise noch sehr beschleunigen könnte.
Und ob das möglich ist. Man muss nur gerade beim Selektieren merken (in einer Liste oder so), was man eigentlich ausgewählt hat, später liest man beim Bedarf diese Liste.

sniper_w 21. Feb 2005 15:59

Re: mehrere Markierungen in Listbox
 
Delphi-Quellcode:
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;
Oder du machst das ganze so...

Khabarakh 21. Feb 2005 18:09

Re: mehrere Markierungen in Listbox
 
Zitat:

Zitat von sniper_w
Zitat:

Und ich kann mir auch nicht vorstellen, dass man diese Vorgehensweise noch sehr beschleunigen könnte.
Und ob das möglich ist. Man muss nur gerade beim Selektieren merken (in einer Liste oder so), was man eigentlich ausgewählt hat, später liest man beim Bedarf diese Liste.

Ok, gewonnen :wink: . Ich habe nur daran gedacht, nach dem Selektieren aus den Daten der Listbox die Einträge zu erhalten. Aber auch das get ja wohl mit Messages schneller.

padavan 22. Feb 2005 06:39

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 05:28 Uhr.

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