AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Editbox mit Onlinesuche

Ein Thema von Smiley · begonnen am 22. Apr 2005 · letzter Beitrag vom 22. Apr 2005
Antwort Antwort
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, 21: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
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: Editbox mit Onlinesuche

  Alt 22. Apr 2005, 21:39
Ich habe zwar zu deinem Problem erst mal keine Lösung, aber einen Rat hätte ich: Nimm den Teil, der mit der Suche in der DB zu tun hat, aus der Ereignisfunktion raus
Delphi-Quellcode:
  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;
und schreib dafür eine separate Funktion, der man den eingetippten Such-String übergeben kann.


Edit: Jetzt habe ich auch eine Lösung bzw. Frage. Warum nimmst du nicht das "OnChange"-Ereignis? Du brauchst doch auf die Tasten nicht reagieren, das macht doch das Eingabefeld von sich. Im "OnChange" liest du bloß den aktuellen Inhalt aus und übergibst den an die oben vorgeschlagene Suchfunktion.
  Mit Zitat antworten Zitat
22. Apr 2005, 21:40
Dieses Thema wurde von "Matze" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Sonstige Fragen zu Delphi" verschoben.
Benutzerbild von Smiley
Smiley

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

Re: Editbox mit Onlinesuche

  Alt 22. Apr 2005, 22:05
Es ist ja nicht zu fassen, da quält man sich Tagelang mit einem Problem herum und dann sagt einem jemand mit einem Fingerschnippen wie das doch ganz einfach geht.
Mit dem OnChange Ereignis geht das ja ganz einfach, aber da habe ich doch als erstes angesetzt.
Ich frage mich warum bin ich blos auf die Idee mit dem keypress-Ereignis gekommen ?

Danke für den Tip.

Dass der Suchen-Block in eine eigene Routine kommt ist klar, war ja nur zum testen hier mit drin, ich brauch das ja für die anderen Eingabefelder auch noch.
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

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

Re: Editbox mit Onlinesuche

  Alt 22. Apr 2005, 22:31
Noch ein kleines Problem hierbei, wie komme ich aus der EditBox mit Return raus ins nächste Feld anstatt nur mit Tab ?
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Editbox mit Onlinesuche

  Alt 22. Apr 2005, 22:33
Suche mal nach Delphi-Referenz durchsuchenSetFocus.
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#7

Re: Editbox mit Onlinesuche

  Alt 22. Apr 2005, 22:33
Edit1.SetFocus; und Delphi-Referenz durchsuchenOnKeyPress dürfte dir da weiterhelfen

(obwohl normalerweise: Neue Frage, neuer Thread )
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

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

Re: Editbox mit Onlinesuche

  Alt 22. Apr 2005, 22:46
Editx.setfocus ist schon ganz prima, aber was wenn ich die Tabulatorreihenfolge benutzen möchte die ich im Formular eingestellt habe.
Sonst springt er mir bei Tab ja woanders hin als bei Return oder ich muss die Tabreihenfolge im Objectinspector und im Quelltext verändern, wenn sich was ändert.
Ich dachte mehr an eine Lösung dass ich vk_return abfrage und in vk_tab umsetze, aber der neue key Inhalt wird in der keypressroutine ja nicht ausgeführt.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Editbox mit Onlinesuche

  Alt 22. Apr 2005, 22:48
Wie so oft, muss man die Suche nur mit den richtigen Begriffen füttern, Und in diesem Fall sind sie geradezu trivial: Hier im Forum suchenreturn tab.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Smiley
Smiley

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

Re: Editbox mit Onlinesuche

  Alt 22. Apr 2005, 23:02
Super Luckie du hast es wieder mal genau getroffen.

Perform(WM_NextDlgCtl, 0, 0);

Deine Tips sind immer wieder Gold wert.

Übrigens ich bin ein großer Fan von Dir.
Deine Tips sind immer genial und ich habe noch nicht gelesen, dass Du mal unwirsch oder agressiv geworden bist.
Deine Webseite find ich auch prima mit all den Beispielen.
Mit dem finden der Suchwörter hab ich immer etwas Probleme, ich hatte nach return und edit gesucht.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz