Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: Visual Basic
Expertise: Beginner
Oct 24, 2001



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Lock Controls, Don't Disable Them

You should lock controls (that have the .locked property) rather than setting .enabled = false.

Why? Grey text in a disabled field is less readable. Also, blank fields give no indication that they are disabled, since there is no text to make gray. Disabling a control also disables the mouseover and tooltip properties, which may be useful to have at all times. If you wish to permit the user to select and copy text (but not write) from a field, disabling it prevents this usage.

Preferred method is to lock controls which have the .locked properties and change the background color to a light gray or light pastel color. Leave the foreground color black (this is a visual indication that the field is locked and not editable, but is still quite readable). This prevents user frustration from trying to tab to or click on empty fields and finding they are disabled.

Try using this routine:
Public Sub LockControl(cc As Control, LockedFlag As 
    'locks given control (changes .locked, .tabstop, 
    Const kLockedBackcolor = &HC0C0C0
    Const kUnlockedBackcolor = &HFFFFFF
    On Error GoTo ErrTrap
    If LockedFlag Then
        cc.Locked = True
        cc.TabStop = False
        cc.BackColor = kLockedBackcolor
        cc.Locked = False
        cc.TabStop = True
        cc.BackColor = kUnlockedBackcolor
    End If
    Exit Sub
    Resume 'debug only
    If Err = 380 Then Resume Next   'Invalid property 
value, some controls don't have property
    MsgBox Err & " " & Error & " in lockcontrol "

End Sub
Patrick Marshall
Comment and Contribute






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



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