AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Memofeld filtern

Ein Thema von JackTheRippa · begonnen am 22. Apr 2008 · letzter Beitrag vom 23. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2      
JackTheRippa

Registriert seit: 11. Aug 2007
4 Beiträge
 
#1

Memofeld filtern

  Alt 22. Apr 2008, 16:32
hi zusammen!

Ich habe vor, aus Wörtern, die in einem Memofeld stehen, nur diejenigen herauszufiltern und anschließend in demselben Memofeld wieder anzuzeigen, die der Eingabe des Benutzers (in einem Edit-Feld) entsprechen. Klingt kompliziert, ist aber im Grunde dasselbe Prinzip, mit dem man in i_T_u_n_e_s die eigene Musiksammlung filtert.
Weiß nicht genau, ob ich das Thema bei 'Datenbanken' hätte reinschreiben sollen.

Bisher sieht mein Prog so aus, dass der Benutzer in ein Memofeld Wörter etc eingeben kann (wenn das funzt, will ich am Ende z.B. m3u-Playlists laden) und die Wörter dann sortiert werden.
Jetzt soll die sortierte (!) Liste, die ich in ein 2. Memofeld umgeschrieben habe, mit der Eingabe des Benutzers in ein Edit-Feld verglichen werden.
Also im Pseudo-Code-format:
procedure TForm1.Edit1Change
bei eingabe z.b. eines 'a' filtere mir alle Ergebnisse mit 'a' am anfang heraus

Gibt es dafür eine Lösung?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.548 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Memofeld filtern

  Alt 22. Apr 2008, 16:46
Mal aus dem Kopf:
Delphi-Quellcode:
Memo.Lines.BeginUpdate;
for i := Pred(Memo.Lines.Count) downto 0 do
  if Pos(Edit.Text,Memo.Lines[i]) <> 1 then
    Memo.Lines.Delete(i);
Memo.Lines.EndUpdate;
P.S.: Willkommen in der DP
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Memofeld filtern

  Alt 22. Apr 2008, 16:55
Hi,

müsste es nicht Count - 1 heißen, Detlef?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.548 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Memofeld filtern

  Alt 22. Apr 2008, 16:57
Was macht denn Pred, Manuel?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Memofeld filtern

  Alt 22. Apr 2008, 16:59
Ach, sei still.

Total übersehen
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Memofeld filtern

  Alt 22. Apr 2008, 19:30
Hi JackTheRippa,

eine TComboBox mit Style=csSimple kann sowas wie eine inkrementelle Suche schon von sich aus. Ich persönlich finde das sogar besser als einen Filter, aber das ist Geschmackssache.
Vielleicht ist das ja eine Idee für dich.
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Memofeld filtern

  Alt 22. Apr 2008, 19:53
Hallo,

vielleicht ist die triviale Präfix-Suche garnicht gewünscht.

Delphi-Quellcode:
procedure FilterStrings(sAll, sFilter: TStrings; const filter: string);
var
  i: Integer;
begin
  sFilter.BeginUpdate;
  sFilter.Clear;
  try
    for i := 0 to Pred(sAll.Count) do
      if {StrUtils.}AnsiContainsText(sAll[i], filter) then
        sFilter.Append(sAll[i]);
  finally
    sFilter.EndUpdate;
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
JackTheRippa

Registriert seit: 11. Aug 2007
4 Beiträge
 
#8

Re: Memofeld filtern

  Alt 22. Apr 2008, 20:16
'nabend!

Also vielen Dank schon mal für die Hilfe.
@DaddyH: Deine Version mit ...count-1 funzt. Danke!
@Marabu: soll ich bei
Zitat:
{StrUtils.}
noch was ergänzen, oder wie hab ich das zu verstehen?

Delphi versteht nämlich den Befehl 'AnsiContainsText' nicht.
Danke schon mal im Vorraus

welche der beiden Prozeduren ermöglichen denn auch das Rückgängigmachen der Sortierung?
Die erste Version sortiert zwar gut aus, aber wenn die das Edit-Feld lösche, kommt der urspr. Datensatz nicht wieder zum Vorschein.

Gruß
JTR
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Memofeld filtern

  Alt 22. Apr 2008, 20:18
Das ist nur ein Hinweis, dass Du die Unit StrUtils noch einbinden musst, damit Du diese Funktion nutzen kannst.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.548 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Memofeld filtern

  Alt 23. Apr 2008, 07:08
Eine Rückgängig-Funktion kann es nur geben, wenn Du Dir den alten Zustand merkst, z.B. in einer Stringliste.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:20 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