发信人: pack27()
整理人: gzwsh(2001-05-12 22:56:12), 站内信件
|
第二天:建立一个简单的类
作者:黄河
在《第一天:类的概念》中我们讲了类的概念。今天我们就再来看看如何创建上次用过的那个cDeveloper类是怎样创建的。
首先:我们新建一个工程,然后在“工程浏览器”中按鼠标右键,在弹出菜单中选择“添加”,在添加菜单项的下级菜单中选择“添加类模块”。在弹出的“添加类模块”对话框中双击“VB 类生成器”。
接着,我们会看见类生成器对话框。现在我们点击工具栏上的第一个按钮,也就是添加新类的按钮。这时,会出现类模块生成器对话框。在这个对话框的属性选项卡上的“名称”(Name)文本框中输入cDeveloper——在这个文本框下面还有一个“基于”(Based On)文本框,这里我们先不去管它,以会我会讲到它的。在这个对话框的“特性”选项卡中,有一个“描述”文本框,我们可以在里面输入对这个类的说明,比如:“这是一个程序员类”。然后我们按确定按钮退出“类模块生成器”对话框。
再接着我们看看原来的“类生成器”对话框中左边的树型浏览器中在原来的工程下面多了一个“cDeveloper”项。选中这个项,点击对话框工具栏上的第三个按钮(添加属性),这时会弹出“属性生成器”对话框。
在这个对话框中的“属性”选项卡中的“名称”文本框中,我们输入:DeveloperName(这里有一点要注意,在“第一天”的例子中,我用的是Name属性,为什么在这里要用DeveloperName呢?因为Name是VB的保留字,如果您在这里输入了Name,VB会提示您出错的)。然后在“名称”文本框下面的“数据类型”下拉列表中选择”String”项(注意,一定要选择,如果您是输入的,因为大小写的原因,最后生成的代码可能会有问题)。下面的“声明”栏中的选项先不要管它,以后再说。
在这个对话框中的“特性”选项卡中的“描述”文本框中,您可以输入对这个属性的说明,比如:“这是程序员的姓名”。
然后按确定按钮关闭这个“属性生成器”对话框。
进行了上面的操作后,我们会发现,在“类生成器”对话框右边的属性选项卡中多了一项我们才添加的这个DeveloperName属性(您的“类生成器”对话框右边的选项卡可能没有选中“属性”这一页)。
重复上面添加属性的操作,添加一个EmpolderTool属性,数据类型还是为String。
到这时为止,我们的cDeveloper类就有了两个属性了。下面我们要为它添加两个方法.Study和Empolder。
要添加这两个方法,我们要点击“类生成器”对话框上的每四个按钮(添加新方法)。点击后会出现“方法生成器”对话框。
在这个对话框中的“属性”选项卡中的名称文本框中,我们输入“Study”(这个文本框下面的内容(包括参数)我们先不去管它)。然后点确定关闭这个“方法生成器”对话框。
重复上面添加方法的操作,添加一个Empolder方法。
最后,我们就剩添加两个事件了。让我们点击“类生成器”工具栏上的第五个按钮(添加新事件),我们就会看到“事件生成器”对话框。我们在这个对话框中的名称文本框中输入“EmpolderSucceed”,下面的参数现在不用管它,以后介绍。
重复添加新事件的操作,在我们的类中添加“EmpolderLost”事件。
现在我们的工作完成了,只要选择类生成器的“文件”菜单中的更新工程,这个cDeveloper类和它的属性、方法和事件就被添加到我们的工程中了,我们可以从“工程”浏览框中看到这个新加入的cDeveloper类模块。双击这个类模块,我们可以看见VB为这个类模块添加了下面这些代码:
Option Explicit
'local variable(s) to hold property value(s)
Private mvarDeveloperName As String 'local copy
Private mvarEmpolderTool As String 'local copy
'To fire this event, use RaiseEvent with the following syntax:
'RaiseEvent EmpolderLost[(arg1, arg2, ... , argn)]
Public Event EmpolderLost()
'To fire this event, use RaiseEvent with the following syntax:
'RaiseEvent EmpolderSucceed[(arg1, arg2, ... , argn)]
Public Event EmpolderSucceed()
Public Sub Empolder()
End Sub
Public Sub Study()
End Sub
Public Property Let EmpolderTool(ByVal vData As String)
'used when assigning a value to the property, on the left side of an assignment.
'Syntax: X.EmpolderTool = 5
mvarEmpolderTool = vData
End Property
Public Property Get EmpolderTool() As String
'used when retrieving value of a property, on the right side of an assignment.
'Syntax: Debug.Print X.EmpolderTool
EmpolderTool = mvarEmpolderTool
End Property
Public Property Let DeveloperName(ByVal vData As String)
'used when assigning a value to the property, on the left side of an assignment.
'Syntax: X.DeveloperName = 5
mvarDeveloperName = vData
End Property
Public Property Get DeveloperName() As String
'used when retrieving value of a property, on the right side of an assignment.
'Syntax: Debug.Print X.DeveloperName
DeveloperName = mvarDeveloperName
End Property
我使用的是英文版的VB6,所以如果您使用的是中文版的VB6,见到的代码中的注释部份和我的不同,您的是中文的注释。第一句:Option Explicit。你也可能没有,但最好请您加上,这是强制声明的选项,有了这一句之后,您的所有的变量都必须显示地声明后才能使用,这能一定程度上保证您的代码的正确性。
您如果觉得跟着我用类生成器生成这个类太繁锁,没关系,您只要象添加窗体一样新添加一个类,并双击打开它,然后把上面的这段代码Copy到它里面也可以,反正以后我会对这些生成的代码进行说明的,当您熟悉这些代码的涵义后,用代码而不用类生成器有时反而更简单。
对于这个生成的类,现在还只能对他的属性赋值,他还什么也不能做,这并不奇怪,因为我们还要添加代码告诉他该怎么做,该怎么响应事件。
下次,在学习如何添加代码来完善我们的cDeveloper的功能前,先要解决掉一些细节问题。
(未完待续)
---- ......
不想想起偏更记起
假装开心心更悲
辗转翻侧因为你起
愿你不是你
......
可捒选不恋上你么
可捒选不想你么
种种捒选可以许多
若我不是我
...... |
|