Einzelnen Beitrag anzeigen

Benutzerbild von Mamphil
Mamphil

Registriert seit: 17. Jul 2004
Ort: Garching b. München
149 Beiträge
 
Delphi 7 Professional
 
#2

Re: AutoComplete bei TComboBox?

  Alt 8. Mär 2005, 13:42
Hi!

Das ist zwar nicht mehr so aktuell... Ich habe zwar keine Lösung, aber ein Workaround gefunden:

1.) Beim onEnter der TComboBox wird die Liste aufgeklappt:
Delphi-Quellcode:
if WindowFromPoint(Mouse.CursorPos) <> ComboboxXYZ.handle then
  SendMessage(ComboboxXYZ.handle, CB_ShowDropDown, 1, 0);
Ist die Box aufgeklappt, wird bei der Eingabe die Groß- und Kleinschreibung der Listeneinträge beachtet.

2.) Will man die Box jetzt mit TAB verlassen, geht das nicht: Die Box muss erst wieder zugeklappt werden. Also wird beim onKeyDown überprüft, ob TAB gedrückt wurde:
Delphi-Quellcode:
procedure THauptform.ComboboxXYZKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = VK_TAB then
  begin
    SendMessage(ComboboxXYZ.handle, CB_ShowDropDown, 0, 0);
    NaechstesFormularelement.SetFocus;
  end;
end;
Die Sache hat nur einen Schönheitsfehler: Es ertönt jedesmal beim Verlassen der Fehler-Sound ("DING"). Vielleicht kennt da jemand Abhilfe oder eine geschicktere Lösung?

Mamphil

EDIT: Bei 1.) die if-Abfrage hinzugefügt: Ohne diese klappt die Box beim Anklicken sofort wieder zu
The laws of physics are the canvas God laid down on which to paint his masterpiece. “Leonardo Vetra” in Dan Brown’s “Angels & Demons”
  Mit Zitat antworten Zitat