Jim Dettman
jimdettman at verizon.net
Wed Feb 13 08:25:10 CST 2008
FWIW, see the code below. Besides checking for the section, you might
also want to put a tag in the tag property of each control as to whether or
not it should be locked. What you'll find on many forms is that some
controls need to remain unlocked. In my case, my standard form handler had
a control panel in the form header, which is why I did controls only in the
detail section.
And as John said, you need to have focus on another control before you can
disable or lock a control.
Note that the code below needs some cleanup (it's from my A2 days; what
can I say<g>). The object variables should be set to nothing, etc., but it
does work.
Jim.
Function StdLockForm(frm As Form, intState As Integer)
'Lock/unlock all the fields in the detail section of the form that are
enabled.
Dim intL As Integer 'Generic loop counter
Dim intCount As Integer 'Number of controls on the form
intCount = frm.Count 'Find out how many controls are on the
form
On Error Resume Next
For intL = 0 To intCount - 1 'Step thru all controls on the form
If (frm(intL).Section = False) Then 'Don't do any control execpt those
in the detail section
If (frm(intL).Enabled = True) Then frm(intL).Locked = intState
'Set 'Locked' property to proper state
End If
Next intL
On Error GoTo 0
End Function
Call examples:
Function LockForm(FormName As String)
Dim frm As Form
Set frm = Forms(FormName)
LockForm = StdLockForm(frm, True)
End Function
Function UnLockForm(FormName As String)
Dim frm As Form
Set frm = Forms(FormName)
UnLockForm = StdLockForm(frm, False)
End Function
-----Original Message-----
From: accessd-bounces at databaseadvisors.com
[mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Kath Pelletti
Sent: Tuesday, February 12, 2008 10:56 PM
To: Access D Normal List
Subject: [AccessD] Locking form controls 2003
Help please gurus.......trying to develop a routine which will lock (or
disable) controls on a form. (Access 2003)
I am getting error 438 'Object doesn't support this property or method' on
the line 'Select Case ctl.type'.
Any idea why? I am using code I have used in 2000. Can I no longer say
ctl.type?
See code below:
----------------------------------------------------------------------------
----
Code :
Public Function LockControls(strformname As String)
Dim frmIn As Form
Dim strerrormsg As String
Dim ctl As Control
'On Error GoTo Err_Handler
Set frmIn = Forms(strformname)
For Each ctl In frmIn.Controls
Select Case ctl.Type 'error
occurs on this line............
Case acTextBox: ctl.Locked = True
End Select
Next
Normal_exit:
DoCmd.SetWarnings True
Exit Function
Err_Handler:
MsgBox "Error: [" & Err.Number & "] " & IIf(Len(strerrormsg) > 0,
strerrormsg, Err.Description), vbCritical, "Error Message"
Resume Normal_exit
End Function
______________________________________
Kath Pelletti
Software Design and Solutions Pty Ltd
Ph: 9505-6714
Fax: 9505-6430
kp at sdsonline.net
--
AccessD mailing list
AccessD at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/accessd
Website: http://www.databaseadvisors.com