【发布时间】:2021-11-17 00:58:48
【问题描述】:
我在 MS Access 中有一个表单,顶部有 12 个按钮作为列标题。对于每个按钮,都有一个 On Click 事件,它调用相同的公共函数。此功能(如下所示)打开与单击的按钮对应的字段的过滤器菜单。
Public Function HeaderClick(HeaderName As String)
DoCmd.GoToControl "[" & HeaderName & "]"
DoCmd.RunCommand acCmdFilterMenu
End Function
我想知道是否有一种方法可以在单击任何这些按钮时调用HeaderClick。换句话说,我想要创建 12 个单独的 On Click 事件的替代方法。原因是这是我在许多数据库中的许多表单上使用的一种技术。只是看起来效率不高。
【问题讨论】:
-
您可以使用事件下沉。搜索一下,我会尽快尝试发布一些内容。
-
点击不总是将焦点设置在控件上吗?所以你不需要
DoCmd.GoToControl,你的函数可以完全通用。只需选择所有按钮并在 OnClick 事件属性中写入=HeaderClick()。 -
@Andre 如果焦点在按钮上,那么我无法调出适当的过滤器菜单。我实际上希望焦点位于按钮下方的文本框上。但你对第二部分是正确的。
-
啊,没错。但是如果可以自动从关联的按钮名称中获取文本框名称,可以使用
ActiveControl获取名称,就不需要这个参数了。 -
好点。我只需要为按钮使用标准命名约定或给每个按钮一个标签。