复选框使标签可见

时间:2018-08-01 14:10:09

标签: ms-access

我有三个组合框-选中它们后,我希望它选中复选框。

如果选中该复选框,则“文本”框将变为“启用”,我目前将其设置为“禁用”。

我的问题是,当选择了三个组合时,如何将复选框设置为true。

我将如何做,以便在勾选框为true时启用tex框

enter image description here

3 个答案:

答案 0 :(得分:3)

设置所有3个组合框后,将启用该复选框。更新任何组合框的值后,它将调用一个通用函数,该函数检查是否所有组合框都分配了值并相应地设置了复选框。

Private Sub cmbClientContact_AfterUpdate()
   Call SetCheckBox
End Sub

Private Sub cmbClientName_AfterUpdate()
    Call SetCheckBox
End Sub

Private Sub cmbProjectManager_AfterUpdate()
    Call SetCheckBox
End Sub

Private Sub SetCheckBox()
     If Nz(Me.cmbClientContact, "") <> "" And Nz(Me.cmbClientName, "") <> "" And Nz(Me.cmbProjectManager, "") <> "" Then
        Me.Check25 = True
        Me.Text27.Enabled = True
     Else
        Me.Check25 = False
     End If
End Sub

启用/禁用复选框的文本框基值

Private Sub Check25_AfterUpdate()
    If Nz(Me.Check25, False) Then
        Me.Text27.Enabled = True
    Else
        Me.Text27.Enabled = False
    End If
End Sub

答案 1 :(得分:3)

我建议使用所有3个组合框的AfterUpdate事件。由于代码将是相同的(您要检查所有3个组合框是否都有值),因此可以创建一个函数来处理检查,并将该功能设置为所有3个组合的AfterUpdate事件表单加载时显示框。

用于更新控件(文本框和复选框)的功能如下:

  Private Function UpdateControls()
     Me.Text1.Enabled = Not (IsNull(Me.Combo1) Or IsNull(Me.Combo2) Or IsNull(Me.Combo3))
     Me.Check1.Value = Not (IsNull(Me.Combo1) Or IsNull(Me.Combo2) Or IsNull(Me.Combo3))
  End Function

您可以在最初加载表单时调用此函数,因此将取消选中该复选框,并且将禁用文本框:

  Private Sub Form_Load()       
     ' update controls initially when the form loads
     UpdateControls
  End Sub

要确保每次更新组合框的值之一时都发生相同的更新,可以将每个组合框的AfterUpdate事件设置为相同的函数,如下所示:

  Private Sub Form_Load()
     ' set each combo box's AfterUpdate event to run the check
     Me.Combo1.AfterUpdate = "=UpdateControls()"
     Me.Combo2.AfterUpdate = "=UpdateControls()"
     Me.Combo3.AfterUpdate = "=UpdateControls()"
  End Sub

所以您的最终代码可能是这样的:

  Private Sub Form_Load()
     ' set each combo box's AfterUpdate event to run the check
     Me.Combo1.AfterUpdate = "=UpdateControls()"
     Me.Combo2.AfterUpdate = "=UpdateControls()"
     Me.Combo3.AfterUpdate = "=UpdateControls()"

     ' update controls initially when the form loads
     UpdateControls
  End Sub

  Private Function UpdateControls()
     Me.Text1.Enabled = Not (IsNull(Me.Combo1) Or IsNull(Me.Combo2) Or IsNull(Me.Combo3))
     Me.Check1.Value = Not (IsNull(Me.Combo1) Or IsNull(Me.Combo2) Or IsNull(Me.Combo3))
  End Function

答案 2 :(得分:2)

在不了解有关对象名称模式的更多细节的情况下,这是我的含糊不清的答案:

(很多)选项之一是使用On Click事件过程,其内容如下:

If Not IsNull(Me.Combo1) _
And Not IsNull(Me.Combo2) _
And Not IsNull(Me.Combo3) Then
    Me.Check1 = True
    Me.Text1.Enabled = True
Else
    Me.Check1 = False
    Me.Text1.Enabled = False
End If

这假定复选框名为Check1,文本框名为Text1,组合框为Combo1Combo2Combo3

您的意思是Enabled还是Visible有点令人困惑,但是如果您的意思是Visible,只需将.Enabled的行更改为.Visible