Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

怎样创建类模块

时 间:2016-09-27 08:26:33
作 者:杨雪   ID:42182  城市:南京
摘 要:怎样创建类模块?

正 文:

创建窗体和创建标准类模块都非常简单,只要单击【工程】菜单的【添加窗体】或添加模块即可。其实创建类模块也不难,同样是单击【工程】菜单的【添加类模块】。创建类模块后还要在属性窗口中给新类模块命名,默认名称为“Class1”,这个名称是创建对象实例时“类”的名称(就像变量类型的名称),所以一定要命名正确且便于记忆。

 

创建“方法”

假如已经创建了一个名为“Class1”的类模块,在类模块的代码中编写一个过程如下:

Public Function Test() As Boolean
    MsgBox "Text!", vbInformation
    Test = True
End Function

              图(一) 创建类模块  SearchComboBox  ,定义方法 Init()

在类模块中创建的过程,无论是Sub过程还是Function过程都称为“方法”,可以通过以下方式在标准模块或窗体模块中调用这个Text方法:

 

Dim objclass1 As Class1
Set objclass1 = New Class1
Debug.Print objclass1.Test
Set objclass1 = Nothing

               

图(二) 创建对象实例,调用方法 

上述程序首先定义了一个Class1类型的对象变量:objclass1,其定义方式与定义普通变量类似。然而定义对象变量并不等于创建对象实例,系统还没有为objclass1 分配内存,这与定义普通变量(如定义一个整数)是不同的。所以执行“Dim objclass1 As Class1”后并不能理解使用objclass1,还要再执行“

Set objclass1 = New Class1”,才能真正创建一个对象实例,objclass1才能被使用。使用时通过“objclass1.Test”调用类模块中的Test方法的代码,屏幕将显示一个消息框;返回到主程序后,在立即窗口中显示“True

 

如果没有“立即窗口”,单击【视图】菜单下的“立即窗口”命令,将该窗口显示出来。

 最后一条语句“Set objclass1 = Nothing 表示释放对象引用,以便销毁对象和释放对象所占用的系统资源。一个对象在使用后,应该用“Set 对象名 = Nothing”释放对象引用。尽管在对象变量生存期结束时,VB会自动释放对象,但通过Set 语句显式释放对象是一个很好的编程习惯,尤其是在程序对象很多且关系很复杂时,他不仅能及时地释放资源,更能消弭许多错误与无形。

 

添加“属性”

类模块还有一个不同于标准模块的特点是,在类模块中允许定义属性。属性是通过Property Get 过程和Property Let(Property Set)过程来定义的,分别对应于同一个属性的“取值”和“设置值”。在这俩个过程中还可以编写在“取值”和“设置值”时需要被执行的代码。一般地,在类模块中可定义一个私有(Private)的模块级变量,通过此模块级变量保存属性值。需要获取属性值时,直接返回此变量的值;需要设置属性值时,通过该变量保存新值。例如在类模块中定义一个Boolean 类型的AutoClose属性的代码可以是:

'此行要在类模块的声明部分
Dim lAutoClose As Boolean
Public Property Get AutoClose() As Boolean
    AutoClose = lAutoClose
End Property


Public Property Let AutoClose(ByVal vNewValue As Boolean)
    lAutoClose = vNewValue
End Property


图(三)定义一个模块级的私有模块变量,通过Property Get 过程和Property Let过程分别定义了获取属性值和设置属性值

 

上述例子中首先定义了一个模块级的私有模块级变量lAutoClose,然后通过Property 
Get
过程和Property Let过程分别定义了获取属性值和设置属性值的代码。注意 Property  Get 过程和Property Let过程的过程名要一致,这里都是AutoClose,该名称也是所定义的属性名称。Property  Get过程的返回值类型就是属性的类型,在过程代码中,只返回了模块级变量lAutoClose的值。Property Let 过程没有返回值,但多出一个参数vNewValue,该参数就是主调程序设置属性时的设置值,该参数的类型也要和属性的类型保持一致,本例中都是Boolean. Property Let  过程的代码中,只是简单地将模块级变量lAutoClose 赋值为属性的设置值vNewValue。如果要定义一个只读属性,那就只编写Property Get 过程,而不编写Property Let 过程。



Access软件网官方交流QQ群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助