设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

ADP自定义功能区怎样加载回调函数

[复制链接]
跳转到指定楼层
1#
发表于 2014-1-14 09:57:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ADP设计好自定义功能区后,怎样通过回调函数打开窗体。

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2014-1-15 09:17:55 | 只看该作者
我将你的模块1改名为modRibbon
修改其内容为
  1. Public Function LoadRibbon() As Boolean
  2.     ' 从 xml 文件加载功能区
  3.     On Error GoTo Err_LoadRibbon
  4.     Dim fn As Long
  5.     Dim strText As String
  6.     Dim strOut As String
  7.    
  8.     fn = FreeFile       ' 获取一个文件号
  9.    
  10.     ' 打开当前工程文件夹中 AccRibbon.xml 文件
  11.     ' 该文件中存储功能区的 xml 代码
  12.     Open CurrentProject.Path & "\AccRibbon.xml" For Input As fn
  13.    
  14.     ' 按行读取并连接起来保存到 strOut 变量
  15.     Do While Not EOF(fn)
  16.         Line Input #fn, strText
  17.         strOut = strOut & strText
  18.     Loop
  19.     Close fn            ' 关闭文件

  20.     ' 加载功能区,其名称为 "Main"
  21.     Application.LoadCustomUI "Main", strOut

  22.     LoadRibbon = True

  23. LoadRibbon_Exit:
  24.    
  25.     Exit Function

  26. Err_LoadRibbon:
  27.     Select Case Err.Number
  28.         Case 32609
  29.             ' Ribbon already loaded
  30.             Debug.Print "功能区已经加载"
  31.         Case Else
  32.             MsgBox "Error: " & Err.Number & vbCrLf & _
  33.                Err.Description, vbCritical, _
  34.                "Error", Err.HelpFile, Err.HelpContext
  35.     End Select
  36.     Err.Clear
  37.    
  38.     GoTo LoadRibbon_Exit
  39. End Function
复制代码

点击这里给我发消息

3#
发表于 2014-1-15 09:19:43 | 只看该作者
你的xml文件的内容为
  1. <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" loadImage="CallBackLoadImage" onLoad="onRibbonLoad">
  2.         <ribbon startFromScratch="false">      
  3.                 <tabs>
  4.                         <tab id="tabMain" label="自定义">                                             
  5.                                 <group id="dbCustomGroup4" label="刷新">
  6.                                         <button idMso="DataRefreshAll" label="全部刷新" size="large" enabled="true"/>
  7.                                 </group>
  8.                                 <group id="grpMenu" label="自定义">
  9.                                         <button id="cmdMenu" label="打开窗体" size="large" imageMso="SlideMasterInsertLayout" onAction="onOpenFormEdit" tag="打开窗体"/>
  10.                                 </group>
  11.                         </tab>
  12.                 </tabs>
  13.         </ribbon>
  14. </customUI>
复制代码

点击这里给我发消息

4#
发表于 2014-1-15 09:30:57 | 只看该作者
在xml的第一行,指定了两个回调函数
loadImage="CallBackLoadImage" onLoad="onRibbonLoad"

loadImage指定功能区加载功能区中所使用的图片要使用的回调函数 CallBackLoadImage
onLoad指定功能加载时执行的回调函数 onRibbonLoad

第一个选项卡的名称为"tabMain",显示标签为“自定义”
在这个选项卡中有两个分组
"dbCustomGroup4"  刷新
"grpMenu" 自定义

在"grpMenu"选项卡中有一个"cmdMenu"(打开窗体)的按钮,其指定的回调函数名为"onOpenFormEdit"

点击这里给我发消息

5#
发表于 2014-1-15 09:50:25 | 只看该作者
这样,你必须在一个模块中编写全局的回调函数
例如,模块名为modCallBack
  1. Option Explicit

  2. Public Sub onRibbonLoad(ByRef Ribbon As IRibbonUI)
  3.     MsgBox "加载了功能区"
  4. End Sub

  5. Public Sub CallBackLoadImage(strImage As String, image)
  6.     MsgBox "加载功能区图片"
  7. End Sub

  8. Public Sub onOpenFormEdit(control As IRibbonControl)
  9.     MsgBox "you click id:" & control.id & " tag:" & control.Tag
  10.     DoCmd.OpenForm "窗体1"
  11. End Sub
复制代码

点击这里给我发消息

6#
发表于 2014-1-15 10:43:54 | 只看该作者



附件传上,自己细看

本帖子中包含更多资源

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

x
7#
 楼主| 发表于 2014-1-15 13:46:59 | 只看该作者
非常感谢朱总的实例。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-8 08:03 , Processed in 0.108872 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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