禁用MS Access表单的“详细信息”部分中的所有控件

时间:2012-11-01 10:21:00

标签: vba ms-access ms-access-2010

我正在寻找一些命令,它将禁用MS Access窗体的“详细信息”部分中的所有控件。一种方法是独立地禁用每个控件。我正在寻找一种独立于控件的方法,它将禁用MS Access Form的详细信息部分中的所有控件。

如果要根据某些登录凭据启用表单,并且输入凭据的字段放在表单的标题部分中,则此功能可能很有用。因此,只要用户登录,就会启用该表单中的所有控件。 Uplon退出,他们将被禁用。

我尝试搜索它,但似乎不支持相同。或者之前没有人有这样的要求。

如果有人知道,请帮助我。

2 个答案:

答案 0 :(得分:4)

表单具有符合此要求的各种属性:允许编辑,允许添加和允许删除。允许编辑适用于未绑定的控件,它甚至适用于未绑定的表单。

如果您需要禁用某些控件,可以将这些控件的tab属性设置为字符串,然后遍历表单的控件集以禁用这些控件。

Dim frm As Form
Dim ctl As Control

Set frm = Forms!MyOpenForm

For Each ctl In frm.Controls

    If ctl.ControlType <> acLabel And ctl.ControlType <> acTabCtl Then
        If ctl.Tag = "AdminHide" Then
            If varWho = "Authorized" Then
                ctl.Visible = True
            Else
                ctl.Visible = False
            End If
        End If

    End If

Next

答案 1 :(得分:1)

您可以直接禁用详细信息部分中的所有控件,而无需使用标记:

Dim ctrl As Control
For Each ctrl In Detail.Controls
    If (TypeOf ctrl Is TextBox Or TypeOf ctrl Is ComboBox)
        ctrl.Enabled = False
    End If
Next

同样,您可以使用FormHeader.ControlsFormFooter.Controls来获取页眉和页脚中的控件。

我通常更喜欢使用ctrl.Locked = True而不是ctrl.Enabled = False,因为用户仍然可以从锁定控件中复制文本并对其使用文本过滤器,但这取决于您。