So, ich hab mal das folgende Beispiel geschrieben -- also bei mir funktioniert es...
Delphi-Quellcode:
// Zuerst die betreffende Tabelle nach Deinen Wünschen sortieren
// Dann diese Methode einmalig bzw. bei Änderung der Einträge aufrufen
procedure TForm_Main.DoInitListBox;
begin
ListBox1.Items.Clear;
with DeineTabelle do
while not EOF do
begin
ListBox1.Items.Add(FieldByName('Title').AsString); // Listbox mit Einträgen der Tabelle füllen
Next;
end;
end;
// KeyPress-Event der Listbox
procedure TForm_Main.ListBox1KeyPress(Sender: TObject; var Key: Char);
var
Name: String;
begin
If (Key = Chr(VK_Escape)) or (Key = Chr(VK_RETURN)) then Suchwort:= '';
If (Key in ['A'..'Z']) or
(Key in ['a'..'z']) or
(Key in ['0'..'9']) or
(Key = ' ') or
(Key = '.') or // bei Bedarf die erlaubten Zeichen hinzufügen
(Key = Chr(vk_Back)) then
begin
If (Key = Chr(vk_Back)) then // Wenn Taste Backspace, dann letztes Zeichen löschen
Suchwort:= copy(Suchwort, 0, length(Suchwort)-1) else
Suchwort:= Suchwort + Key; // Suchwort um den getippten Buchstaben erweitern
with DeineTabelle, Sender As TListBox do
// Suche erstes Vorkommen des Suchwortes in Spalte "Title"
if Locate('Title', Suchwort, [loCaseInsensitive, loPartialKey]) then
ItemIndex:= RecNo-1 // Aktuellen Cursor (also der, der mit "Locate" gesetzt wurde) übergeben
else
ItemIndex:= -1; // Sonst nichts in der Listbox markieren
end;
end;
Für "DeineTabelle" und "Title" natürlich deine Bezeichner einsetzen.
Hoffe, du kannst was draus verwenden
Gruß
Pfoto