Thema: Delphi Editbox mit Onlinesuche

Einzelnen Beitrag anzeigen

Benutzerbild von Smiley
Smiley

Registriert seit: 9. Dez 2004
Ort: Gedern
205 Beiträge
 
Delphi 10.4 Sydney
 
#1

Editbox mit Onlinesuche

  Alt 22. Apr 2005, 22:32
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.
  Mit Zitat antworten Zitat