Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Filterfunktion (https://www.delphipraxis.net/112989-filterfunktion.html)

Shirakava 30. Apr 2008 17:54


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

s-off 30. Apr 2008 17:57

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

SirThornberry 30. Apr 2008 18:01

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.

Shirakava 30. Apr 2008 20:00

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:
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;
das klappt auch schon soweit, bis auf dass ich die fehlermeldung erhalte, dass der index nicht im gültigen befehl läge.
ohne den befehl Lb_vokabelliste.items.delete(x) läuft es allerdings einwandfrei... woran kann das liegen?

Mackhack 30. Apr 2008 20:22

Re: Filterfunktion
 
Geht das net einfacher und zwar so?

Delphi-Quellcode:
begin
  if ( ListBox1.Items.IndexOf(Edit1.Text) <> -1 ) then
  begin
    ShowMessage('Gefunden');
  end;
end;
Somit weist du ob deer eingegebe Eintrag schon vorhanden ist!

Shirakava 30. Apr 2008 20:36

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