关键词不能为空

当前您在: 主页 > 英语 >

VB6.0中用户类和数据源类的设计和使用技术

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-19 01:43
tags:

-

2021年2月19日发(作者:图片英文)


VB6.0


中用户类和数据源类的设计和使用技术




一、



绪论



Visual


Basic


6.0


是面向对象的编程 语言,允许开发人员设计自定义类。用户自定义类(


Class


)是


VB


6.0


中实现软件重用的最 基本方法,也是设计和使用


Active X EXE/DLL


部件的技术基础。在


VB 6.0


中可以用手工的


方式直接设计类,


也可用类设计器设 计类,


而且,


VB


6.0

< p>
提供了类向导(如数据源类向导,复杂数据源类向导)


供快速设计复杂类。


本文基本上以笔者设计的通讯电源电压监控为例介绍定义和使用类


(特别是类的自定义事


件)


的方法


( 包括属性、


方法、


自定义事件)


,并将 讨论包含两个外部数据成员的数据源类的定义、


使用技术。



二、自定义类的设计和使用



2.1


自定义类的设计




手工设计自定义类分以下四步:




第一步、设计类的属性或属性过程(


Property






VB


6.0


中有两种类型的属性,即用向类模块中添加


Public


变量 的方法定义的一般属性,和用向类模块中


添加


Property


GET/LET/SET


过程的方法定义的属性过程,


一般使用属性过程。


属性过程分只读



Property


GET


< br>、


只写(


Property


L ET/SET


)、读写(


Property

< br>GET



LET/SET


)属性 过程三种,


SET


用于定义对象类型属性过程,



LET


用于定义非对象类型属性过程。


GET/LET/SET


的含义是:当读取


/


使用(即


Access


存取)该属性值时,执



Property


Get


中的代码;当写入


/


修改(即

< br>Assign


指派)该属性值时,执行


Property


Let



Set


中的代码。因


为在存取或指派属性值时能执行一段代码,我们就可以在属性过程中增加 许多代码(如检验代码),这正是属


性过程的优点。



例如:下面代码定义了两个属性


CurVolume

< br>和


PreviousVolume


Option Explicit


Public PreviousVolume As Integer


'


定义了属性


PreviousVolume


'


下述代码定义属性过程


CurVolume


Dim mVolume As Integer


'


为属性


CurVolume


定义临时 存贮区



Public Property Get CurVolume() As Integer


'


读属性


CurVolume


CurVolume = mVolume


End Property


Public Property Let CurVolume(ByVal vNewValue As Integer)


'


写属性


CurVolume


If vNewValue < 0 Then


MsgBox (


电压值为负,无法写入!



Else


mVolume = vNewValue


End If


End Property




关于属性过程有几点说明:




读写属性过程的


Property


G ET


名称和


LET/SET


名称必须相 同,且


Property


GET


的参 数个数比


LET/SET


的参数


个数少 一个,但


Property GET


的类型和

< br>LET/SET


的最后一个参数的类型相同。例如:下例定义了一个数组属性


mintNa(0 TO 99)


Option Explicit


Private mintN As Integer


Private mintNa(100) As String


Public Property Get NumberOfTeeth


(ByVal Newvalue As Integer) As String


NumberOfTeeth = mintNa(Newvalue)


End Property


Public Property Let NumberOfTeeth(ByVal Newvalue As


Integer, ByVal x As String)


mintNa(Newvalue) = x


End Property



由于窗体为类,故可以为窗体添加属性过程。



属性过程的作用域有三种:



Private


:本类模块中有效



Public


:本类模块和其他模块中均有效



Friend


:主要用于


Active X

部件设计。对本工程中而言,相当于


Public


;对其他 工程


/


应用而言,相当于


Privat e


第二步、设计类的方法(


Method





向类模块中添加


Sub



Function


过程即可。例如:下例定义了一个公用方法



Public Sub VolumeCheck()


If CurVolume < 200 Or CurVolume > 240 Then


MsgBox (


引发事件


VolumeWarn


RaiseEvent VolumeWarn


End If


End Sub



第三步、设计类的 事件(


Event






VB6

中,设计和使用类模块中的自定义事件很特殊,不易理解。具体而言,向类模块中添加自定义事件

< p>
有三步:





1


)在类模块的声明部分,用


Public Event


定义一个事件,事件可以有参数。例如,下例定义了两个事


件:



Option Explicit


Public Event VolumeWarn()


Public Event PercentDone(ByVal pERcent As Integer, ByRef Cancel As Boolean)




2


)在该类模块的某一个模块中,用


Raise Event


引发该事件。例如,公用模块


VolumeCheck


引发事件


Volume Warn


(如果属性


CurVolume


之值在


200~240V


范围之外则引发该事件):



Public Sub VolumeCheck()


If CurVolume < 200 Or CurVolume > 240 Then


MsgBox (


引发事件


VolumeWarn


RaiseEvent VolumeWarn


End If


End Sub



如果该事 件被引发,那么将执行为该事件编写的事件代码。问题是:事件代码在哪儿编写?不是在该类

模块中编写,而是在事件源(引发该事件的对象)中编写,在事件源的声明部分用


W ITHEVENT


声明该类。



(< /p>


3


)在事件源中编写事件代码。例如,在项目中的


Test


窗体中引发该事件


(



Test


为事件源


)


,那么:




首先在< /p>


Test


窗体的声明部分用


WITHEV ENT


声明该类(


Private WithEvents xVolume As ClsVolumeCheck


),


代 码编辑窗口的左边将出现该


WITHEVENT


变量

< p>
xVolume



然后在代码编辑窗口 的左边选择


WITHEVENT


变量,在右边选择


VolumeWarn


模块,于是产生一个空模块(如


下图):




在右边的


VolumeWarn


模块中为该事件编写的事件代码:

< p>


Private Sub xVolume_VolumeWarn()


MsgBox (


电压不正常!



处理电压代码



' ..............


End Sub


< /p>


从上可以发现,不同的事件源所编写的自定义事件代码可以不相同。如何使用事件将在后面 讲述。




第四步、编写类的


Initalize



Termina te


事件代码




为该类编写初始化和中断事件。




2.2


自定义类的使用




使用自定义类分四步:




第一步、在适当的模块中(如通用)声明类变量。若类中 有自定义事件,则使用用


WITHEVENT


声明该类,并


为自定义事件编写事件代码(如前述的设计类的事件的第(


3


)步)。例如:



Private WithEvents xVolume As ClsVolumeCheck


Private yVolume As cls


多态接口



Private zVolume As cls


抽象类




第二步、在适当的模块中(如


Form_Load


模块 )对类变量赋值。例如:



Private Sub Form_Load()


Set xVolume = New ClsVolumeCheck


End Sub



第三步、在适当的模块中(如


Form_Load

< br>模块)使用类的


Public



Friend


属性、方法。例如:



Private Sub Command1_Click()


ume =


'


对< /p>


xVolume



CurVolume< /p>


属性赋值



Call Check


'


调用


xVolume



VolumeCheck


过程



End Sub



由于


ClsVolumeCheck


类中的

VolumeCheck


过程中有


RaiseEvent VolumeWarn


语句,故


Call

Check


时可能引发事件


VolumeWarn


。当


200


>


>2 40



,


将引发事件

< br>VolumeWarn


,并执


行在本窗体中为该类编写的 事件代码:



Private Sub xVolume_VolumeWarn()


MsgBox (


电压不正常!



'


处理电压代码



End Sub



第四步、释放类对象变量。这一点非常重要,当不用类对 象变量时一定要释放它,以释放内存资源。例如:



Private Sub Form_QueryUnload(Cancel As Integer,


UnloadMode As Integer)


Set xVolume = Nothing


End Sub



三、数据源类的设计与使用




数据源类是一个从外部源获取数据的类,


这些数据将被其他对象所使用的,


数据识别类不是必须有可视的


外在表示,也不局限于某个特定的数据接口(如


DAO

或者


RDO)


。数据识别类可以作为任何类型数据的数据源 ,


包括传统的


ODBC


源、


ActiveX Data Objects (ADO)


,或者任何


OLE DB


提供程序。




3.1


创建步骤




第一步、增加一个新类,设置类的

DataSourceBehavior


属性为


vbDa taSource


,则类就可以作为其他对象


的数据源;增加< /p>


ActiveX Data Objects 2.0 Library


的引用。




第二步、设计数据源类的


Initialize


事件代码、


GetDataMember


过程模块;< /p>




第三步、为数据源类设计一 些


Public


方法。




例如下面的代码定义了一个包含两个外部数据成员的数据源类:



Option Explicit


Public Event MoveComplete()


'


公共事件



Dim WithEvents adoEmployeesRS As Recordset


'


第一个外部数据成员



Dim WithEvents adoVolumeRS As Recordset


'


第二个外部数据成员




Private Sub Class_Initialize()


'


类的初始化事件



Dim db As Connection


Set db = New Connection


Location = adUseClient



Data Source=C:Program FilesMicrosoft


Visual ;


'


创建一个具体的


ADO


连接



Set adoEmployeesRS = New Recordset



adLockOptimistic


'


创建第一个具体的外部源所对应的


ADO Records et



adoEmployeesRS





Set adoVolumeRS = New Recordset



Customers

-


-


-


-


-


-


-


-



本文更新与2021-02-19 01:43,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/666400.html

VB6.0中用户类和数据源类的设计和使用技术的相关文章