[转载]VB6 class instancing
原文出处:http://11lingxian.javaeye.com/blog/264971
在测试文件组件之前,我们必须先编译它。但在进行这项工作之前,让我们先来浏览一下Visual Basic所给出来的一些额外选项。
在打开FileCheck代码窗口的同时,我们来看看它的属性窗口。
属性有Name、DataBindingBehaviour(用于将类和数据源相"绑定")、可持久性(用于控件中,允许保存某个类的属性)以及实例。
当类名属性修改后,我们或许不必担心前三项的属性。那么什么是实例呢?
实例(Instancing)属性决定自己的类对于使用ActiveX组件的应用程序来说是否可见。若可见,则在任何时候可运行不止一个的实例。
实例属性有很多选项,我们来看一下:
MultiUse —— 这可能是最常用的选项。它只提供给其他应用程序一个组件的实例,这个实例可以提供多个对象。这样就节约了内存空间并允许用户共享全局变量。
Private —— 除该组件内的对象,类对于其他对象是不可见的。它通常用于类单独被类中的其他对象所访问。
GlobalMultiUse —— 这个类的各种属性和方法可以象简单的全局函数那样被调用。另外,在VB中该类的实例不需要显式创建,因为它会自动创建。各种属性和方法都可从单独的一个组件实例中调用。
PublicNotCreatable —— 它表示只有在创建实例的前提下,该类才是可见的。换句话说,用户不能用New关键词创建一个类对象。用户的类对象必须选被创建,然后才可使用。这有点像 DAO的记录集,用户不能创建一个新的记录集,而只能用OpenRecordset方法简单地打开它。
SingleUse —— 它表示每次在代码中开始的一个组件的新的实例,只能运行另一个ActiveX组件的实例。换句话说,每个实例都获得自己的"进程空间"。虽然还有一些限制,没有什么奇怪的,它和MultiUse是相对的。
GlobalSingleUse —— 类似于GlobalMultiUse,除了代码中创建的对象运行一个组件的新实例。
上述选项,我们很少全部都使用过。毫无疑问,MultiUse是最常见的,其次是Private和GlobalMultiUse,其他的一般很少使用。当然,我们不禁要问,在创建ActiveX DLLs时,我们能得到多少这样的选项呢?答案是明确,因为它们的工作方式是相同的。
天行健,君子以自强不息;
地势坤,君子以厚德载物。