WEB开发网
开发学院数据库Access 为Access2007创建一个应用程序级的自定义Ribbon 阅读

为Access2007创建一个应用程序级的自定义Ribbon

 2009-10-28 15:16:57 来源:WEB开发网   
核心提示:(二) 在运行时装载定制如果想在运行时装载静态的定制,则将这些定制存储在USysRibbons表中,为Access2007创建一个应用程序级的自定义Ribbon(2),并且在需要时设置窗体或报表的RibbonName属性,但是,此外,该标记为每个按钮设置Tag属性,如果需要创建动态的定制,则调用Application.

(二) 在运行时装载定制

如果想在运行时装载静态的定制,则将这些定制存储在USysRibbons表中,并且在需要时设置窗体或报表的RibbonName属性。但是,如果需要创建动态的定制,则调用Application.LoadCustomUI方法。下面的示例创建一个Ribbon定制,显示应用程序中每个窗体的按钮,处理每个按钮的onAction回调来装载请求的窗体。

创建动态的Ribbon定制

1、将前面内容中所使用的数据库装载到Access 2007中。如果数据库中只有一个窗体,则创建一个新窗体并在每个窗体中添加一至两个控件。

2、在“创建”选项卡中的“其他”组中,单击“宏”按钮的下拉列表,然后单击“模块”。

3、在VBE中的菜单“视图”中,单击“属性窗口”。

4、在“属性”窗口中,将名称(Name)属性框中模块的名称改为RibbonLoader。

5、在代码窗口中,输入下面的代码。虽然该方法不会返回值,但必须是一个函数,否则不能够从Access宏中调用。

Function CreateFormButtons()

Dim xml As String

xml = _

“<customUI xmlns=”"http://schemas.microsoft.com/” & _

“office/2006/01/customui”">” & vbCrLf & _

“ <ribbon startFromScratch=”"false”">” & vbCrLf & _

“  <tabs>” & vbCrLf & _

“   <tab id=”"DemoTab”" label=”"LoadCustomUI Demo”">” & _

vbCrLf & _

“    <group id=”"loadFormsGroup”" label=”"Load Forms”">” & _

vbCrLf & _

“{0}” & vbCrLf & _

“    </group>” & vbCrLf & _

“   </tab>” & vbCrLf & _

“  </tabs>” & vbCrLf & _

“ </ribbon>” & vbCrLf & _

“</customUI>”

Dim template As String

template = “<button id=”"load{0}Button”" ” & _

“label=”"Load {0}”" onAction=”"HandleOnAction”" ” & _

“tag=”"{0}”"/>” & vbCrLf

Dim formContent As String

Dim frm As AccessObject

For Each frm In CurrentProject.AllForms

formContent = formContent & _

Replace(template, “{0}”, frm.Name)

Next frm

xml = Replace(xml, “{0}”, formContent)

Debug.Print xml

On Error Resume Next

‘ 如果从AutoExec宏中调用这段代码,

‘ 如果在USysRibbons表中有一个使用相同名称的定制

‘ 则会失败

Application.LoadCustomUI “FormNames”, xml

End Function

当运行该段代码时,如果应用程序中包含有名为Form1和Form2的两个窗体,则会创建像下面的XML的标记。

<customUI xmlns=”http://schemas.microsoft.com/office/2006/01/customui“>

<ribbon startFromScratch=”false”>

<tabs>

<tab id=”DemoTab” label=”LoadCustomUI Demo”>

<group id=”loadFormsGroup” label=”Load Forms”>

<button id=”loadForm2Button” label=”Load Form2″ onAction=”HandleOnAction” tag=”Form2″/>

<button id=”loadForm1Button” label=”Load Form1″ onAction=”HandleOnAction” tag=”Form1″/>

</group>

</tab>

</tabs>

</ribbon>

</customUI>

这段标记创建了一个新的LoadCustomUI Demo选项卡,包含有一个“Load Forms”组。在该组内,Ribbon为应用程序中的每个窗体(Form1和Form2)显示一个按钮,并指定每个按钮在单击时应该调用的HandleOnAction回调过程。此外,该标记为每个按钮设置Tag属性,以便于代码应该打开的包含的Access窗体的名称。

Tags:Access 创建 一个

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接