怎样创建类模块
时 间: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群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)
- 【Access Dsum示例】...(12.16)

学习心得
最新文章
- 【Access高效办公】如何让vb...(04.11)
- 仓库管理实战课程(10)-入库功能...(04.08)
- Access快速开发平台--Fun...(04.07)
- 仓库管理实战课程(9)-开发往来单...(04.02)
- 仓库管理实战课程(8)-商品信息功...(04.01)
- 仓库管理实战课程(7)-链接表(03.31)
- 仓库管理实战课程(6)-创建查询(03.29)
- 仓库管理实战课程(5)-字段属性(03.27)
- 设备装配出入库管理系统;基于Acc...(03.24)
- 仓库管理实战课程(4)-建表操作(03.22)