Autor Beitrag
daveman
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Fr 29.02.08 09:53 
Hi,

möchte gern alle in einer Suche gefundenen Listboxeinträge in eine extra Listbox schreiben lassen.

Was muss ich tun?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
var i:integer   ;
Gefunden:Boolean;
Suchwort:String;

begin

Suchwort:=InputBox ('Suchen Sie nach einem Merkmal',
                    'Wonach soll gesucht werden ?','');
if Suchwort <>'' then
begin
  Gefunden:=false;
  i:=-1;
  while (i<ListBox1.Items.count-1) and not Gefunden do
    begin
      Inc(i) ;
      if Pos (Suchwort, ListBox1.Items[i])>0 then Gefunden:=True;
      end;
      if Gefunden
        then ListBox1.ItemIndex:=i
        else ShowMessage ('Suchwort nicht gefunden');
        end;
        end;
zuma
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Fr 29.02.08 10:36 
Versuchs doch mal so (keine Gewähr, habs nur auf die schnelle aus dem Kopf geschrieben):

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var i:integer   ;
Suchwort:String;

begin

Suchwort:=InputBox ('Suchen Sie nach einem Merkmal',
                    'Wonach soll gesucht werden ?','');
if Suchwort <>'' then
begin
 Listbox2.items.clear; // Suchtrefferliste leeren
 for i := 0 to Listbox1.items.count-1 do // alle Einträge durchlaufen
   if Pos (Suchwort, ListBox1.Items[i])>0 then // wenn treffer
    ListBox2.Items.add(Listbox1.items.Strings[i]; // die aktuelle Zeile in Listbox2 merken
 if Listbox2.items.count = 0 then // nix in der Trefferliste ?
 showmessage('Nicht gefunden');   // user info
end;

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 29.02.08 10:41 
Was ich nicht verstehe: Einerseits schreibst du, du möchtest alle gefundenen Einträge, andererseits brichst du beim ersten gefundenen Eintrag ab in der while-Schleife... :?
Wie wärs einfach so (auch was die Einrückung angeht...):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
var
  i: Integer;
  Suchwort: String;
begin
  ListBox1.MultiSelect := true;
  ListBox2.Clear;
  Suchwort := InputBox('Suchen Sie nach einem Merkmal',
    'Wonach soll gesucht werden ?', '');
  if Suchwort <> '' then
  begin
    for i := 0 to ListBox1.Count - 1 do
      if Pos(Suchwort, ListBox1.Items[i]) > 0 then
      begin
        ListBox1.Selected[i] := true;
        ListBox2.Items.Add(ListBox1.Items[i]);
      end;
    if ListBox1.SelCount = 0 then
      ShowMessage('Suchwort nicht gefunden');
  end;
end;
daveman Threadstarter
Hält's aus hier
Beiträge: 10



BeitragVerfasst: Fr 29.02.08 10:42 
Danke! Es funktioniert.
Vielen, vielen Dank!