【发布时间】:2018-03-23 06:27:10
【问题描述】:
1) 我有一个带有一些按钮的表单(它在 Access 中,但我想它也适用于 Excel)。
2) 我有一个自定义类可以帮助我调试该表单(以及我可能添加的未来表单)。
该类仅在表单事件触发时进行记录,例如加载、卸载、脏、退出。
我希望该类能够在单击按钮时进行记录。
我知道这可以通过使用标准模块并在那里加载公共集合来完成。或者直接使用表单的事件。或者通过存储在表单后面的集合中。
但如果可能的话,我希望将它全部封装在我的调试类中。然后在我添加的每个新表单的 Form_Load 事件中添加简单的两行代码。
我在下面的简化尝试仅捕获添加到类集合中的 last 按钮的事件,即。按钮 3。
TestButtons(带有 Button1、Button2 和 Button3 的表单)
Private Buttons As CButtons
Private Sub Form_Load()
Set Buttons = New CButtons
Buttons.LoadButtons Me
End Sub
CButtons(类):
Public WithEvents btn As Access.CommandButton
Private AllButtons As Collection
Const MODE_DEBUG As Boolean = True
Public Sub LoadButtons(ByRef TheForm As Access.Form)
Dim ctl As Control
Set AllButtons = New Collection
For Each ctl In TheForm.Controls
If ctl.ControlType = acCommandButton Then
Set btn = ctl
btn.OnClick = "[Event Procedure]"
AllButtons.Add btn
End If
Next ctl
End Sub
Private Sub btn_Click()
If MODE_DEBUG Then debug.print btn.Name & "_Click"
End Sub
想知道有没有人给点建议,谢谢!
【问题讨论】: