设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1937|回复: 2

[宏/菜单/工具栏] 右键调用系统菜单小技巧

[复制链接]
发表于 2016-9-30 14:22:56 | 显示全部楼层 |阅读模式
        前几天,我们群里几个大神在聊如何右键调用系统菜单。
        红尘【对,就是那个已经消失很久了的大神“红尘如烟”】说,希望可以通过右键调用一些系统菜单,例如,自动筛选之类。
        我的第一反应是,用shortcut属性。不过红尘早就试过了。如果使用shortcut,那么这个菜单应该是全局菜单。也就是说,所有窗体都会有这个菜单。
        既然shortcut不行,那ribbon怎么样?通过ribbon在单独的窗体使用?不过也被否决了,因为这个跟ribbon没有半毛钱关系,菜单在工具栏里,属于commanbars属性。
       这也不行那也不行,我干脆闭嘴好了。等站长说话。王站说,这个嘛(这时候,我估计他是下意识地往下巴捻了一下,然后发现没有美髯),只能在2003版本设置好了再升级到新版本了。

      事情本来到此为止了。不过不知道怎么今天突然想起这件事,便去钻牛角尖了。
      先用宏创建菜单,再从属性里调用快捷菜单,不过失败了。因为在原先的当前数据库里禁用系统菜单之后(见附图),就失效了。

        既然这个行不通,那只能选择在控件上处理了。一看,单击事件、双击事件…右击事件?对不起,好像没有这个事件。不管了,先试试双击事件吧。
        为了测试效果,我先在加载事件中禁止筛选,这样的话,单击就没法弹出筛选的快捷菜单了。然后在双击事件中允许筛选,并调用系统的筛选菜单。结果?当然是……成功啦。小伙伴们,一起欢呼吧!
  1. Private Sub Form_Load()
  2.     Me.Form.AllowFilters = False
  3. End Sub

  4. Private Sub 部门_DblClick(Cancel As Integer)
  5.     Me.Form.AllowFilters = True
  6.     DoCmd.RunCommand acCmdFilterMenu
  7. End Sub

  8. Private Sub 部门ID_DblClick(Cancel As Integer)
  9.     Me.Form.AllowFilters = True
  10.     DoCmd.RunCommand acCmdFilterMenu
  11. End Sub
复制代码
      不过双击总是麻烦一点的。我们不妨从另一个角度来“技术处理”下,看看能不能代替“右击事件”。——泥萌肯定猜对了,是的,那就是鼠标释放事件(事实上,使用按下事件也是可以的,不过我喜欢用释放事件)。代码跟前面差不多,就不贴啦。详细看附件吧。



PS:这个版本的2003格式如果不能用(我这里是另存为2000版本的,不知道宏名称会不会相应改过来),麻烦将里面的SubMacro改为AddMenu再试试(如果再不行,估计只能通过“用宏生成菜单”来处理了)。
针对红尘的问题,试了下用宏生成菜单,不过似乎不是那么好使,大家可以继续测试。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

点击这里给我发消息

发表于 2016-9-30 14:25:18 | 显示全部楼层
好方法,赞一个!
发表于 2016-9-30 15:05:50 | 显示全部楼层
感谢Roy!让我们又学到一招,我确实还不知道acCmdFilterMenu这个菜单命令。
我其实想要实现的是把筛选菜单和自定义菜单结合,即在右键菜单上,即有筛选菜单,又有自定义的菜单。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-3-29 20:32 , Processed in 0.092567 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表