Entwickler-Ecke
Datenbanken - Autovervollständigung in einem TEdit
m.schultheis - Mo 01.09.03 17:32
Titel: Autovervollständigung in einem TEdit
Hy Leute,
ich gebe in einem TEdit eine Telefonnummer ein, wenn diese schon in einer Tabelle vorhanden ist, dann möchte das die Telefonnummer automatisch aufgrund der Nummer in der Datenbank vervollständigt wird ...
sprich : ich gebe ein 880....
und im TEdit erscheint dann die Nummer: 880-9001 ...
CenBells - Mo 01.09.03 19:03
Hallo,
dazu benötigst du das onchange event des Edits. Und dann setzt du auf die Tabelle mit den telefonnummern einen filter. Und wenn ein datensatz durch den filter durchkommt, kann vervollständigt werden.
Gruß
Ken
UGrohne - Mo 01.09.03 20:09
Es gäbe auch die Möglichkeit, eine ComboBox als Eingabefeld zu nehmen, in die Items die Nummern reinzuschreiben. Min. ab Delphi 7 unterstützt die CB AutoVervollständigung.
Fragt sich nur, was Datenmengen-Mmäßig sinnvoller ist.
m.schultheis - Mo 01.09.03 21:28
das funktioniert wunderbar danke ... ich frag mich ab und an warum einfache sachen nie auf der hand liegen ;o) aber ich hätte gerne das wenn ich schon eine ziffer eingebe , das er mir im combo auch schon einträge anzeigt, er zeigt sie nur an wenn er tatsächlich den kompletten zeichenstring gefunden hat ...
UGrohne - Mo 01.09.03 21:32
Hmm, weiß gerade auf die Schnelle nimmer, wie sich das Teil verhält. Du suchst also eher so etwas, wie in Outlook, wenn man ne neue Mail schreibe, die Adresse eingibt und dann z.B. so ein weiteres Fenster unten erscheint, aus dem man den Empfänger auswählt?
Oder noch leichter gesagt, eine Art CodeInsight, wie in Delphi?
Hmm, das könnte ich auch gebrauchen, hat wer ne Idee?
grayfox - Mo 01.09.03 22:20
hallo UGrohne!
ich hab diesen beitrag mal gefunden:
Zitat: |
...eine Autovervollständigung in einer Combobox realisieren?
Autor: Simon Grossenbacher
Homepage: http://www.swissdelphicenter.ch
{
Ever wondered how to make a combobox
with autocomplete like the one in the explorer?
The trick is in the CB_FINDSTRING API call.
}
|
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| var LastKey: Word;
procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin LastKey := Key; end;
procedure TForm1.ComboBox1Change(Sender: TObject); var Srch: string; ix: Integer; begin Srch := combobox1.Text; if LastKey = $08 then begin LastKey := 0; Exit; end; LastKey := 0; ix := combobox1.Perform(CB_FINDSTRING, - 1, Longint(PChar(Srch))); if ix > CB_ERR then begin combobox1.ItemIndex := ix; combobox1.SelStart := Length(Srch); combobox1.SelLength := (Length(combobox1.Text) - Length(Srch)); end; end; |
hab ihn aber noch nicht getestet. vielleicht hilfts dir weiter
mfg, stefan
UGrohne - Di 02.09.03 09:00
grayfox hat folgendes geschrieben: |
hallo UGrohne!
ich hab diesen beitrag mal gefunden: |
Danke, werd ich bei Gelegenheit demnächst mal ausprobiern.
hansa - Di 02.09.03 10:46
So würde das gehen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| DataSet.close; DataSet.SelectSQL.text := 'SELECT * FROM TELNRTABELLE WHERE NR LIKE (Edit1.Text + '%'') ORDER BY NR'; Dataset.open. Dateset.First; while not dataset.EOF do begin ListBox.Lines.add (....); Dataset.next; end; |
Und dann wie bereits gesagt in das OnChange-Event des Edits.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!