使用 XML 自定义功能区

[ 2008-06-03 17:16:39 | 作者: 朱亦文 ]
字号: | |
Microsoft Office Access 2007 Inside Out
by John L. Viescas and Jeff Conrad

朱亦文
时间 2008.06.03

使用 XML 自定义功能区

迄今为止,您在本章中学习了有关 XML 文件类型,如何使用 XML 导入和导出 Access 对象,以及如何在模板文件中通过改变大纲修改表模板。Access 2007 以及大多数 2007 Office 应用程序还有另一个重要的使用 XML 的元素——功能区用户接口。通过本书您已经看到在开始、创建、外部数据、以及数据库工具这四个主要的选项卡上如何使用功能区命令。您甚至已经注意到我们在 Conrad System Contacts 系统(Contacts.accdb) 和 Housing Reservations (Housing.accdb) 示例数据库中,当您打开任何一个窗体和报表时都使用了自定义的功能区。在下面节里,您将学习为窗体创建一个简单的功能区所必须的步骤。您将看到如何为这个功能区创建 XML 文件以显示四个主功能区中已经已经存在的分组。您也可以创建一个新的数据输入窗体,指派您的新功能区来测试新的命令。

创建 USysRibbons 表

当您打开一个 Access 2007 数据库时,Access 在启动过程中会查找一个称为 USysRibbons 表以确定是否需要加载自定义的功能区。如果 Access 没有找到这个表,它会继续加载内建的功能区(译者注:Access 默认的功能)。您也可以在您的应用程序中使用 Visual Basic 书写的代码来加载存储在另外的表中的 XML 或者直接定义在代码中的 XML 来完成自定义的功能区的加载。在 第 24 章 “完成最后的润色” 中讨论如何做。

当您创建一个新的空白数据库文件或使用数据库模板创建数据库时,Access 不会自动创建名为 USysRibbons 的数据表。为了 Access 能使用 USysRibbons 表,这个表必须包含 表23-1 中所列的字段。RibbonName 字段是唯一的,用以识别区的名称。XML 必须按次序设计好使 Access 能正确解释以应用到功能区。注:在您需要的时候(例如说明您自定义的功能区),您可以在这个表添加附加的字段,不过 Access 在加载你的功能区时只访问 表23-1 中的列出的两个字段。

表23-1: USysRibbons 表字段
Open table as spreadsheet

字段名

数据类型

RibbonName

文本 Text

RibbonXml

备注 Memo

在默认情况下,Access 在 Navigation Pane 导航窗格) 任何本地表的列表中不显示以 USys 词头的用作系统表的表。您可能不会看到任何系统表,但您可以通过 Navigation Options(导航选项) 对话框来修改其设置。例如,如果你创建并保存一个新的表命名为 USysRibbons,您可能在 Navigation Pane(导航窗格) 中看不到这个新建的表。

在 Conrad System Contacts 数据库中,我们包含了在应用中使用的自定义功能区的表。打开 Contacts.accdb 数据库,在打开的消息框中点击 OK (确定)按钮,点击 Navigation Pane(导航窗格) 顶部的菜单,点击 Navigate To Category(浏览类别) 下的 Object Type(对象类型),并且点击 Filter By Group(按组筛选) 下的 Table(表),显示数据库中可用的表列表。如果您拉动滚动条,您注意到在列表中找不到名为 USysRibbons 的表。要在 Navigation Pane(导航窗格) 中看到这个表,在 Navigation Pane(导航窗格) 的顶部右击鼠标,在菜单上点击 Navigation Options(导航选项)。在 Navigation Options(导航选项) 对话框中的 Display Options(显示选项) 中,勾择 Show System Objects(显示系统对象),使数据库中显示所有的系统对象。如 图 23-9 所示。

Image from book
图 23–19: 选择 Show System Objects 复选框,显示 USysRibbons 表。

点击 OK (确定) 关闭 Navigation Options (导航选项) 对话框,在 Navigation Pane (导航窗格) 中再次查看。您注意到这时您可以看到词头为 MSys 的表以及 USysRibbons 表。在 Navigation Pane (导航窗格) 中右击 USysRibbons 表并点击快捷菜单上的 Design View (设计视图),这个表将在 Design View (设计视图)中打开。在 图 23–20 中,您将看到这个表有一个附加的数据类型为 AutoNumber (自动编号)的字段 ID。还记得前面所说的,Access 只需要 RibbonName 和 RibbonXML 两个字段,它会忽略其它的任何字段。我们加入 ID 字段并使用它作为表的主键,以确保我们输入的是唯一的。

Image from book
图 23–20: Access 在打开数据库期间查找名为 USysRibbons 的表以加载自定义功能区。
注意 

不要尝试修改和删除以 MSys 开头的系统表,Access 使用这些表管理各种对象以及你的数据库中的其它元件。

在 Design(设计) 选项卡中的 View(视图) 分组中点击向下的箭头并从列表中出现的可用的视图中点击 DataSheet View(数据表视图) 切换到数据表视图。您将注意到在 USysRibbons 表中有三条记录,如 图 23–21 所示。表中的第条记录都定义一个特定的功能区。您会在 RibbonName 字段中看到每个功能区的名字,分别为 rbnForms、rbnPrintPreview、以及 rbnCSD。rbnForms 功能区用于 Conrad Systems Contacts 数据库中的大多数数据输入窗体,rbnPrintPreview 功能区用于报表,rbnCSD 功能区用于显示 frmMain、frmCodeLists 和 frmReports 窗体。

Image from book
图 23–21: Conrad Systems Contacts 数据库包含三个自定义区。

在 RibbonXml 字段中,可以分别看到定义三个功能区的 XML 代码。在这个些字段中存放已经设计好的 XML,然而,在数据表视图下阅读 XML 不是很方便。你可以将光标插入字段中移动箭头来阅读 XML,可以按 Shift+F2 键打开缩放对话框,或者扩展每行的高度。然而,最容易的阅读和修改 XML 方法是创建一个绑定这个表的窗体。在 Conrad Systems Contacts 数据库 (Housing Reservations 数据库也是一样) 中,我们创建一个窗体来添加和编辑这个表中的记录。点击 Navigation Pane(导航窗格) 顶部的菜单,点击 Navigation To Category(浏览分类) 下的 Object Type(对象类型),并点击 Filter By Group(按组筛选) 下的 Forms(窗体) 显示数据库中窗体列表。找到名为 zfrmChangeRibbonXML 的窗体,双击以窗体视图打开,如 图 23–22 所示。使用记录导航条上的按钮,可以分别全部查看这三个自定义功能区的 XML。(在 第 24 章 更详细的研究这个三个功能区,此时不必关心如何掌握这些 XML。)我们窗体向导来创建这个窗体,只要你喜欢你也可以从零开始设计这个窗体。创建一个使用的 USysRibbons 表的窗体并不是必须的,然而,这样可以有一个舒适的大的文本框来查看和编辑 RibbonXml 字段中的 XML (译者注,何乐而不为呢?)。

Image from book
图 23–22: 采用一个窗体,可以更容易的查看和编辑 USysRibbons 表中 XML。
注 

现在,你已经明白了如何在 Navigation Options (导航选项) 对话框中改变设置来查看系统对象,就象查看在 Navigation Pane (导航窗格) 中的 USysRibbons 表一样,推荐你改回设置,不显示系统对象。右击 Navigation Pane (导航窗格) 顶部菜单并点击 Navigation Options (导航选项)。在 Navigation Options (导航选项) 对话框中的 Dispaly Options (显示选项) 里,清除 Show System Object (显示系统对象) 复选框,最后点击 OK (确定)。以后,你可以使用 zfrmChangeRibbonXML 窗体来处理 USysRibbons 表中的数据,你也就不再需要在 Navigation Pane (导航窗格) 看到这个表。

创建测试窗体

Conrad Systems Contacts 数据库中的多数窗体和报表每个都使用了自定义的功能区。在下面的一节里,将为一个新窗体的功能区创建 XML。在创建 XML 之前,首先基于 tblContacts 表创建一个数据输入窗体。使用这个新的窗体来测试 XML,这样就不干扰数据库中已有对象。首先,关闭还仍然打开着的 zfrmChangeRibbonXML 窗体,点击 Navigation Pane (导航窗格) 顶部的菜单,点击 Navigation To Category (浏览分类) 下的 Object Type (对象类型),然后点击 Filter By Group (按组筛选) 下的 Tables (表),最后,在 Navigation Pane (导航窗格) 中选择 tblContacts 表,在功能区 Create (创建) 选项卡中点击 Form (窗体) 按钮,Access 就会基于这个选择的表创建一个新的窗体并以 Form View (窗体视图) 打开,如 图 23–23 所示。点击 Quick Access Toolbar (快速访问工具栏) 上的 Save (保存) 按钮,将窗体命名为 frmRibbonTest,最后关闭窗体。

Image from book
图 23–23: 基于 tblContacts 表创建窗体用于测试新的功能区。

创建功能区 XML

要为窗体和报表创建一个自定义功能区,你必须首先使用如 Notepad (记事本) 或 Notepad 2007 或 Visual Basic 2005 快速版一样的编辑器创建 XML。在这里,我们使用 Notepad (记事本) 创建 XML。为功能区创建设计好的 XML,需要引用 Microsoft Office system XML Schema,它包含 Access 2007 验证自定义功能区所需的架构信息。你也可能需要下载 Microsoft Office system Document Lists of Control IDs,它包含 Microsoft Office 内建的选项卡、分组、按钮、以及其它命令按钮控件 ID 的完整列表。在功能区架构文件中每个按钮、分组和选项卡都有一个唯一的控件 ID。可以使用这些控件 ID 来置放内建功能区中的元件到你自己自定义的功能区中。

注 

如果你使用如 Notepad 2007 或者 Visual Basic 2005 快速版 一样的工具,你可以使用 Microsoft IntelliSense (智能提示) 来帮助你构造 XML。可以从 Microsoft 网站上 http://www.microsoft.com/downloads/details.aspx?familyid=72D6AA49–787D-4118-BA5F-4F30FE913628&displaylang=en下载免费的 XML Notepad 2007 编辑。

可以从 Microsoft 网站上 http://msdn. microsoft .com/vstudio/express/vb/ 下载 Visual Basic 2005 快速版。

可以从 Microsoft 网站上 http://www.microsoft.com/downloads/details.aspx?familyid=15805380-f2c0–4b80–9ad1–2cb0c300aef9&displaylang=en 下载 Microsoft Office system XML Schema Reference for Ribbons。

可以从 Microsoft 网站上 http://www.microsoft.com/downloads/details.aspx?familyid=4329d9e9–4d11–46a5–898d-23e4f331e9ae&displaylang=en 下载 Microsoft Office system Document Lists of Control IDs。

隐藏功能中已有的元件

打开 Notepad (记事本) 开始建立 XML。我们将为测试窗体创建一个在 Home (开始) 选项卡中包含两个分组自定义功能区,同时隐藏所有的内建的选项卡。接下来,你将测试第一步看着功能区成型。功能区的 XML 需要从下面的行开始:

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

这第一行明确的告诉 Access 我们使用来创建这个功能区的架构信息。接下来的一行应该如下:

<ribbon startFromScratch="true">

如果指定 startFromScratch 为 true,当自定义的功能区加载时 Access 隐藏功能区上四个主选项卡。另外,当你点击 Microsoft Office 按钮时,Access 只显示 New (新建)、Open (打开)、Save As (另存为)、Close Database (关闭数据库)、Access Options (Access 选项)、以及 Exit Access (退出 Access)。同时 Quick Access Toolbar (快速访问工具栏) 除箭头和箭头下只能选择将 Quick Access Toolbar (快速访问工具栏) 放置在功能区上方或下方和最小化功能区外不显示其它选项。如果要有更多的控制接口和只显示为最终用户自定义的功能区,你必须将 XML 属性 (译者注,startFromScratch) 设置为 True。如果将 startFromScratch 设置为 False,Access 不会隐藏任何功能区上的主选项卡,并且,在你点击 Microsoft Office 按钮时不隐藏菜单上的任何选项。任何你创建的新的选项卡会显示 Database Tools (数据库工具) 选项卡的右侧。

在前面的两行之后,你可以开始建立任何选项卡、分组、按钮、以及其它的功能区元件。从现在起,我们使用一些最终的功能区标记和 customUI 来完成这个简单的 XML 示例。XML 应该如下面的这个样子:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
   <ribbon startFromScratch="true">
   </ribbon>
</customUI>

测试 XML

书写 XML 时,一边测试确保它能正常工作是一个不错的好主意。这样,你可以简化系统地测试主要步骤,调试出现在 XML 中的任何问题。选取你已经建立的 XML,并将它复制到粘贴板,接下来,在 Conrad Systems Contacts 数据库中打开 zfrmChangeRibbonXML 窗体,并新建记录。在 Ribbon Name 文本框为这个新的功能区输入名称为 rbnTest,最后,按 Tab 键将光标移到 Ribbon XML 文本框中,按下 Ctrl+V 将粘贴板中的 XML 内容粘贴过来。在窗体中的记录应该如 图 23–24 所示。

Image from book
图 23–24: 通过使用 zfrmChangeRibbonXML 在 USysRibbons 表中输入新记录测试功能区。

关闭 zfrmChangeRibbonXML 窗体,保存对 USysRibbons 表的修改。要你的测试窗体显示这个功能区,看看它是如何工作,你需要为这个窗体的 Ribbon Name (功能区名称) 属性指派为 rbnTest。在这样做之前,你需要关闭数据库并重新打开它。你还记得在前面提到的 Access 在启动应用程序过程中首先会找到数据库中的 USysRibbons 表并加载所有的功能区。因为,你刚新增的记录,Access 并没有立即加载这个功能区到内存中。如果你在这个时候打开测试窗体的属性表,在 Ribbon Name (功能区名称) 属性选项中看不到 rbnTest。(注,你可以在属性中键入 rbnTest,但仍然在关闭和重新打开数据库之间看不到这个功能区。)

现在关闭数据库然后重新打开,以使 Access 将新的测试功能区加载到内存。在重新打开数据库之后,以 Design View (设计视图) 打开测试窗体 frmRibbon。在功能区的 Design (设计) 选项卡中的 Tools (工具) 分组中点击 Property Sheet (属性表) 按钮。在属性表中的 Other (其它) 或者 All (所有) 选项卡中,找到 Ribbon Name (功能区名称) 属性行并点击其下拉箭头,从列表中的四个功能区中选择 rbnTest。在 Quick Access Toolbar (快速访问工具栏) 上点击 Save (保存) 按钮,然后重新以 Form (窗体) 视图打开这个窗体,以察看测试结果。

当使用窗体视图打开 frmRibbonTest 窗体时,你会发现整个功能区不见了,如 图 23–25 所示。Access 还同时隐藏除了打开 Quick Access Toolbar (快速访问工具栏) 菜单的箭头之外的 Quick Access Toolbar (快速访问工具栏) 上的所有按钮。点击 Microsoft Office 按钮,你会发现 Access 缩减了菜单项目,正如我们前面讨论的那样。这是因为你在 XML 中指定了 startFromScratch=True 同时也没有指定任何其它自定义的选项卡的缘故。目前,Access 显现出非常有限的用户接口。如果你想提供诸如直接在窗体上筛选、排序的特定操作,无疑需要改善这个自定义功能区避免这种光秃秃的情形。

Image from book
图 23–25: 初期创建的简单的 XML 完整地隐藏功能区
Inside Out-显示 Ribbon (功能区) 错误 

如果创建的功能区的 XML 没有成型,Access 不会显示自定义功能区。这种情况,Access 显示内建的四个功能区主选项卡,因为它不能解析和显示恰当的自定义元件。在这种情况下,Access 不是宽容的,只要有一个小小错误就会导致 XML 不能成型,造成 Access 显示原始的功能区。由于 Access 不能自动显示错误,你很难调试 XML 以找到编写的 XML 中的错误。

幸运的是,Access 包括一个选项可以让你允许显示这些情形下出现的错误。点击 Microsoft Office 按钮,点击 Access Options (Access 选项),点击 Advanced (高级) 分类,然后拉动滚动条到 General (常规) 节,选择 Show Add-in User Interface Error (显示加载项用户接口错误) 复选框 (默认是未选择的),然后点击 OK (确定),如果在 XML 中 Access 发现了错误将会显示一个对话框。例如,选择,选择 Show Add-in User Interface Error (显示加载项用户接口错误) 复选框并在功能区 XML 的第三行开始处多加一个 < 字符,当打开测试窗体时 Access 会显示如下错误信息(当然是关闭数据库并重新打开数据库之后):

Image from book

你会在这个错误消息文本中看到 Access 在 XML 的第 3 行找到这个错误。选择了 Show Add-in User Interface Error (显示加载项用户接口错误) 选项可以帮助你调试自定义功能区的 XML。

创建选项卡

在某些应用程序中需要创建一个没有功能区显示的接口,就像上面测试的一样。但是,如果你想为你的窗体提供给用户在 Home (开始) 选项卡上加入导航和筛选选项呢?在自定义的功能上添加按钮和控件,首先你需要创建一个选项卡以容纳这些控件。Access 功能区架构使用 tabs 标记指明功能区上新建的选项卡。

打开 Notepad (记事本) (或者其它的 XML 编辑器),打开早先建立的 XML 文件。创建一个新的选项卡,首先需要按照下面的语法行使用一个 tabs 标记 (<tabs>) :

<tab id=UniqueTabName label=LabelCaption>

其中 id 是必须的,其值 UniqueTabName 必须是功能区 XML 中唯一的名称,标题 Label 属性是可选的,但如果没有给选项卡的标题赋值,Access 会显示成一个很小、空头选项选项卡。在任何一个 XML tab 标记的最后,都必须使用一个 tab 结束标记 (</tab>) 来关闭这个标记。例如,我们创建一个名为 tabTest 标题为 Navgition 的新的选项卡。在功能区选项卡 (<ribbon> 和 </ribbon>) 之间添加下列 XML 创建新的选项卡:

<tabs>
  <tab id="tabTest" label="Navgition">
  </tab>
</tabs>

完整的 XML 应该是下面这个样子:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon startFromScratch="true">
    <tabs>
      <tab id="tabTest" label="Navigation">
      </tab>
    </tabs>
  </ribbon>
</customUI>

好了,现在我们测试一下。选取创建的所有的 XML 代码,复制到剪贴板,接下来,在 Conrad Systems Contacts 数据库中打开 zfrmChangeRibbonXML 窗体,导航到 Ribbon Name 字段值为 rbnTest 的记录,按 Tab 键将光标移动到 Ribbon XML 文本框,选取所有的内容,按 Ctrl+V 粘贴剪贴板上的内容覆盖原来的 XML。关闭 zfrmChangeRibbonXML 窗体保存 USysRibbons 表改变。最后,关闭数据库并重新打开它,然后以窗体视图打开 frmRibbonTest 窗体。Access 现在显示一个全新的标题为 Navigation 的功能区,如 图 23–26 所示。

Image from book
图 23–26: 为功能区自定义选项卡

Adding Built-In Groups to Tabs 在选项卡中添加内建的分组

现在已经有了一个新的选项卡,可以在这个选项卡中开始添加控件。如果用户想使用原来 Home (开始) 选项卡上的 Records (记录)、Sort & Filter (排序和筛选)、以及 Find (查找) 分组上的按钮和命令来帮助导航联系记录,你可以编写 XML 创建自定义的按钮来分别模拟这三个分组中的操作按钮,但更简单的方法是,使用 RibbonX 的结构,复制内建分组中按钮、命令、选项到自定义的选项卡上。(我们将在 第 24 章 讲解如何在选项卡创建单独的按钮。)

打开 Notepad (记事本) (或者其它的 XML 编辑器),打开早先创建的 XML 文件,要在自定义选项卡上使用一个内建的分组,使用下面的语法:

<group idMso=ControlID>

可以在 tab 定义的范围 (tags 标记内的由 <tab> </tab> 组成的范围) 内的任何地方添加这个标记。可以使用 idMso 属性来指明定义在 RibbonX 结构内的内建控件的 ID。功能区中每个内建的按钮、分组、和选项卡都有一个内部的控件 ID,可以通过这个 ID 来进行引用。在这种情形下,下面演示在自定义的选项卡上如何使用 idMso 属性来引用一个指定的分组。为了帮助识别这些分组的名称,可以查阅 Microsoft Office system Document Lists of Control IDs Excel 工作表,这个工作表中完整地记录了这些内部控件的 ID。例如,要添加原先在 Home (开始) 选项卡上的 Records (记录) 分组到我们自定义的 Navigation 选项卡上帮助用户添加、删除记录,从工作表上可以查到 Records (记录) 分组的 ID 为 GroupRecords,在选项卡 tab 标记内添加 group 标记,使用其 idMso 属性指明这个 ID 即可,记住,一定要使用 </group> 来关闭这个标记。其 XML 如下:

<group idMso="GroupRecords">
</group>

完整的 XML 如下:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon startFromScratch="true">
    <tabs>
      <tab id="tabTest" label="Navigation">
        <group idMso="GroupRecords">
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

我们再来看看测试窗体测试的情况。和前面做的一样,使用 zfrmChangeRibbonXML 窗体,将新的 XML 复制到 UsysRibbons 表中字段 RibbonName 值为 rbnTest 的字段 RibbonXml 中,替换原来的内容。关闭数据库并重新打开数据库。以窗体视图打开 frmRibbonTest 窗体,Access 就会在自定义的 Navigation 选项卡上显示原来 Records (记录) 分组上的所有控件,如 图 23–27 所示。如果测试一下上面的按钮,其效果与原来的 Home (开始) 选项卡上的没有什么区别。

Image from book
图 23–27: 在自定义的选项卡上显示内建的 Records (记录) 分组。
Inside Out-查找内建控件 ID 

你还可以通过 Access Options (Access 选项) 对话框的 Customize (自定义) 分类来查找内建控件 ID。点击 Microsoft Office 按钮,点击 Access Options (Access 选项),然后选择 Customize (自定义) 分类,在右边列表的左侧,可以看到 Access 的内建命令列表。当鼠标移动到列出的命令上停留一下,Access 就会显示 ScreenTips (屏幕提示),提示中就包括了这个内部控件的 ID。在命令的右侧有一个下拉箭头,可以帮助你识别分组。在列表的上方有一个组合框,在这个组合框中可以选择你想查找的选项卡。例如,Home Tab (开始 选项卡) 上的 Records (记录) 的包含它的控件 ID 的屏幕提示,如下图所示。

Image from book

现在,已经在选项卡添加了 Records (记录) 分组。最后,我们再在自定义的功能区的选项卡上还添加 Sort & Filter (排序和筛选)、Find (查找) 分组。打开 Notepad (记事本) (或者其它的 XML 编辑器),打开早先的 XML 文件。通过查找我们得知,Sort & Filter (排序和筛选) 分组的控件 ID 为 GroupSortAndFilter,Find (查找) 分组的控件 ID 为 GroupFindAccess,在上一个 group 标记之后添加下列行:

<group idMso="GroupSortAndFilter">
</group>
<group idMso="GroupFindAccess">
</group>

最后的 XML 如下:

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  <ribbon startFromScratch="true">
    <tabs>
      <tab id="tabTest" label="Navigation">
        <group idMso="GroupRecords">
        </group>
        <group idMso="GroupSortAndFilter">
        </group>
        <group idMso="GroupFindAccess">
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

现在,我们再用测试窗体测试一下完整的 XML。如前一样,选取迄今为止的全部 XML 代码,按 Ctrl+C 复制到剪贴板上。以窗体视图打开 Conrad Systems Contacts 数据库中的 zfrmChangeRibbonXML 窗体,在 rbnTest 的记录上将剪贴板上的内容粘贴到 Ribbon XML 文本框中替换原来的内容。关闭 zfrmChangeRibbonXML 窗体,保存 USysRibbons 表的变更。关闭数据库并重新打开数据库,使 Access 加载新的自定义功能区。最后,打开 frmRibbonTest 窗体以查看结果。Access 现在已经在自定义的 Navigation 选项卡上显示出了 Records (记录)、Sort & Filter (排序和筛选)、Find (查找) 三个分组的所有按钮和命令, 如 图 23–28 所示。只需要少量的 XML 代码行,你就可以为你的应用程序创建自定义功能区。你可以指派这个功能区给应用程序中的任何窗体。而且,由于 XML 是存储在本地表中,可以非常方便将导入到其它数据库中予以重用。

Image from book
图 23–28: 创建的包含三个内建分组按钮和命令的自定义功能区。

你现在对于包含在 Access 2007 中集成 Web 技术有了非常不错的理解。在本书的 第 6 部分,我们将延伸 RibbonX 结构的讨论,通过使用 Visaul Basic 展示 Ribbons (功能区) 的更高级的概念。我们将展示如何创建自定义按钮和加载自定义 Ribbon (功能区) 架构。你还将学习有关于完成数据库设计之后附加特征的方法。

[最后修改:朱亦文, 于 2008-06-03 17:48:08]
评论反馈 评论反馈: http://bcd.office-cn.net/feed.asp?q=comment&id=69

该文章没有评论。

发表评论
表情集
[smile] [confused] [cool] [cry]
[eek] [angry] [wink] [sweat]
[lol] [stun] [razz] [redface]
[rolleyes] [sad] [yes] [no]
[heart] [star] [music] [idea]
允许 UBB 代码
自动修正 URL
显示表情
悄悄话
用户名:   密码:  
安全代码 * 请输入安全代码