外部可创建对象与从属对象的创建
外部可创建对象
大多数大型 ActiveX-enabled 应用程序和其它 ActiveX 部件,在它们的对象层次中提供了一个顶层外部可创建对象:
- 提供了对该层次中其它对象的访问。
- 提供对整个应用程序起作用的方法和属性。
例如,每个 Microsoft Office 应用程序提供一个顶层 Application 对象。下面的例子显示如何赋值对于 Microsoft Excel、 Microsoft Word 和 Microsoft Access 的 Application 对象的引用:
Dim xlApp As Excel.Application
Dim wdApp As Word.Application
Dim acApp As Access.Application
Set xlApp = New Excel.Application
Set wdApp = New Word.Application
Set acApp = New Access.Application
然后,可以用这些变量来访问在每个应用程序中的从属对象、以及这些对象的属性和方法。更详细的信息,请参阅“创建对对象的引用”。
注意 早于 Microsoft Excel 97 的版本不支持引用 Microsoft Excel Application 类的语法 Excel.Application。必须用 [_ExcelApplication] 语法来引用 Microsoft Excel 5.0 和 Microsoft Excel 95 中的 Microsoft Excel Application 类。例如:
Set xlApp = New [_ExcelApplication]
除了这些顶层外部可创建对象外,ActiveX 部件也可以提供部件对象层次的较低层次上的外部可创建对象。这些对象可以被访问。如果作为外部可创建对象,则直接访问;如果作为较高层的外部可创建对象的从属对象,则间接访问。例如,可以直接或间接地创建对 DAO TableDef 对象的引用:
'创建对daoTable1的直接引用。Dim daoTable1 As DAO.TableDefSet daoTable1 = New DAO.TableDefdaoTable1.Name = "Table1"'创建对daoTable2的间接引用,'作为DAO DBEngine对象的从属对象。Dim daoDBE As DAO.DBEngineDim daoWs As DAO.WorkspaceDim daoDb As DAO.DatabaseDim daoTable2 As DAO.TableDefSet daoDBE = DAO.DBEngineSet daoWs = daoDBE.Workspaces(0)Set daoDb = daoWs.CreateDatabase("db1.mdb", _dbLangGeneral)Set daoTable2 = daoDb.CreateTableDef("Table2")
有些对象提供一个 Application 对象,但是,使用另外的名字。例如,Microsoft Access 中的 Microsoft Jet 数据库引擎把其顶层对象称为 DBEngine 对象。
从属对象
仅能用一种方法获得对从属对象的引用,即通过使用一个外部可创建对象的属性或方法返回对从属对象的引用。从属对象位于对象层次中的较低层,并且仅可通过使用外部可创建对象的方法被访问。例如,假设要从 Microsoft Excel 引用 Button 对象。就不可以使用下列代码(否则会产生错误的结果):
Dim xlButton As Excel.Button
Set xlButton = New Excel.Button
而是使用下列代码,来获得对 Button 对象的引用:
Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet Dim xlButton As Excel.Button Set xlApp = New Excel.Application Set xlBook = xlApp.Workbooks.Add Set xlSheet = xlBook.Worksheets.Add Set xlButton = xlSheet.Buttons.Add(44, 100, 100, 44) '现在可以使用Button对象属性。xlButton.Caption = "FirstButton"
图 10.5 说明 Visual Basic 应用程序是如何获得对 Button 对象的引用。
图 10.5 访问从属对象
posted on 2005-08-11 11:07 生活隧道&&技术积累 阅读(368) 评论(0) 收藏 举报
浙公网安备 33010602011771号