devxlogo

Lock Controls, Don’t Disable Them

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 Boolean)    'locks given control (changes .locked, .tabstop, .backcolor)    Const kLockedBackcolor = &HC0C0C0    Const kUnlockedBackcolor = &HFFFFFF    On Error GoTo ErrTrap    If LockedFlag Then        cc.Locked = True        cc.TabStop = False        cc.BackColor = kLockedBackcolor    Else        cc.Locked = False        cc.TabStop = True        cc.BackColor = kUnlockedBackcolor    End If    Exit Sub    Resume 'debug onlyErrTrap:    If Err = 380 Then Resume Next   'Invalid property value, some controls don't have property    MsgBox Err & " " & Error & " in lockcontrol "End Sub

devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist