Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Suchfunktion <> Listbox ? (https://www.delphipraxis.net/52810-suchfunktion-listbox.html)

Vader 4. Sep 2005 15:33


Suchfunktion <> Listbox ?
 
hallo,

wie kann man eigentlich eine suchfunktion für eine listbox coden, ich meine wenn ich nach einen
bestimmten wort suchen will ?


mfg vader

emteg 4. Sep 2005 15:39

Re: Suchfunktion <> Listbox ?
 
Wenn das wort in dem listbox eintrag vorkommen kann, etwa so:
Delphi-Quellcode:
var i: integer;
    Wort: string;
begin
  for i:=0 to ListBox.Items.Count-1 do
  begin
    if pos(Wort,ListBox.Items[i])>0 then
      //ergebnise auflisten o.ä.
  end;
end;
Falls der Listboxeintrag gleich dem suchwort ist, würdest du das
Delphi-Quellcode:
pos(Wort,ListBox.Items[i])>0
{ersetzen durch}
ListBox.Items[i]=Wort
(ungetestet)

malo 4. Sep 2005 15:40

Re: Suchfunktion <> Listbox ?
 
Ähm... per Schleife alle EInträge durchgehen und vergleichen? :roll:

marabu 4. Sep 2005 15:54

Re: Suchfunktion <> Listbox ?
 
Hi vader,

welche Art von Suche stellst du dir vor? Locate (prefix search und markieren des ersten passenden Eintrags) oder Select (auswählen aller passenden Einträge, evtl. regex search).

Soll der Suchbegriff extern vorgegeben werden (eigenes edit control) oder über key codes in der listbox erkannt werden?

Grüße vom marabu

NicNacMan 4. Sep 2005 16:02

Re: Suchfunktion <> Listbox ?
 
hi,

wenn das suchwort 1:1 in der listbox vorkommt würde auch das gehen:
Delphi-Quellcode:
if ListBox1.Items.IndexOf('blub') > -1 then
  // gefunden

Vader 4. Sep 2005 17:32

Re: Suchfunktion <> Listbox ?
 
hallo marabu,

suche die (prefix search und markieren des ersten passenden Eintrags) methode ?

mfg vader

Vader 4. Sep 2005 17:39

Re: Suchfunktion <> Listbox ?
 
hallo,

ich stelle mir eine suchfunktion so vor wie bei vielen progs wo ein neues fenster aufmacht und dort man das
wort eingibt das was man suchen will !

mfg vader

marabu 4. Sep 2005 18:08

Re: Suchfunktion <> Listbox ?
 
Hi vader,

es gibt viele Möglichkeiten, hier ist eine:

Delphi-Quellcode:
interface

type
  TDemoForm = class(TForm)
    ListBox: TListBox;
    PrefixEdit: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure PrefixEditChange(Sender: TObject);
  end;

implementation

procedure TDemoForm.PrefixEditChange(Sender: TObject);
var
  sl: TStringList;
  index: integer;
begin
  sl := TStringList.Create;
  sl.Sorted := ListBox.Sorted;
  with ListBox do begin
    sl.Assign(Items);
    sl.Find(PrefixEdit.Text, index);
    if (PrefixEdit.Text <> '')
    and (index >= 0)
    and (index < sl.Count)
    and (AnsiUppercase(Copy(sl[index], 1, Length(PrefixEdit.Text))) = AnsiUppercase(PrefixEdit.Text))
      then ItemIndex := index
      else ItemIndex := -1;
  end;
  sl.Free;
end;
Wenn sich der Inhalt von der ListBox nie ändert, dann könntest du die Übernahme der Items in die Stringlist (zum vereinfachten Suchen) bereits im FormCreate() und sl zu einer private Variablen der Form machen.

Statt des Feldes PrefixEdit kannst du auch mit InputQuery() arbeiten.

Kommst du zurecht?

marabu

Vader 4. Sep 2005 18:33

Re: Suchfunktion <> Listbox ?
 
hallo marabu,

ganz komme ich nicht zurecht, den code habe ich ohne fehler compilieren können aber wenn ich jetzt
ein wort in das editfeld eingeben und den code ausführe passiert nichts ?

ich kann deinen code nicht ganz interpredieren, sollt bei deinen code das gesuchte wort in der listbox makiert sein wenn es gefunden wurde ???


mfg vader

marabu 4. Sep 2005 18:40

Re: Suchfunktion <> Listbox ?
 
Richtig - sobald ein passender Präfix eingegeben wurde wird das übereinstimmende Item in der ListBox markiert. Um Umsetzungsfehler auszuschließen und die korrekte Funktionsweise zu sehen könntest du einfach mal ein Leerprojekt anlegen, auf dem sich nur die beiden Controls befinden, wobei du über den Object Inspector ein paar Items in die ListBox eingeben solltest.

Viel Glück,
marabu

Ich gehe jetzt kurz mal den Rasen sprengen

KRAWOOOM

(das ist jetzt ohne Bezug zu der gerade laufenden Revolution)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:36 Uhr.
Seite 1 von 3  1 23      

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