Home
Search
 
What's New
Index
Books
Links
Q & A
Newsletter
Banners
 
Feedback
Tip Jar
 
 
 
 
 
 
 
 
Old Pages
 
Old Index
Site Map
What's New
 
Books
How To
Tips & Tricks
Tutorials
Stories
Performance
Essays
Links
Q & A
New in VB6
Free Stuff
Pictures
 
 
 
TitleKeep track of the last control to have the focus
Keywordslast control, focus
CategoriesSoftware Engineering, Controls
 
This is handy, for example, if the program does something that moves the input focus and wants to restore focus the the last control the user selected.

The program uses form variables CurrentControl and LastControl to keep track. It updates them in every control's GotFocus event handler.

 
Private CurrentControl As Control
Private LastControl As Control

' Return a control's name.
Private Function ControlName(ByVal ctl As Control) As String
Dim ctl_name As String
Dim ctl_index As Integer

    If ctl Is Nothing Then
        ControlName = "-"
    Else
        ctl_name = ctl.Name
        On Error Resume Next
        ctl_index = ctl.Index
        If Err.Number = 0 Then
            ' No error. The control has an index.
            ctl_name = ctl_name & _
                "(" & Format$(ctl_index) & ")"
        End If
        ControlName = ctl_name
    End If
End Function

Private Sub ShowControls()
    lblCurrentControl.Caption = ControlName(CurrentControl)
    lblLastControl.Caption = ControlName(LastControl)
End Sub

Private Sub Text1_GotFocus()
    Set LastControl = CurrentControl
    Set CurrentControl = Text1
    
    ShowControls
End Sub

Private Sub Text2_GotFocus()
    Set LastControl = CurrentControl
    Set CurrentControl = Text2
    
    ShowControls
End Sub

Private Sub Text3_GotFocus(Index As Integer)
    Set LastControl = CurrentControl
    Set CurrentControl = Text3(Index)

    ShowControls
End Sub
 
You could extend this method, possibly using a collection, to keep track of more previously used controls.
 
 
Copyright © 1997-2003 Rocky Mountain Computer Consulting, Inc.   All rights reserved.
  Updated