Im Menü-Editor der Visual Basic-Entwicklungsumgebung können Sie
den Menüpunkten ab der 2. Ebene Kurztasten zuweisen.
Allerdings stellt die Auswahlliste bei weitem nicht alle denkbaren
(und dennoch sinnvollen) Tasten und Tastenkombinationen zur
Verfügung.
Ihre eigenen Tastenkombinationen können Sie trotzdem in Menüs
einbringen und neben der Menübeschriftung anzeigen lassen: Hängen
Sie die Tastenbezeichnung einfach durch ein Tabulatorzeichen (vbTab)
zur rechtsbündigen Ausrichtung getrennt an die Menübeschriftung (Caption)
an. Die Hilfs-Prozedur ShowMenuKey (im Modul modShowMenuKey des
Beispielprojekts) vereinfacht das Anhängen und ermöglicht auf
einfache Weise das Ändern der Tastenbezeichnung und gegebenenfalls
das Entfernen derselben.
Sie übergeben im ersten Parameter das betreffende Menü-Element.
Zum erstmaligen Anhängen der Tastenbezeichnung oder zum Ändern
übergeben Sie diese im zweiten Parameter. Dieser zweite Parameter
ist optional - lassen Sie diesen weg oder übergeben Sie lediglich
einen leeren String, wird die Tastenbezeichnung einschließlich des
trennenden Tabulatorzeichens entfernt.
Public Sub ShowMenuKey(Menu As Menu, Optional KeyText As String)
Dim nPos As Integer
With Menu
nPos = InStr(.Caption, vbTab)
If nPos Then
If Len(KeyText) Then
.Caption = Left$(.Caption, nPos) & KeyText
Else
.Caption = Left$(.Caption, nPos - 1)
End If
ElseIf Len(KeyText) Then
.Caption = .Caption & vbTab & KeyText
End If
End With
End Sub
 |
Die Prozedur

|
Im folgenden Beispielprojekt wird zum einen der Menüpunkt
"Beenden" im Datei-Menü mit der Tastenbezeichnung "Alt+F4"
versehen - diese Beschriftungsmöglichkeit unterschlägt der
Menü-Editor. Zum anderen wird im Menü "Extras" der
Menüpunkt "Test" mit der Tastenbezeichnung "Umsch+Strg+Alt+A"
versehen - derartige Tastenkombinationen mit drei Umschalttasten
sieht der Menü-Editor ebenfalls nicht vor.
Private Sub Form_Load()
ShowMenuKey mnuExit, "Alt+F4"
ShowMenuKey mnuExtrasTest, "Umsch+Strg+Alt+A"
End Sub
Um die Tastenkomination "Alt-F4" zum
Beenden der Anwendung brauchen Sie sich nicht weiter zu kümmern -
die Reaktion darauf ist ja Windows-Standard und somit bereits
"eingebaut". Auf ihre eigenen Tastenkombinationen müssen
Sie jedoch selbst per Code reagieren - das Click-Ereignis eines auf
diese Weise mit einer Tastenbezeichnung versehenen Menüpunktes wird
nicht automatisch beim Betätigen dieser Tastenkombination
ausgelöst. Setzen Sie dazu die Eigenschaft KeyPreview des Forms auf
True. Dann können Sie im KeyDown-Ereignis des Forms auf Ihre
spezielle n Tastenkombinationen reagieren:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyA
If Shift = vbShiftMask + vbCtrlMask + vbAltMask Then
KeyCode = 0
MsgBox "Umsch+Strg+Alt+A"
End If
End Select
End Sub

|