![]() |
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 |
Re: Suchfunktion <> Listbox ?
Wenn das wort in dem listbox eintrag vorkommen kann, etwa so:
Delphi-Quellcode:
Falls der Listboxeintrag gleich dem suchwort ist, würdest du das
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;
Delphi-Quellcode:
(ungetestet)
pos(Wort,ListBox.Items[i])>0
{ersetzen durch} ListBox.Items[i]=Wort |
Re: Suchfunktion <> Listbox ?
Ähm... per Schleife alle EInträge durchgehen und vergleichen? :roll:
|
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 |
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 |
Re: Suchfunktion <> Listbox ?
hallo marabu,
suche die (prefix search und markieren des ersten passenden Eintrags) methode ? mfg vader |
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 |
Re: Suchfunktion <> Listbox ?
Hi vader,
es gibt viele Möglichkeiten, hier ist eine:
Delphi-Quellcode:
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.
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; Statt des Feldes PrefixEdit kannst du auch mit InputQuery() arbeiten. Kommst du zurecht? marabu |
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 |
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 09:17 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