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