从属对象

有时两个对象之间的关系很清楚,如一个对象是另一对象的一部分。例如,在 Microsoft Excel 中,Button 对象总是其它对象如 Worksheet 对象的一部分。

包含在其它对象中的对象叫做从属对象。客户端应用程序可以管理从属对象,就象管理外部可创建的对象一样,但不能使用 CreateObject 或 New 创建从属对象。

将类模块的 Instancing 属性设置为 PublicNotCreatable,则该类创建的对象为从属对象。

注意   从属对象也称之为嵌套对象

引用从属对象

如果客户端应用程序只能使用而不能创建从属对象,那么从属对象如何创建呢?

部件能够以多种方式提供从属对象。通常外部可创建的对象有一个集合,该集合带有一个客户端可以调用的 Add 方法。该部件在这个 Add 方法代码中创建从属对象,并将对这个新对象的引用返回给客户端,这样客户端就可以使用从属对象了。

例如,Microsoft Excel Worksheet 对象有一个 Button 对象的集合。客户端应用程序通过调用 Button 集合的 Add 方法,就可以给这个 worksheet 添加一个新的 button,如下面的代码段所示:

'注意:变量 wsBudget 包含对一个 Worksheet 对象的引用。
Dim btnOK As Excel.Button
'Add 方法的参数指定新按钮的顶端、左边、宽度和高度。返回值是对新 Button 对象的一个引用。
Set btnOK = wsBudget.Buttons.Add(100, 100, 150, 125)
'设置新 Button 对象的 captionbtnOK.Caption = "OK"

需要注意的是变量 btnOK 包含的是对象的一个引用,而非对象本身。

注意   外部可创建的对象与从属对象之间有差别,是考虑到管理部件对象的客户端应用程序。从部件内部而言,无论 Instancing 属性设为何值,总可以创建部件的任意类的对象。

详细信息   “外部可创建的对象与从属对象的组合”论述了区别对象模型每一部分所需对象类型的过程。