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