Autor Beitrag
motion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 295

XP, Linux
D7 Prof
BeitragVerfasst: Mi 28.09.05 20:56 
Ich muss in einer Application eigene Steuerungen mittels Cursortasten etc. implementieren. Ist ja bei den normalen TEdit Feldern kein Problem dieses mittels OnKeydown zu erreichen.
Nur in den Tcheckboxen feuert das OnKeydown Ereignis nicht auf z.B. die Cursortasten.
Hintergrund scheint mir zu sein, das bei Checkboxen mittels der Cursortasten selbsttätig der Focus gewechselt wird (innerhalb der Tabreihenfolge).
Deshalb ist der Focus bei Checkboxen auf einem Panel wohl auch darin gefangen, wenn man die Cursortasten benutzt (mit der Tab Taste kommt man aus dem Panel raus).
Okay, zurück zum Thema: Gibt's einen Tip, um an die richtigen Keydown Events von Checkboxen zu kommen?
Auf Formularebene nützt es mir leider nichts, da ich die Implementation innerhalb einer abgeleiteten TCheckbox Komponente vornehmen muss.

[Edit]: Ich meinte hier natürlich OnKeydown, nicht OnKeypressed (denn der feuert bei den Cursortasten ja sowieso nicht)


Zuletzt bearbeitet von motion am Do 29.09.05 20:35, insgesamt 1-mal bearbeitet
motion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 295

XP, Linux
D7 Prof
BeitragVerfasst: Mi 28.09.05 21:03 
kleiner Nachtrag noch:
OnKeyUp feuert schon, allerdings ist es da schon zu spät, weil das Herunterdrücken der Cursortaste den Focus bereits nach Willen der Checkbox verschoben hat. Ich sehe hier also keine Möglichkeit einzugreifen, um die Navigation selbst abzugreifen.
motion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 295

XP, Linux
D7 Prof
BeitragVerfasst: Do 29.09.05 20:50 
Ich habe noch mal etwas recherchiert und in einem englischen Forum folgendes gefunden:
"Not all controls will get all keys. Buttons, for example,
(and a checkbox is a kind of button for Windows), will not
get navigation keys like arrows or Tab. If such a key is
not processed by the active control it will end up in the
guise of a CM_DIALOGKEY message on the form level, and the
form handles navigation between controls in its handler for
this message. So if your controls are in the correct
taborder you have to do nothing to get navigation between
controls via arrow keys or Tab/Shift-Tab."

Hmmm, bestätigt meine Beobachtung, löst aber mein Problem leider nicht. Wenn der Form Navigation Handler bloss so funktionieren würde, wie ich ihn brauche. Cursor up/down soll den Focus vor/zurück bewegen (wie Tab/Shift-Tab). Den normalen Wincontrols kann man ja beim OnKeyDown leicht auf die Füsse helfen.
Cursor up/down funktioniert ja bei den Checkboxen bereits automatisch. Auch schön das ... nur wenn die Checkboxen auf einem Panel sitzen, bleibt der Focus durch Cursor up/down auf diesem Panel gefangen (was für Tab/Shift-Tab nicht gilt).
Dieses Problem muss ich aufbrechen, aber ich habe immer noch keinen Angang dafür.