![]() |
Listbox mit einer Suchfunktion durchsuchen?
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Delphi-PRAXIS Community,
bin ein sehr begeisterter Programmierer, jedoch noch im Anfangs-Stadium und bräuchte eure Hilfe. Besuche die Stufe 12 eines Gymnasiums und wir haben erst seit einigen Monaten begonnen, so richtig mit Delphi zu arbeiten. Deshalb habe ich auch nur bedingte Grundkenntnisse und überfordert mich bitte nicht :D. Ich habe begonnen, ein Visitenkarten-durchsuch-Programm zu schreiben (2-3 Minuten :D) und wollte gerne eine Suchfunktion einbauen, um die Suche für meinen Vater etwas zu erleichtern. Sobald etwas in das Edit-Feld eingegeben wird, soll Listbox durchsucht werden und die in Frage kommenden Namen übrig bleiben. Um ein kleines Bild vom Programm zu machen, habe ich das Programm in den Anhang getan. Ich hoffe Ihr könnt mir helfen. Frohe Weihnachten und einen guten Rutsch ! play |
Re: Listbox mit einer Suchfunktion durchsuchen?
Hallo und erstmal herzlich willkommen in der :dp:,
Da Du, wie Du schreibst, fuer Deinen Vater Visitenkarten verwalten moechtest, schau doch mal in der Suchfunktion der DP hier nach so etwas..Stichwort "Adressverwaltung"..da findest Du auch sicher paar Codeschnippsel die Dir helfen ;-) Dir auch schoenes Fest :-D |
Re: Listbox mit einer Suchfunktion durchsuchen?
ich hab das mal in nem programm von mir für ein Record gemacht.
QC siehe hier V hoffe es hilft ein wenig
Delphi-Quellcode:
procedure TForm1.EsucheChange(Sender: TObject);
var suche:string; buchstabe,wort,buchstabeimwort,biw,b:integer; weitersuchen:boolean; begin esuche.Color:=clwhite; suche:=esuche.Text; gefundene:=''; lgefundene.Caption:=''; if length(suche) >=2 then begin weitersuchen:=false; wort:=1; REPEAT buchstabe:=1; buchstabeimwort:=1; weitersuchen:=false; REPEAT IF upcase(suche[buchstabe])=upcase(rec[wort].programm[buchstabeimwort]) THEN begin biw:=buchstabeimwort; b:=buchstabe; REPEAT weitersuchen:=false; inc(b); inc(biw); IF upcase(suche[b])=upcase(rec[wort].programm[biw]) THEN weitersuchen:=true else weitersuchen:=false; UNTIL (weitersuchen=false)or(length(suche)=b); IF weitersuchen=true THEN begin lbausgabe.Selected[wort-1]:=true; if gefundene='' then showmessage('Kein Fund'); gefundene:=gefundene+rec[wort].programm+#13; lgefundene.Caption:=gefundene; end; end; inc(buchstabeimwort); UNTIL (weitersuchen=true)or(buchstabe=length(suche))or(buchstabeimwort=length(rec[wort].programm)); inc(wort); UNTIL Wort-1 = anzahl; end; if (gefundene='')and(length(suche)>1) then begin esuche.Color:=clred; beep; end; end; |
Re: Listbox mit einer Suchfunktion durchsuchen?
Der zu suchende String soll aber in der Listbox stehen, oder? Dann wäre es IMHO das Einfachste, die Listbox.Items in einer Schleife (rückwärts!) zu durchlaufen und die Items zu löschen, die den Suchstring nicht enthalten.
Delphi-Quellcode:
for i := Pred(ListBox.Items.Count) downto 0 do
//möglicherweise habe ich jetzt die Parameter vertauscht, einfach mal in der Hilfe nachsehen if not StrUtils.AnsiContainsText(Suchstring,ListBox.Items[i]) then ListBox.Items.Delete(i); |
Re: Listbox mit einer Suchfunktion durchsuchen?
Zitat:
wieder lösche - dann kann es vorkommen, dass der String bei den vorherigen Schritten aus der Liste geflogen ist. Was vielleicht noch interessant ist - ![]() Musst Du dir nur noch entsprechend umbauen von StringList nach ListBox.items. Grüße Klaus |
Re: Listbox mit einer Suchfunktion durchsuchen?
Nichts gegen Eure Loesungen..aber...sollten wir net "helfen zu lernen"..mir schien es bei "ihm" sehr nuetzlich..da er Initiative zeigte!!! :shock:
|
Re: Listbox mit einer Suchfunktion durchsuchen?
@Klaus: das ist ja wohl eher ein konzeptionelles Problem. Der TE müsste sowieso eine Stringliste aller Items im Hintergrund halten oder beim Rücksetzen der Filterbedingungen die Items neu einlesen, so what?
@Kaki: Das sind doch nur mögliche Lösungsansätze, der TE muss das immer noch verfeinern IMO :zwinker: |
Re: Listbox mit einer Suchfunktion durchsuchen?
[Edit] ....geloescht.....[/edit]
[OT] Schoenes Weihnachtsfest und guten Rutsch wuensch..Dir und Deinem Schatz [/OT] ;-) |
Re: Listbox mit einer Suchfunktion durchsuchen?
[OT] Dir und allen anderen Usern wünschen wir dasselbe [/OT]
|
Re: Listbox mit einer Suchfunktion durchsuchen?
Danke erst einmal für die Lösungsvorschläge.
Bin der Idee von DeddyH gefolgt, weil mir diese als einfachste erschien. Jetzt weiß ich auch so ungefähr, was "AnsiContainsText" macht. "Returns true if a string contains a substring, case insensitive" True wird "gegeben", sobald String Zeichen vom Substring enthält. Soweit ok. if not StrUtils.AnsiContainsText(Suchstring,ListBox.Items[i]) ^ ^ Also : 2.dem gesucht|1.In hier wird nach - |-------------------------------| Ich habe soweit folgendes stehen und bekomme folgende Fehlermeldungen, mit denen ich nichts anfangen kann, finde die Fehler nicht *schäm* procedure TForm2.Button1Click(Sender: TObject); begin for i := Pred(ListBox1.Items.Count) downto 0 do if not StrUtils.AnsiContainsText(Wort,ListBox1.Items[i]) then ListBox.Items.Delete(i); end; [Error] Unit2.pas(42): Incompatible types: 'String' and 'Integer' [Error] Unit2.pas(44): ')' expected but identifier 'Items' found [Error] Unit2.pas(52): Statement expected but end of file found Irgendwas stimmt mit ListBox1.Items[i] nicht, das weiß ich schonmal. Ich habe versucht, die Fehler zu beseitigen, jedoch ohne Erfolg. Ich möchte mich auch für das untere Niveau dieses Threads entschuldigen,es wäre wichtig für mich dieses Programm nach meinen Vorstellungen zu erstellen. play frohes Fest |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:19 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