|
Eine direkte Unterscheidungsmöglichkeit, ob eine Schaltfläche mit der Maus angeklickt, oder ob sie per Tastatur (Enter-Taste) ausgelöst worden ist, wird von Visual Basic nicht angeboten. Die einzige Change besteht darin, gleich zu Beginn der Click-Ereignisprozedur den Zustand der beiden auslösenden Tasten zu prüfen. Sind sie noch niedergedrückt, erfolgte die Auslösung nach allerhöchster Wahrscheinlichkeit per Tastatur.
Die Prüfung des Tatstatur-Status nehmen Sie mittels der API-Funktion GetAsyncKeyState vor - Details dazu finden Sie unter "Gedrückte Tasten". Die notwendigen Aufrufe können Sie zum bequemeren Aufruf aus einer Click-Ereignisprozedur heraus in eine handliche Funktion packen:
Private Declare Function GetAsyncKeyState Lib "user32" _
(ByVal vKey As Long) As Integer
Public Function CommandKeyClick() As Boolean
CommandKeyClick = _
CBool((GetAsyncKeyState(vbKeyReturn) And &H8000) = &H8000)
End Function
Eine Prüfung in einer Click-Ereignisprozedur sähe beispielsweise so aus:
Private Sub Command1_Click()
If CommandKeyClick() Then
MsgBox "Click per Enter-Taste"
Else
MsgBox "Click per Maus"
End If
End Sub
|