Entwickler-Ecke
Datenbanken - In aufgeklappter DBComboBox mit Pfeiltasten navigieren?
Aadelbert - So 26.12.10 15:28
Titel: In aufgeklappter DBComboBox mit Pfeiltasten navigieren?
Hallo,
ich habe in meiner DB-Anwendung zahlreiche DBComboBoxen verwendet. In der Box stehen die Daten aus mindestens zwei DB-Feldern einer Tabelle (Felder: ID, Bezeichnung).
Die Auswahl aus der Box klappt mit der Maus oder mit etwas Übung mit der Eingabe des ID-Wertes und ist auch so im Handbuch beschrieben.
Ein Kunde möchte die Box mit Alt + irgendetwas öffnen und die Auswahl dann mit den Pfeiltasten vornehmen, weil ihm der Wechsel zwischen Tastatur und Maus zu umständlich ist. Er ist offensichtlich nicht zum Lesen des Handbuches zu bewegen.
Ein Aufklappen der Box ist sicher sinnvoll.
Ich habe jetzt z.B. bei einer DBComboBox die Eigenschaft AutoDropdown auf True gesetzt, die Eigenschaft Style steht auf csDropDownList.
Jetzt kann ich zwar die DBComboBox zur Laufzeit auf Druck irgendeiner Taste öffnen aber nicht mit den Pfeiltasten rauf oder runter navigieren. Mit der Eingabe der voranstehenden ID-Wertes kann ich zwar den Eintrag in ein weiteres Datenfeld übernehmen.
Wie kann ich aber zusätzlich mit den Pfeiltasten nach oben oder nach unten navigieren?
Ich bin für jeden Tipp dankbar.
platzwart - So 26.12.10 15:44
Hmm... eventuell im OnKeyPress die gedrückte Taste auslesen und entsprechend reagieren? Keine Ahnung, wie das bei den Kompos ist, ist mir bloß so spontan eingefallen...
Tankard - So 26.12.10 16:30
Hi,
also bei mir geht das direkt von hause aus. wenn du die DBComboBox aufklappst, hat sie dann den fokus?
sonst nach dem aufklappen mal einfach dBComboBox.SetFocus aufrufen. dann sollte es klappen.
Gruss
Tankard
ps: also pfeiltasten rauf/runter.
bummi - So 26.12.10 16:39
Ich kann das beschriebene Verhalten auch nicht nachvollziehen, aber das was Du beschreibst klingt für mich als ob Du einer DBLookupupcombobox verwenden solltest, oder habe ich ich etwas falsch verstanden.
Aadelbert - So 26.12.10 19:32
Ich habe das folgendermaßen gelöst:
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: 30: 31: 32: 33: 34: 35: 36:
| procedure TBTMZU.DBComboBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var DBCB : integer; DBCBMax : integer; DBCBNeu : integer; DBCBCount : integer; begin DBCBCount := DBComboBox1.Items.Count;
if key = VK_UP then begin DBCB := DBComboBox1.ItemIndex; DBCBNeu := DBCB -1; DBComboBox1.ItemIndex := DBCBNeu; if DBComboBox1.ItemIndex = 0 then begin DBCBNeu := 0; DBComboBox1.ItemIndex := 0; end; end;
if key = VK_Down then begin DBCB := DBComboBox1.ItemIndex; DBCBNeu := DBCB +1; DBComboBox1.ItemIndex := DBCBNeu; if DBComboBox1.ItemIndex = DBCBCount then begin DBCBNeu := DBCBCount; DBComboBox1.ItemIndex := DBCBCount; end; end;
end;
AutoDropDown := true; |
Mit allen alphanummerischen Tasten kann ich die DBComboBox öffnen, mit den Pfeiltasten navigieren und mit der Entertaste den gewählten Eintrag in die Datenfelder übernehmen.
Platzwart: Danke für Deinen Tipp
Moderiert von
Martok: Delphi-Tags eingefügt
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!