设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1894|回复: 3
打印 上一主题 下一主题

[Access本身] 自定义功能区三板斧(三):掏耳朵

[复制链接]
跳转到指定楼层
1#
发表于 2015-12-22 13:36:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
       掏耳朵,当然是一个看起来很寻常的动作,不过,一旦将掏耳朵的动作化用到板斧的招式上,那就是一个强大的杀招了。与此对应的是,将知识转为能力的过程。

通过前面两节的学习,我们对自定义功能区算是有了一个初步了解了。所以,这一节我们开始放弃改造标准功能区的方法,而是通过写XML代码来创建写自己的功能区。我们先来贴一段代码:
  1. <customUIxmlns="http://schemas.microsoft.com/office/2009/07/customui">
  2. <ribbon startFromScratch="true">
  3. <tabs>
  4. <tab id="h" label="myTab"visible="true">
  5. <group id="k" label="myGroup">
  6. <button id="l" label="不准点这里" imageMso="CreateTable" size="large" supertip="点我我会生气的哦" onAction="test"></button>
  7. </group>
  8. </tab>
  9. </tabs>
  10. </ribbon>
  11. </customUI>
复制代码
由于使用的是自定义控件,因此,这次我们用了id来识别,这是和之前不太一样的地方。另外,我们还注意到,这里在按钮里加了一个onAction

我们把这段代码贴到替换掉之前的代码,关闭再打开文件(以下称“重新打开”),就可以看到文件只剩下一个tab了。如果这时候点击按钮的话,会弹出错误提示。——因为我们还没定义test。
我们先来创建一个宏看看怎么样?
由于文件会自动加载自定义功能区,因此我们需要再次关闭文件,按下shift键双击文件,以便绕过去而使用标准功能区。
点击“创建/宏”在下拉选框中选择“messagebox”,在消息参数里输入:“功能区,我来了!”,保存,在弹出的名称中输入“test”。
重新打开文件,这时候,我们再点击按钮,如预期一般,弹出了消息。
既然可以在功能区里可以执行宏,我们没理由不会想到,以前使用按钮完成的一些操作,例如导出某个查询的数据等等,是不是可以考虑通过这个来完成呢?
答案从理论上讲当然是可以的,前提是你必须要写好宏。
我们知道,宏能解决的问题相当有限,不少操作还是需要写函数的,这时候就需要宏里的杰出代表RunCode出马了。大家可以试试:
新建一个模块,写一个function【注意,执行RunCode宏时sub子过程往往会出错】。
  1. Function msg()
  2.          MsgBox “功能区,我又来了!”
  3. End Function
复制代码
删掉之前的MessageBox,在下拉选框中选择的宏RunCode,在参数栏输入:msg()

当函数较多的时候,每个函数都写一个RunCode来调用,显然挺麻烦的。那么能不能直接调用函数呢?我们把之前的test改为onAction=”msg”或者msg()”试试看?

如果我没猜错的话,应该又是很不幸地出错了。为什么呢?因为功能区只能接受宏或者回调函数。这是一个普通函数,而不是回调函数。

按我的理解,这里的回调函数,是将控件作为参数传递给函数,然后再调用该函数来执行操作。简单点说,点击按钮之后,就告诉函数,别人点我了,你给我出出气,函数接到信息之后就去说,按钮是我的小弟,你点它就是点我。这次弹个窗就算了,要是下次还这样……我继续弹个窗。
这时候我们引用Office15.0库(其它版本应该是12或者14),把上述的函数改为:
  1. Function t msg (ByVal control As IRibbonControl)
  2.     MsgBox “功能区,我就来了,又怎样?你的ID是:”& control.id
  3. End Function
复制代码
把onAction改为onAction=”msg”,执行一下,看看是不是成功了?

需要注意的是,回调函数是必须在模块上创建的,也就是说,窗体级别上创建的函数是不能被调用的
不过反过来倒是可以的,即在窗体上使用自定义功能区。在设计模式下,右击,依次选择属性,窗体,其它,在“功能区名称”里选择需要的功能区即可。
-----------------附件更新 2015-12-23 增加宏的测试。
说明:默认情况下是加载本系列第一个帖子的功能区,即隐藏“开始”选项卡和“导出”组。打开窗体后加载本文的功能区。

回调函数讲完之后,自定义功能区算是讲完的了,剩下的靠大家自行体会。如果需要进一步学习,可以考虑往Access加载项方向钻研。
不过,似乎还有些意犹未尽,如果后面有时间的话,我会把之前的一个例子做些改造,用来分配用户权限。

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享分享 分享淘帖 订阅订阅
2#
发表于 2015-12-22 15:59:41 | 只看该作者
很不错,  学习了, 辛苦, 谢谢分享.
3#
发表于 2015-12-22 20:38:26 | 只看该作者
eeee
回复

使用道具 举报

4#
发表于 2017-7-19 09:14:21 | 只看该作者
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-29 21:47 , Processed in 0.082017 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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