Autor Beitrag
colaka
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 200
Erhaltene Danke: 4

Win XP, W7
Delphi 2005 Prof.
BeitragVerfasst: So 30.09.12 13:41 
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:
ausblenden 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

_________________
Mit 2 Stunden Ausprobieren kann man sich oft 5 Minuten Nachdenken ersparen


Zuletzt bearbeitet von colaka am So 30.09.12 23:50, insgesamt 1-mal bearbeitet
mandras
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 432
Erhaltene Danke: 107

Win 10
Delphi 6 Prof, Delphi 10.4 Prof
BeitragVerfasst: So 30.09.12 14:43 
Wenn das mit dem Cursor nicht 100%ig so sein soll:
Versuch es mit einer ungebundenen TDBLookupCombobox.
Heißt: ListSource, ListField und KeyField müssen gesetzt sein, Datasource und Datafield aber nicht.
Nachdem eine Auswahl getroffen wurde kannst Du den vollen Wert über die Eigenschaft KeyValue der Komponente abrufen.
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: So 30.09.12 16:59 
ausblenden Delphi-Quelltext
1:
 DatMod.Query.SQL.Add('WHERE Moebel LIKE "' + Eingabe + '"');					

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS

Für diesen Beitrag haben gedankt: colaka