Thema: Delphi Live Stichwortsuche

Einzelnen Beitrag anzeigen

Benutzerbild von Ajintaro
Ajintaro

Registriert seit: 20. Okt 2004
Ort: Sankt Augustin
138 Beiträge
 
Delphi XE6 Starter
 
#1

Live Stichwortsuche

  Alt 24. Feb 2014, 15:06
Hallo DP,

Ich habe folgende ini-Datei erstellt:

[Delphi]
Delphi in die Praxis umsetzen=Jederzeit
Delphi in die Tat umsetzen=Aber sicher
Was ist Delphi eigentlich=Schön
Mein Name ist Borland=Nicht wirklich

Folgender Code bietet eine Art live-suche mit Filter:

Delphi-Quellcode:
procedure FilterItems(const sl: TStrings; const substr: string);
var i: integer;
begin
  sl.BeginUpdate;
  try
    for i := Pred(sl.Count) downto 0 do
      if not StrUtils.AnsiContainsText(sl[i],substr) then
        sl.Delete(i);
  finally
    sl.EndUpdate;
  end;
end;
Delphi-Quellcode:
procedure TForm1.e_inputChange(Sender: TObject);
begin
 if e_input.text <> 'then
  begin
    FilterItems(Listbox1.Items, e_input.Text);
  end;
  if e_input.text = 'then
  begin
    mif.ReadSectionValues(ComboBox1.Text, Listbox1.items);
  end;
end;
2 Kleine Probleme gibt es dabei noch:

a) Tippt man Delphi in das Editfeld, werden richtigerweise die ersten drei Einträge angezeigt:

...
Delphi in die Praxis umsetzen=Jederzeit
Delphi in die Tat umsetzen=Aber sicher
Was ist Delphi eigentlich=Schön
...

Wenn ich nun als 2. Wort umsetzen eintippe, sollten nur noch die ersten beiden Einträge sichtbar sein:

...
Delphi in die Praxis umsetzen=Jederzeit
Delphi in die Tat umsetzen=Aber sicher
...

Das klappt leider noch nicht ganz. Muss ich das gefilterte Ergebnis erneut durchsuchen?

b) Sobald man einen Tippfehler macht und ein Wort wieder aus dem Editfeld löscht, wird das bis dahin gefilterte Ergebnis nicht mehr angezeigt. Kann man das mit einer Hilfs-Stringlist umgehen ?

Und noch eine Frage bezüglich ini-Dateien:
Gibt es eine ini-funktion, welche den Key und die Section getrennt lesen kann? Ich würde gerne beide Werte getrennt in einem Editfeld darstellen. Bisher habe ich aber immer nur den VALUE Wert über den KEY ausgelesen.

Vielen Dank,

Jaimy
Jaimy
  Mit Zitat antworten Zitat