Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB4/32,VB5,VB6
Expertise: Intermediate
Apr 20, 1999

Determine how a control got the focus

At times it might be convenient to know how a given control got the focus, namely by means of the Tab key, an associated hotkey or a click of the mouse. You can learn this information through the GetKeyState API function, that returns the current state of a key. Here is a simple function that is meant to be called from within the GotFocus event of a control

Private Declare Function GetKeyState Lib "user32" Alias "GetKeyState" (ByVal _
    nVirtKey As Long) As Integer

Function GotFocusMethod() As Integer
    If GetKeyState(vbKeyTab) < 0 Then
        If (GetKeyState(vbKeyShift) < 0) Then
            ' Shift-Tab key is pressed
            GotFocusMethod = 4
        Else
            ' Tab key is pressed
            GotFocusMethod = 1
        End If
    ElseIf GetKeyState(vbKeyMenu) < 0 Then
        ' Alt key is pressed (hotkey activation)
        GotFocusMethod = 2
    ElseIf GetKeyState(vbLeftButton) < 0 Then
        ' mouse left button is pressed
        GotFocusMethod = 3
    End If
End Function
This function returns 1 if the control got the focus by mean of the Tab key, 2 if a hotkey was pressed, 3 if the mouse was clicked, 4 if Shift-Tab was pressed, 0 if it cannot determine the method used (probably programmatically through a SetFocus method).

Thanks to Scott B. Kardos for adding the code that tests the Shift-Tab key.

Francesco Balena
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date