KeyPreview

06/11/2008 - 08:23 von Lothar Geyer | Report spam
Wenn ich in einer Maske KeyPreview auf True setze, dann erhalte ich (lt.
Hilfe) alle Keyboard-Events zuerst in der Form, dann bei den Controls.
Und dann offenbar in einem MDIform-Menü.

Habe ich KeyPreview=False und keinerlei Event-Routinen definiert, dann
kann ich in meinem Programm mit F3 eine Suchmaske öffnen, da das so im
Menü der MDIform definiert ist.

Wenn ich nun KeyPreview=True setze und in Form_KeyPress auf vbKeyDelete
reagiere, dann sollte das doch keinerlei Auswirkungen auf F3 haben,
oder? Hat es aber - der Event wird anscheinend nicht weitergereicht. Ist
das so gewollt oder wo könnte ich mir da einen Fallstrick eingebaut haben?

Lothar Geyer
 

Lesen sie die antworten

#1 Christian Zimmermann
06/11/2008 - 09:30 | Warnen spam
Hallo Lothar,

Lothar Geyer schrieb:
Wenn ich in einer Maske KeyPreview auf True setze,



du sprichst von einer MDI-Child Form?

dann erhalte ich (lt.
Hilfe) alle Keyboard-Events zuerst in der Form, dann bei den Controls.
Und dann offenbar in einem MDIform-Menü.

Habe ich KeyPreview=False und keinerlei Event-Routinen definiert, dann
kann ich in meinem Programm mit F3 eine Suchmaske öffnen, da das so im
Menü der MDIform definiert ist.

Wenn ich nun KeyPreview=True setze und in Form_KeyPress auf vbKeyDelete
reagiere, dann sollte das doch keinerlei Auswirkungen auf F3 haben,



Korrekt. vbKeyDelete (Entf.: KeyCode = 46) kommt nàmlich niemals in
KeyPress an, sondern nur in KeyDown und KeyUp :-) Vielleicht
verwechselst du das mit Backspace (vbKeyBack).

oder? Hat es aber - der Event wird anscheinend nicht weitergereicht. Ist
das so gewollt oder wo könnte ich mir da einen Fallstrick eingebaut haben?



Ich kann das nicht nachvollziehen. Evt. postest du mal deinen Code.
Vielleicht ist die Ursache ein bestimmtes Control. Wenn du ein neues
MDI-Projekt mit lediglich einem Menü(unter)eintrag und eine
MDI-Child-Form mit KeyPreview = True anlegst, wird selbst wenn du
KeyCode = 0 im Form_KeyDown-Ereignis setzt, der F3-Shortcut ausgeführt,
da das F3 beim MDI-Child erst gar nicht ankommt. Es wird vom MDI-Parent
abgefangen und ausgeführt.

Hast du eventuell ein separates Menü in der MDI-Child-Form welches das
Parent-Menü ersetzt?

Gruß

Christian

Ähnliche fragen