![]() |
Re: Listbox suche (Live) Buchstabenfolge
Die nicht gelöschten stehen ja noch drin :mrgreen:. Ich denke, Du meinst die bereits gelöschten. Wie ich im zitierten Thread bereits angedeutet hatte, muss man sich die "Original-Items" dann halt in einer internen TStringlist auf Vorrat halten und kann dann ggf. resetten.
|
Re: Listbox suche (Live) Buchstabenfolge
Du kannst auch die StringList in die ListBox kopieren und bei der Eingabe leerst du die ListBox, läuft die StringList durch und fügst die passenden Einträge hinzu. Dann ist egal, ob du Buchstaben löscht oder hinzufügst.
Umgekehrt geht's natürlich auch: Die ListBox vorm Filtern komplett füllen und dann entsprechend die Einträge löschen. In welcher Größenordnung befinden wir uns denn, was die Anzahl der Einträge betrifft (wegen der Performance)? |
Re: Listbox suche (Live) Buchstabenfolge
ah ich verstehe, versuch ich mal umzusetzen...
Naja es können schon an die 400 Werden denke ich |
Re: Listbox suche (Live) Buchstabenfolge
Das ist ja nicht sooo viel. Wenn Du BeginUpdate und EndUpdate einsetzt, sollte das in adäquater Zeit zu machen sein.
|
Re: Listbox suche (Live) Buchstabenfolge
SO klappt ganz gut, nur irgendwie hat es einen kleinen haken, es ist schwierig zu erklären, also wenn ich jetzt etwas lösche dan wird auch geupdatet, nur nicht ganz richtig mal ein Beispiel:
Einträge: Wolf Motte Wohnung Molle Ich schreibe: Mo .... passiert nix erst wenn ich jetzt noch einmal irgednetwas eingebe dann wird gefiltert.
Delphi-Quellcode:
procedure FilterItems(const sl: TStrings; const substr: string);
var i: integer; begin sl.BeginUpdate; Merkliste:=Form1.MailerListbox.Items.Text; Form1.Mailerlistbox.Items.Text:=Merkliste; try for i := Pred(sl.Count) downto 0 do if not StrUtils.AnsiContainsText(sl[i],substr) then sl.Delete(i); finally sl.EndUpdate; end;
Delphi-Quellcode:
procedure TForm1.SucheditKeyPress(Sender: TObject; var Key: Char);
begin if Suchedit.text='' then else Mailerlistbox.Items.Text:=Merkliste; FilterItems(Mailerlistbox.Items,Suchedit.Text); end; |
Re: Listbox suche (Live) Buchstabenfolge
Ohne den Rest des Codes durchgeschaut zu haben: Was ist denn der Sinn dahinter?
Delphi-Quellcode:
Merkliste:=Form1.MailerListbox.Items.Text;
Form1.Mailerlistbox.Items.Text:=Merkliste; |
Re: Listbox suche (Live) Buchstabenfolge
Der sinn dahinter ist, das die aktuellen Listboxeinträge abzüglich der gelöschten den neuen Wert ergeben.
|
Re: Listbox suche (Live) Buchstabenfolge
Der steht doch anschließend sowieso in der Listbox.
[edit] Noch einmal zum generellen Vorgehen: Du befüllst Deine Listbox, erstellst Dir eine Stringliste und weist dieser die Items der Listbox zu. Wenn nun gefiltert werden soll, leerst Du die Listbox und fügst die passenden Einträge aus der Stringliste ein. Da Du Dir das Original ja gemerkt hast, kannst Du das beliebig oft wiederholen, ohne dass Dir ursprüngliche Einträge verloren gehen. [/edit] |
Re: Listbox suche (Live) Buchstabenfolge
Wie bin ich denn drauf :wall:
du hast recht mit
Delphi-Quellcode:
ist es schon getan wenn ich zu beginn den Listboxinhalt speichere.
if Suchedit.text='' then
Mailerlistbox.items.text:=Mailerliste Nur ne kleine Macke hats noch lösche ich alles bis nichts mehr im Edit steht, dann muss ich noch 1 mal auf löschen klicken bis die Liste wieder drinn ist. (vielleicht muss ich auf die Löschtaste separat reagieren) :roll: |
Re: Listbox suche (Live) Buchstabenfolge
Dann schreib das doch in ein Event des Edits (OnKeyPress oder OnChange).
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 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