为 Microsoft Outlook 创建自定义属性页包括以下四个主要步骤:
创建作为 ActiveX 控件的页。
实现 PropertyPage 对象。
编写设置 Dirty 属性值并调用 OnStatusChange 方法的过程。
(COM) 加载项创建组件对象模型,该加载项包含 Application 或 NameSpace 对象的 OptionsPagesAdd 事件过程(视情况而定)。 有关创建 COM 加载项的信息,请参阅 使用 COM 加载项自定义 Outlook。
创建作为 ActiveX 控件的页
Outlook 中的自定义属性页是一个 ActiveX 控件,它与动态链接库 (DLL) 一起实现,设计为 COM 加载项。 创建自定义属性页的最简单方法是使用 Microsoft Visual Basic 6.0 或更高版本。 此版本的 Visual Basic 提供了模板和工具,可简化创建 ActiveX 控件和 COM 加载项的过程。
创建 ActiveX 控件时,可在该控件中放置用户需要的控件,用户用这些控件来设置该页支持的属性。 由于 Outlook 在对话框中显示属性页时可能会调整控件的大小,所以控件的 Initialize 事件应该根据控件的 Width 和 Height 属性的最终值动态地定位和调整子控件。
显示自定义属性页的对话框在属性页下面有三个按钮: "确定" 按钮、 "取消" 按钮和 "应用" 按钮。 当用户单击 "确定" 按钮时,将应用对话框中所有页上对属性的更改并关闭对话框。 如果用户单击 "取消" 按钮,将不更改属性,并关闭对话框。 如果用户单击 "应用" 按钮,将应用对属性所做的任何更改,但对话框依然处于打开状态。 您应该设计属性页,使其在用户单击这些按钮时做出相应的响应。 本主题后面的部分将说明如何通知 Outlook 属性页状态已更改,以及应当应用更改的属性值时 Outlook 如何通知程序。
实现 PropertyPage 对象
PropertyPage 对象是一个抽象对象;也就是说,它的接口由 Outlook 定义但不由 Outlook 实现。 如果自定义属性的更改将依赖于父对话框中的 "应用" 或 "帮助" 按钮,包含自定义属性页 ActiveX 控件的模块就必须实现 PropertyPage 对象。 要实现该对象,模块必须具有对 Outlook 对象库的引用集,并且必须包含以下语句。
Implements Outlook.PropertyPage
然后,模块必须包含实现 PropertyPage 对象的方法和属性的代码。 下表说明这些过程。
步骤 | 说明 |
---|---|
Dirty 属性 | 由 Outlook 在响应 OnStatusChange 方法时调用,用来确定用户是否更改了属性页上的值。 |
Apply 方法 | 由 Outlook 调用,用于通知程序用户已单击了“确定”或“应用”按钮。 通常,此过程会应用用户在属性页中更改的所有属性值。 |
GetPageInfo 方法 | 由 Outlook 调用,用于获得与属性页相关的帮助文件和帮助主题。 |
编写设置 Dirty 属性并调用 OnStatusChange 方法的过程
大多数情况下,对属性值所做的更改不会立刻应用来响应用户与控件(用户用控件来指定这些属性值)的交互。 事实上,只有当用户单击对话框中的 "确定" 或 "应用" 按钮时,才应用属性值。 在用户没有更改属性页上的值之前, "应用" 按钮为灰色。 若要通知 Outlook 用户已经更改了属性页上的值,程序应调用 OnStatusChange 方法,然后在 Outlook 查询 Dirty 属性时返回 True。
创建包含 OptionsPagesAdd 事件的事件过程的 COM 加载项
OptionsPagesAdd 事件允许程序将自定义属性页添加到 Microsoft Outlook "选项" 对话框(如果为 Application 对象触发该事件)或文件夹的 "属性" 对话框(如果为 NameSpace 对象调用该事件)。 当 Outlook 调用此事件过程时,将传递 PropertyPages 对象。 事件过程使用集合的 Add 方法将程序实现的 PropertyPage 对象添加到对象中。
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。