Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Listbox durchsuchen (https://www.delphipraxis.net/64278-listbox-durchsuchen.html)

CorsaGsi16v 1. Mär 2006 17:34


Listbox durchsuchen
 
Hallo,
wie ich die Listbox durchsuchen kann weiß ich:

Delphi-Quellcode:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var i, subStrPos : Integer;
begin
  i := 0; subStrPos := 0;
  while (i < ListBox2.Items.Count) and (subStrPos = 0) do
  begin
    subStrPos := Pos(Edit7.Text,ListBox2.Items[i]);
    if suBstrPos > 0 then
      ListBox2.ItemIndex := i;
    inc(i);
  end;

end;
Nur so springt er nur zum erstgefundenen Ergebnis wie kann ich durch einen weiteren Klick das nächste Object anzeigen lassen(da mehrere gleiche Elemente in der Listbox sind)?

Und wenn das letzte Objekt gefunden ist soll er wieder oben anfangen!?

MfG
Christian

Vielen Dank im vorraus!

Ralf Kaiser 1. Mär 2006 17:39

Re: Listbox durchsuchen
 
Zitat:

Zitat von CorsaGsi16v
Hallo,
Nur so springt er nur zum erstgefundenen Ergebnis wie kann ich durch einen weiteren Klick das nächste Object anzeigen lassen(da mehrere gleiche Elemente in der Listbox sind)?

Und wenn das letzte Objekt gefunden ist soll er wieder oben anfangen!?

Hi,

fang bei der Suche nicht bei 0 an, sodern bei ItemIndex + 1. (du kannst dir natürlich auch die letzte Fundstelle in einer Variablen merken und dann bei letzteFundstelle+1 anfangen zu suchen)

Wenn die Suche bei Items.Count ohne Ergebnis angekommen ist, setze ItemIndex (oder die Variable) wieder auf 0 und suche dann weiter um wieder oben anzufangen (in einer boolean-Variablen kannst du dir merken ob du schon mal neu oben angefangen hast)

Ciao,
Ralf

CorsaGsi16v 1. Mär 2006 17:41

Re: Listbox durchsuchen
 
ok das probiere ich gleich danke...
und wie könnte ich alles durchsuchen und alle ergebnisse auf einen ruck in ein Memo eintragen???

MfG
Christian

Ralf Kaiser 1. Mär 2006 17:46

Re: Listbox durchsuchen
 
Zitat:

Zitat von CorsaGsi16v
ok das probiere ich gleich danke...
und wie könnte ich alles durchsuchen und alle ergebnisse auf einen ruck in ein Memo eintragen???

Jeweils wenn du etwas gefunden hast etwa so was machen:

Delphi-Quellcode:
 MeinMemo.Lines.Add(Listbox2.Items[ListBox2.ItemIndex]);
(oder statt ItemIndex natürlich die Fundstellen-Variable ...)

Ciao,
Ralf

himitsu 1. Mär 2006 18:26

Re: Listbox durchsuchen
 
Wenn du nicht abbrechen willst, sobald was gefunden wurde, dann einfach das and (subStrPos = 0) aud der Abfrage in der While-Schleife entfernen.

Delphi-Quellcode:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var i: Integer;
begin
  i := 0;
  while i < ListBox2.Items.Count do
  begin
    if Pos(Edit7.Text, ListBox2.Items[i]) > 0 then
      MeinMemo.Lines.Add(Listbox2.Items[ListBox2.ItemIndex]);
    inc(i);
  end;
end;
Und mit 'ner For-Schleife siehst's bestimmt auch nicht schlecht aus ^_^
Delphi-Quellcode:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var i: Integer;
begin
  for i := 0 to ListBox2.Items.Count - 1 do
    if Pos(Edit7.Text, ListBox2.Items[i]) > 0then
      MeinMemo.Lines.Add(Listbox2.Items[ListBox2.ItemIndex]);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 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