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: Visual Basic
Expertise: Intermediate
Aug 6, 1997

Cheap Focus Tracking

The Lost_Focus and Got_Focus events are the most-used events for implementing validation and text highlighting. Wouldn't it be nice to respond instantly to these events and to do it from a single routine for all controls without the aid of a subclassing control? Here's the answer. Place a timer control on your form, set its Interval property to 100 and set Enabled = True. Name the control tmrFocusTracking. Code its Timer event alike this:
 
Private Sub tmrFocusTracking_Timer()
        Dim strControlName As String
        Dim strActive As String
        strControlName = _
                Me.ActiveControl.Name

        Do
                strActive = Me.ActiveControl.Name
                If strControlName <> strActive _
                        Then
                        Print strControlName & _
                                " - Lost Focus", _
                                strActive & " - Got Focus"
                        strControlName = strActive
                End If
                DoEvents
        Loop
End Sub
To implement universal highlighting, replace the Print statement with this code:
 
Me.Controls(strActive).SelStart = 0
Me.Controls(strActive).SelLength = _
        Len(Me.Controls(strActive))
To implement validation, replace the Print statement with a call to a validation routine. Use strActive in a Select Case structure. At the moment where the Print statement would occur, strActive is equal to the control that just Got Focus, and strControlName holds the name of the control that just Lost Focus. Don't place this routine in anything but a timer; otherwise, your program hangs once the routine is called. Even the timer here never makes it to a second interval. For a given control, don't write validation code both in the Got_Focus/Lost_Focus events, and in code called by this routine. Doing so might cause unpredictable results.
John S.
 
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