使用 Visual Basic 创建 ActiveX 控件是由 UserControl 模块定义的。添加到该模块中用于实现 ActiveX 控件的源代码被存储在 .ctl 文件中。
大多数的 Visual Basic 工程类型都可以包含 UserControl 模块,但是只有 ActiveX 控件工程才能把控件提供给其它的应用程序。在所有其它的工程类型中,控件都是私有的。
以下是控件打包的两种方法:
一旦 ActiveX 控件工程被编译成控件部件(.ocx 文件),公有控件就可以被其它应用程序使用。
在工程被编译之后,私有控件不能被其它应用程序使用。它们只能在所在的工程内部使用。
如果 UserControl 对象不在 ActiveX 控件工程中,却又试图把它的 Public 属性置成 True,那么就会出错。
如果 ActiveX 控件工程中的某个控件仅是作为该工程中其它控件的子控件,那么把该控件 UserControl 的 Public 属性置为 False 是可以的。这样该控件就可以作为子控件使用。但是其它的应用程序不能使用它。
注意 不能在标记为“无用户界面执行”的工程中包含 UserControl 模块。如果“工程属性”对话框中的“通用”选项卡的“不参加执行”框被选定,该工程就不能包含任何用户接口元素。
重点 如果将控件当作控件部件包装起来,则应确实对每个控件都设置了描述。某些象 Visual Basic 这样的客户机代表整个 .ocx file ,它使用您在工程属性对话框输入的字符串,但其它客户机则显示单个控件的浏览器字符串。参阅“调试、测试和部署部件”中的“为对象提供帮助和浏览字符串”。
如果在 ActiveX 控件工程中以公有类来创建控件,就可以把编译后的控件部件(.ocx 文件)同创建的其它应用程序一起发布。在使用 SettupWizard 为使用该控件的应用程序生成安装程序时,编译后的 .ocx 文件将自动包含在内。
也可以为控件部件专门做一个安装程序,并将其发布给其它的开发者。本章后面部分的“控件的许可证问题”将讨论对使用 Visual Baisc 制作的控件部件的授权支持。
在控件制作完毕之后,可以很容易地改变控件的打包方式。
例如,假设现在 Standard EXE 工程中有一些私有控件,希望在其它的应用程序能够使用它们,那么只需把 .ctl 文件添加到 ActiveX 控件工程中,并将其编译成可发布的控件部件( .ocx 文件)就可以了。
除了在应用程序中包含编译后的控件部件,也可以在应用程序的工程中简单地添加 .ctl 文件。这样,当应用程序被编译时,控件也就被编译进可执行程序了。
以源代码形式包含控件的主要优点有:
注意 某些开发者也许认为避免了 .ocx 文件算不上什么优点。因为所有的 Visual Basic 应用程序都需要支持文件,而且安装向导会自动地把这些文件包含在安装程序内,因此实际上并没有免除任何工作。
当然,天下没有免费的午餐。以源代码形式包含控件也有其缺点。