Office中国论坛/Access中国论坛
标题:
右键调用系统菜单小技巧
[打印本页]
作者:
roych
时间:
2016-9-30 14:22
标题:
右键调用系统菜单小技巧
前几天,我们群里几个大神在聊如何右键调用系统菜单。
红尘【对,就是那个已经消失很久了的大神“红尘如烟”】说,希望可以通过右键调用一些系统菜单,例如,自动筛选之类。
我的第一反应是,用shortcut属性。不过红尘早就试过了。如果使用shortcut,那么这个菜单应该是全局菜单。也就是说,所有窗体都会有这个菜单。
既然shortcut不行,那ribbon怎么样?通过ribbon在单独的窗体使用?不过也被否决了,因为这个跟ribbon没有半毛钱关系,菜单在工具栏里,属于commanbars属性。
这也不行那也不行,我干脆闭嘴好了。等站长说话。王站说,这个嘛(这时候,我估计他是下意识地往下巴捻了一下,然后发现没有美髯
),只能在2003版本设置好了再升级到新版本了。
事情本来到此为止了。不过不知道怎么今天突然想起这件事,便去钻牛角尖了。
先用宏创建菜单,再从属性里调用快捷菜单,不过失败了。因为在原先的当前数据库里禁用系统菜单之后(见附图),就失效了。
[attach]60037[/attach]
既然这个行不通,那只能选择在控件上处理了。一看,单击事件、双击事件…右击事件?对不起,好像没有这个事件。
不管了,先试试双击事件吧。
为了测试效果,我先在加载事件中禁止筛选,这样的话,单击就没法弹出筛选的快捷菜单了。然后在双击事件中允许筛选,并调用系统的筛选菜单。结果?当然是……成功啦。小伙伴们,一起欢呼吧!
Private Sub Form_Load()
Me.Form.AllowFilters = False
End Sub
Private Sub 部门_DblClick(Cancel As Integer)
Me.Form.AllowFilters = True
DoCmd.RunCommand acCmdFilterMenu
End Sub
Private Sub 部门ID_DblClick(Cancel As Integer)
Me.Form.AllowFilters = True
DoCmd.RunCommand acCmdFilterMenu
End Sub
复制代码
不过双击总是麻烦一点的。我们不妨从另一个角度来“技术处理”下,看看能不能代替“右击事件”。——泥萌肯定猜对了,是的,那就是鼠标释放事件(事实上,使用按下事件也是可以的,不过我喜欢用释放事件)。代码跟前面差不多,就不贴啦。详细看附件吧。
[attach]60038[/attach]
[attach]60039[/attach]
PS:这个版本的2003格式如果不能用(我这里是另存为2000版本的,不知道
宏名称
会不会相应改过来),麻烦将里面的SubMacro改为AddMenu再试试(如果再不行,估计只能通过“用宏生成菜单”来处理了)。
针对红尘的问题,试了下用宏生成菜单,不过似乎不是那么好使,大家可以继续测试。
[attach]60040[/attach]
作者:
tmtony
时间:
2016-9-30 14:25
好方法,赞一个!
作者:
红尘如烟
时间:
2016-9-30 15:05
感谢Roy!让我们又学到一招,我确实还不知道acCmdFilterMenu这个菜单命令。
我其实想要实现的是把筛选菜单和自定义菜单结合,即在右键菜单上,即有筛选菜单,又有自定义的菜单。
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3