Ich hab wieder mal ein Problem.
Ich versuche eine sogenannte "Onlinesuche" aus einer EditBox heraus hinzubekommen.
Man gibt etwas in die Editbox ein und daraufhin soll z.B. in einer Listbox eine Liste aus einer Datenbank angezeigt werden, die mit diesen Werten beginnt. (Onlinesuche=pro eingegebenem Zeichen suchen nicht erst nach Enter)
Das ist im Prinzip noch nicht so schwer.
Über das keypress Ereignis die Taste abfragen und auswerten.
Mein erstes Problem ist:
Wenn ich mit der Rücktaste ein Zeichen lösche, dann geht das bis zum zweiten Zeichen gut, schreibe ich ein drittes Zeichen und drücke die Backspace-Taste, dann löscht er mir 2 Zeichen weg.
Irgendwo hab ich da einen Denkfehler, aber wo ?
Hier mal der Sourcecode der keypress-Routine
Delphi-Quellcode:
procedure TForm1.EdKontoKeyPress(Sender: TObject; var Key: Char);
begin
DataKonto:=DataKonto+key;
If key = chr(vk_delete) Then
DataKonto:=''; // Wenn Del-Taste dann alles löschen
If key = chr(vk_back) Then
begin
Delete(DataKonto,Length(DataKonto)-1,2); // Wenn Rück-Taste dann nach links löschen
EdKonto.Text:=DataKonto;
end;
Form1.listbox1.Items.clear;
Form1.QCD1.Close;
Form1.QCD1.SQL.Clear;
Form1.QCD1.SQL.Add('Select * From Konten Where KontoNr Like '+QuotedStr(DataKonto+'%'));
Form1.QCD1.Open;
While not Form1.QCD1.Eof do
Begin
Form1.ListBox1.Items.Add(form1.QCD1KontoNr.AsString + ' ' + form1.QCD1Beschriftung.AsString);
Form1.QCD1.Next
End;
end;
Mein zweites Problem ist:
Ich habe irgendwo mal gelesen, wie man sowas auch mit einem Timer macht, dass man die Suche und auflistung über ein Timerereignis
laufen lässt, damit die Eingabe zügiger abläuft. Das war ein tolles Beispiel, ich kann mich aber nicht mehr erinnern wo ich es gesehen
habe. Ich habe fast alle Bücher von Doberenz/Kowalski, möglich dass es in einem dieser Bücher drin war, ich kann es aber nicht mehr
finden. Vieleicht hat das jemand gesehen und kann mir sagen wo das war.
Fall jemand eine bessere Idee hat das Problem anzugehen, freue ich mich auch über andere Verfahrensweisen.