给部件添加类

部件和使用 Visual Basic 编写的其它应用程序只有一点不同:即部件工程至少有一个公共类,该公共类使客户端应用程序能够创建对象。

和其它 Visual Basic 应用程序一样,部件也可以有大量的类模块用于封装其内部功能。如果允许客户端创建一个类的实例,且由该类产生的对象可被客户端操作,则该应用程序就是一个部件。

创建新的类

可以从“工程”菜单选择“添加类模块”、“添加用户控件”或“添加用户文档”来定义一个新的公共类。“工程”菜单中的其它选项允许添加应用程序中要用到的对象,但只有 UserControls、UserDocuments 和类模块才能定义公共类。

所添加的每一个公共类都将作为对象模型中的一种公共对象的蓝本。可以通过设定类名、定义类的接口和设置 Instancing 属性(有时是 Public 属性)来确定如何从该类创建对象。

Name 属性

要仔细挑选类名。类名应当简短而又具有描述性,应使用每个首字母都大写的完整单词构成─ 例如,BusinessRule。

类名与部件名组合产生一个完整限定类名,也称之为编程 IDProgID。例如,由 Finance 部件提供的 BusinessRule 类的完整限定类名是 Finance.BusinessRule

本章前面的“命名的学问”,概述了给类、属性和方法命名的规则。

定义接口

一个类的缺省接口由类中所定义的属性和方法组成,这将在本章后面的“给类添加属性和方法”详述。

类的缺省接口是调入接口,调入接口在“多态性、接口、类型库和 GUIDs”中说明。也可以按照“给类添加事件”中所描述的添加调出接口或事件。

Visual Basic 在部件编译后创建类型库,且类型库中包含了关于类模块的缺省接口和调出接口的信息。

详细信息   可以按照“通过接口的实现提供多态性”中所描述的为一个类实现附加调入接口。

Public 或 Instancing 属性

UserControl 类具有 Public 属性,确定该类是公共的还是私有的。UserDocument 类总是公共的。这将在深入介绍 ActiveX 控件和文档的章节中介绍,即“建立 ActiveX 控件”和“建立 ActiveX 文档”。

类模块的公共生命期更复杂,由 Instancing 属性控制。对部件要提供给其它应用程序的每一个类,应将其 Instancing 属性设置为除 Private 以外的任何值。这将在相关的主题“ActiveX 部件提供的类的实例化”中详述。

没有必要把所有的类都设为公共的;如果存在只在部件内使用的对象,可以将这个类模块的 Instancing 属性设置为 Private。(对于 UserControl,则设置 Public 属性为 False)。

创建类的相关主题

下列主题详细介绍了关于 Visual Basic 工程中类的特性。

详细信息   Visual Basic 中的类模块在《Visual Basic 程序员指南》的“用对象编程”一章介绍。有关类模块、ActiveX 控件和 ActiveX 文档中定义的类的特定主题在“建立代码部件”、“建立 ActiveX 控件”和“建立 ActiveX 文档”中深入介绍。对象模型在本章后面的“组织对象:对象模型”中详述。