Filterfunktion
Guten Tag
ich suche so eine Art filterfunktion für Delphi und zwar möchte ich innerhalb einer listbox nach einem string suchen der in einem edit feld eingegeben wird. nehmen wir mal an in der listbox stünden folgende werte: ABCDEFG FXYZT90 AB369ZD T9ABG3S und im Editfeld würde 'AB' eingegeben werden. wie könnte ich dann die position des AB innerhalb der listbox ermitteln und zwar so dass mit alle 3 integer werte der position angegeben werden? Vielen dank im vorraus |
Re: Filterfunktion
Hallo,
Du gehst alle Items durch und ermittelst mit der Pos()-Funktion das Vorkommen des Teilstrings im Item. Wenn Pos > 0 dann merkst Du Dir diese Position. Edit: und nächstes Mal bitte in der richtigen Kategorie posten |
Re: Filterfunktion
schau dir mal den thread an:
http://www.delphipraxis.net/internal...=878257#878257 da wird einfach die bereits vorhandene Funktion von Windows genutzt. |
Re: Filterfunktion
danke
ich werds grade mal ausprobieren... das einzige problem ist das wir diese funktionen quasi noch nicht im unterricht behandelt hatten und ich quasi eine andere alternative lösung erhofft hatte mit dem kenntnisstand den ich zur verfügung habe... ich hatte folgendes bereits probiert
Delphi-Quellcode:
das klappt auch schon soweit, bis auf dass ich die fehlermeldung erhalte, dass der index nicht im gültigen befehl läge.
procedure TVok_Form.E_FilterChange(Sender: TObject);
var x,y,z :integer; begin x:=0; while(x < lb_vokabelliste.Items.Count) do begin Y:=1; while(Y < length(lb_vokabelliste.Items.Strings[X])) do begin Z:=0; while(Z<length(E_filter.text))do begin if (e_filter.Text[Z] = lb_vokabelliste.Items.Strings[X][Y+Z-1])then begin label1.Color := clred; end else begin lB_vokabelliste.items.Delete(X); end; Z := Z+1 end; Y:=Y+1; end; X:= X+1; end; ohne den befehl Lb_vokabelliste.items.delete(x) läuft es allerdings einwandfrei... woran kann das liegen? |
Re: Filterfunktion
Geht das net einfacher und zwar so?
Delphi-Quellcode:
Somit weist du ob deer eingegebe Eintrag schon vorhanden ist!
begin
if ( ListBox1.Items.IndexOf(Edit1.Text) <> -1 ) then begin ShowMessage('Gefunden'); end; end; |
Re: Filterfunktion
Das ist zwar eine möglichkeit.
aber der benutzer gibt ja nie den kompletten string ein der in der listbox steht sonder immer nur einen teil und die beiträge die nicht übereinstimmen sollen dann gelöscht werden. bei der letzen variante werden die beiträge die ungenügend sind erst gelöscht wenn der komplette inhalt der listbox angegeben wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:33 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