如何简短代码以在命令对接上更改控制属性,单击MS-ACCESS VBA中



我有一个带有类似属性和fuctionality的命令按钮的用户形式。我正在使用这些按钮让用户跟踪他的活动。所以例如每当用户单击"生产"按钮时,应用标签将说"生产"模式,当用户按"断开"按钮时,标签将从"生产"模式更改为"断开"模式,同样我有7-8个按钮以相同的形式。其他条件是按下哪个按钮应禁用按钮,所有其他按钮都应启用,然后按下Next按钮,如果按下应将其禁用,并且应该启用以前按下的按钮。

已经按下的按钮也应更改其颜色,还应将上一个按钮的颜色更改为正常。

我知道很难理解场景,请检查以下我的一个按钮及其运行良好的代码。

Private Sub btn1()
    Me.Label78.Caption = Me.btn1.Caption
    Me.btn1.BackColor = RGB(250, 100, 100)
    Me.btn1.Gradient = 12
    Me.btn1.Enabled = False
    Me.btn2.Enabled = True
    Me.btn2.BackColor = RGB(100, 250, 100)
    Me.btn2.Gradient = 12
    Me.btn3.Enabled = True
    Me.btn3.BackColor = RGB(100, 250, 100)
    Me.btn3.Gradient = 12
End Sub

上面的代码效果完美,并将属性更改为3个按钮(其示例代码不是所有7个按钮的代码),但是我总共有7-8个按钮,将来可能会添加更多按钮所有7-8个按钮中的一个按钮中的代码类型,然后需要大量的时间和实用。

那么,简短此代码的最佳方法是什么?

我知道这很复杂,因此请询问是否需要更多信息。预先感谢!

您可以拥有一个辅助子功能:

Private Sub SetButton(ByVal ButtonId As Long, ByVal Enabled As Boolean)
    Dim BackColor As Long
    If Enabled Then
        BackColor = RGB(100, 250, 100)
    Else
        BackColor = RGB(250, 100, 100)
    End If
    With Me("btn" & Cstr(Id))
        .Enabled = Enabled
        .Gradient = 12
        .BackColor = BackColor
    End With
End Sub

然后在 onclick 事件中称呼:

For Id = 1 To 8
    Select Case Id
        Case 1, 2, 4, 7
            SetButton Id, True
        Case Else
            SetButton Id, False
    End Select
Next

最新更新