Access中定义的Form / Report`Menu`事件(与OnMenu相关)在哪里?

时间:2017-02-27 10:27:48

标签: ms-access events access-vba

访问表单和报表支持OnMenu属性,该属性遵循其他表单/报表事件属性(如OnLoad)的命名约定和行为(其中OnLoad属性的值为{ {1}}会导致[Event Procedure]事件由带有签名Load的代码隐藏处理。)

但是,虽然在对象浏览器和表单/报表属性对话框中可以轻松识别Private Sub Report_Load()事件及其Load属性,但OnLoad的情况并非如此。对象浏览器中的OnMenu属性,但似乎在属性对话框中为"菜单栏",并且OnMenu事件无处可见。但是,如果我将公共函数的名称分配给Menu属性,则在打开报告时调用该函数:

OnMenu

但我也看到有一个Report_Report1.OnMenu = "=MyOnMenuCallback()" 属性,它似乎具有我分配给MenuBar相同的值....

编辑:似乎还有一个OnMenu属性可以触发事件,但该事件在对象浏览器中不可见,并且似乎不是ShortcutMenuBar属性?

这个OnShortcutMenu事件的定义在哪里?除了Menu属性之外,我无法在对象浏览器中找到任何内容。是否为真实的事件,我可以编写一个事件处理程序(如果我为OnMenu属性赋值OnMenu

1 个答案:

答案 0 :(得分:1)

OnMenu属性在Access 2.0及更高版本中基本上已弃用,并且仅在对象浏览器中显示,以便向后兼容Access 1.x.它从来不是一个事件,它是一个属性。在Microsoft Access 1.x中,您创建了特殊的宏来定义自定义下拉菜单和菜单项,然后将OnMenu属性设置为该宏名称。在Access 2.0到Access 2003中,您可以创建相同类型的自定义菜单宏,也可以使用GUI创建菜单栏或工具栏,并将它们分配给MenuBar属性。在Access 2007及更高版本中,在应用程序中提供自定义菜单或工具栏的正确方法是使用Ribbon XML创建custom Ribbons并放入USysRibbons表。

许多版本的Access的在线文档对于OnMenu条目具有误导性和错误。例如,看一下这个MSDN entry,它会让你相信OnMenu是一个Form或Report事件,但它不是,并且该文档中缺少的一条信息就是“如何”触发事件,因为它不是事件。点击那里的链接获取一些实际的Form事件,你会发现它们几乎是同一类型的条目,但它们包括关键的声明:

  

XXX事件发生在......

OnMenu的文档完全错误(遗憾的是,与Microsoft文档的太多内容一样)。

OnMenu视为在Access 2.0及更高版本中重命名为MenuBar,这就是为什么如果在代码中设置它,它会出现在GUI属性对话框的MenuBar条目中