ActiveX 设计器

ActiveX 设计器可以为任务提供可视化的接口—否则的话可能需要大量的代码。例如,在 Visual Basic 企业版中包括 UserConnection 设计器,该设计器为定义复杂的数据库查询提供了可视化工具。这样,在运行时,就可以用很少的代码来调用这些查询。

ActiveX 设计器和内置设计器之间的相似之处

ActiveX 设计器在下面这些方面就象窗体设计器一样:

图 9.14 将内置的 Visual Basic 窗体设计器跟 UserConnection 设计器(包括在 Visual Basic 企业版中的一种 ActiveX 设计器)作了比较。

图 9.14   ActiveX 设计器和内置的 Visual Basic 设计器

ActiveX 设计器类跟其它可视化设计类的比较

ActiveX 设计器是非常灵活的。其中有一些,如 UserConnection 设计器,创建的类的实例在运行时是可编程的,但却是不可见的。另外一些,如 Microsoft Office 所使用的 Microsoft Forms 设计器,可产生跟 Visual Basic 窗体类似的可见对象。

具有可见的运行时部件的 ActiveX 设计器,可以成为宿主 ActiveX 控件。事实上,它们变成了另一种窗体包,除了 Visual Basic 本地窗体外,也可使用该包。

下面的列表将 ActiveX 设计器产生的类跟用内置的 Visual Basic 设计器所产生的类作了比较。

运行时使用 ActiveX 设计器对象

跟内置的窗体设计器一样,ActiveX 设计器也仅仅在开发环境中是可用的。一旦将工程连编成可执行文件,它仅仅使用 ActiveX 设计器的运行时的 .dll。这可能比设计时的 .dll 小得多,因为它不包括可视化的设计工具。图 9.15 图示了概念。

图 9.15 内存中的设计器部件

前面已经提到过,ActiveX 设计器可产生在运行时不可见对象的类。图 9.14 中所显示的 UserConnection 设计器就是一个这样的例子。UserConnection 设计器产生一些这样的类—其对象管理运行时跟 SQL 数据库的连接。没有理由让这些对象在运行时可见。

为了使用用 UserConnection 设计器所创建的类,应为该类声明一个类型变量,并为该类创建一个实例。例如,如果添加一个 UserConnection 设计器,并将其 Name 属性设置为 GeneralLedger,那么就可以创建一个 GeneralLedger 对象,如下面这段代码中所示:

'标准模块中的一个全局变量,这是为了保存
' GeneralLedger 对象的引用。
Public gGeneralLedger As GeneralLedger

' Form 模块中的代码,这是为了创建 GeneralLedger
'对象并建立一个数据库连接。
Private Sub Command1_Click()
   Set gGeneralLedger = New gGeneralLedger
   gGeneralLedger.EstablishConnection
   '(使用该对象的代码。)
End Sub

创建 ActiveX 设计器

使用 ActiveX 设计器的Software Development Kit,可以用来为使用 Visual Basic 而创建新的 ActiveX 设计器。 SDK 包括全部指令以及示例代码。您可以在 Microsoft Development Network 的 "SDK Documentation" 标题下找到它。

注意   ActiveX Designer SDK 需要一个 C++ 编译器,如 Microsoft Visual C++。ActiveX 设计器不能用 Visual Basic 来编写。

详细信息   在“向“工程”菜单中添加 ActiveX 设计器”和“插入 ActiveX 设计器的新实例”中提供了将 ActiveX 设计器结合到工程中去的过程。