Hallo,
ich habe ein Editfeld, in das als Vorschlag nach jedem getippten Zeichen ein Wert aus einer Query-Abfrage eingetragen werden soll, also so etwas ähnliches wie die Codevervollständigung bei Delphi.
Beispiel: In der Tabelle habe ich in einer Spalte die Einträge: Bett, Schrank, Stuhl, Tisch. Wenn ich jetzt beispielsweise in das Editfeld den Buchstaben S eintippe, soll im Editfeld der erste Begriff aus der Tabelle, der mit "S" anfängt stehen, also Schrank. Der Cursor soll dann natürlich nach dem S stehen, so dass ich auch noch das "t" eintippen kann. Jetzt soll im Editfeld "Stuhl" stehen.
Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt.
Was ich jetzt gemacht habe, funktioniert leider nicht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| procedure TFKunden.Edit1Enter(Sender: TObject); begin Tastaturpuffer := ''; end;
procedure TFKunden.Edit1KeyPress(Sender: TObject; var Key: Char); var Eingabe : String; T : Char; begin Eingabe := ''; T := Key; Tastaturpuffer := Tastaturpuffer + T; Eingabe := Tastaturpuffer + '%'; DatMod.Query.DataSource := DatMod.DSKunden; DatMod.Query.Close; DatMod.Query.SQL.Clear; DatMod.Query.SQL.Add('SELECT Moebel FROM TKunden.DB'); DatMod.Query.SQL.Add('WHERE Moebel LIKE "Eingabe"'); DatMod.Query.Open; Edit1.Text := DatMod.Query.FieldByName('Moebel').AsString; end; |
Vielleicht kann mir jemand einen Denkanstoss geben.
Danke