代码之家  ›  专栏  ›  技术社区  ›  Samuel Hulla

是否有方法检测用户是否单击了禁用的按钮?

  •  1
  • Samuel Hulla  · 技术社区  · 6 年前

    嘿,我有一个用户表单,用户可以在其中输入各种配置文件 领域。

    一旦填好了,就有了验证——如果有什么误入歧途, 这个 CommandButton ,命名为 save_button 已禁用

    我想实现的是 :如果用户在处于禁用状态时单击按钮,则显示 MsgBox 说他需要改正填错的字段


    出于演示的目的,我不想在这里粘贴验证过程,所以我们假设 save_button.Enabled = False 从一开始就设定好了。产生相同的结果。

    save_button.Enabled = False ' already ran before, pretend this executes it
    Private Sub save_button_Click()
        If save_button.Enabled = False Then
            MsgBox "Clicked disabled button"
        End If
    End Sub
    

    问题是,一旦commandbutton设置为 .Enabled = False 然后它就不能再被官方点击(因此它甚至不能触发 Click() 程序)


    我的下一个想法是使用 MouseUp 作为替代品。问题是, 这会触发按钮上的任何微小移动,我不想用 消息框


    enter image description here

    对于如何检测用户是否单击了禁用按钮,您能想出其他方法吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Sam    6 年前

    当控件被禁用时,单击事件将在树上弹出。在您的情况下,我想用户表单将获得点击。如果您将保存按钮放在一个框架内,则如果该按钮被禁用,将获得单击。通过设置,很容易使框架不可见

    • 标题到“
    • borderStyle到fmborderStylenone
    • 对FmSpecialeffect平台的特殊影响

    然后调整帧的大小,使其与按钮的大小相同。 代码很简单:

    Private Sub YourNewFrame_Click()
        MsgBox "Save button disabled!"
    End Sub
    

    提示:如果你画了框架,剪下你的按钮并粘贴到你的新框架内,它将被正确地放置。正确的,如在层次结构的正确部分。从视觉上看,你必须手动操作。

        2
  •  1
  •   Scott Holtzman    6 年前

    我想根据我对你问题的评论提出另一种方法。

    在下面的gif中,您将看到在提供所有必要信息之前,“创建表单”不会启用。您在gif中看不到它,但是每个需要验证的条目在代码中都有它的后台。

    enter image description here

    这一行动背后的基本准则是:

    Sub checkFields()
    
        Select Case True
    
            Case Len(Me.formTitleLine1) = 0, Len(Me.formPrefix) = 0, Len(Me.formNumber) = 0, Len(Me.formProduct) = 0, Len(Me.formEditionMonth) = 0, Len(Me.formEditionYear) = 0
                Me.createForm.Enabled = False
            Case Else
                Me.createForm.Enabled = True
        End Select
    
    End Sub
    

    它被召唤到 afterUpdate 每个相关方框的事件:

    Private Sub formEditionYear_AfterUpdate()
    
        checkFields
    
    End Sub
    

    只需对checkfields子项进行一个小的更改,就可以在正确填写所有内容后显示save按钮。这一变化将是:

    Me.createForm.Visible
    

    而不是

    Me.createForm.Enabled