Autor Beitrag
Aadelbert
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 90

XP, WIN 2000, NT 4.0
D6 Enterprise
BeitragVerfasst: So 26.12.10 15:28 
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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: 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...

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
Tankard
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Administrator
Beiträge: 217
Erhaltene Danke: 96



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: 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.

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Aadelbert Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 90

XP, WIN 2000, NT 4.0
D6 Enterprise
BeitragVerfasst: So 26.12.10 19:32 
Ich habe das folgendermaßen gelöst:

ausblenden volle Höhe 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.

Zitat:
@
Platzwart: Danke für Deinen Tipp

Moderiert von user profile iconMartok: Delphi-Tags eingefügt