分享
 
 
 

四、自定义方法及其使用范围

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

自定义方法及其使用范围虽然VB6中给我们提供了不少的子程序和函数,但在实际开发中,可能还是不能满足我们的需要,于是就要我们自己创建一些来使用了,在VB6中,我们可以很容易的创建出自己的子程序和函数,现在就让我们开始吧。

1 自定义函数在VB6中,使用Function关键字来创建函数,现在我们打开窗体Form1的代码窗口,然后在左边列表中选择“通用”,这时输入代码的光标就会在所有其它代码块的外边,我们就在这里开始编写如下代码:

Function IsLeapYear(iYear As Long) As Boolean

IsLeapYear = ((iYear Mod 100 <> 0 And iYear Mod 4 = 0) Or (iYear Mod 100 = 0 And iYear Mod 400 = 0))

End Function

在这三行代码中,我们使用Function来标明要创建的是一个函数,而End Function则指明了函数结束的位置,在这之间的则是函数体代码。

跟在Function关键字后面的IsLeapYear则是我们所定义的函数的函数名,也就是在调用时要用到的名称。在函数名后的括号中,则是函数的参数部分,这一部分在有些函数中可能没有,但这时括号是不能省略的。

关于函数的参数,和在程序中定义变量是很相似的,即“参数名 As 类型”,如果有多个参数,则使用英文半房的逗号“,”分隔。

在括号的后面,As关键字后则是函数的返回值类型,在这里我们返回的则是一个布尔型。

关于这个函数,它的作用也许大家从名称中就可以看出来了,没错,它就是用来判断参数iYear所带入的年份是不是一个闰年,也就是二月有29天,大家可以在一个按钮的响应代码中添加下面这句代码来试试它的效果:

MsgBox (IsLeapYear(1904))

然后,你可以更改1904为任意数字,然后看看判断的结果。当一个年份是闰年是则显示True,如果不是则显示False。

我们看到在函数体内只有一行代码,这可以完成最基本的操作,在这行代码中,我们使用了Mod运算符,它的运算结果将会是一个整数,是两数相除后的余数,如果能被除尽,则返回0。在代码中,如果一个年份不能被100整除,则能被4整除就是一个闰年;如果年份能被100整除,则只是在同时能被400整除时才是一个闰年。

在本行代码中,还使用了And和Or运算符,它们被称为逻辑运算符,下面分别说明一下:

And运算符,被称为“与”运算符,只有在两个运算量都是True或非0的数时,运算结果才是True,否则运算结果就是False。

Or运算符,又称为“或”运算符,当运算的两个量有一个是True或非0时,运算结果是True;其中两个运算量都是False或都为0时,结果才是False。

在这里,我们还可以看到这一行代码中使用了大量的运算符,有时它们连在一起形成很长的代码,那它们又是如何来判断执行的顺序呢?其实,在每一种编程语言中都有有运算符的优先级原则,也就是不同运算符在一起时先执行谁的操作,后执行谁的操作。但实际应用中,想记清楚几十个运算的优先级可能不是一个太容易的事情,所以我选择了不去记它。在这里,如果不能对运算符的优级有十足的把握,我们还可以使用小括号强行更改代码的运算顺序,在代码中我们可以看到使用了三对小括号,如果对两个内层小括号中的代码还不是太清楚的话,我们还可以加几对小括号来强行控制,代码可以改成:

Function IsLeapYear(iYear As Long) As Boolean

IsLeapYear = (((iYear Mod 100 <> 0) And (iYear Mod 4 = 0)) Or ((iYear Mod 100 = 0) And (iYear Mod 400 = 0)))

End Function

到这里,如果你对它们的运算方法还不是很熟悉的话,可以暂时放一放,这样长的代码可以在实践中逐渐掌握。

关于函数的定义,我们就先介绍到这里,在前面的学习中,我们已经知道子程序和函数最大的区别就是没有返回值,下面我们看看它是怎么定义的。

2 自定义子程序子程序的定义,我们使用Sub关键字,看一看下面这个子程序,它的功能是清除窗体Form1上所有文本框的内容:

Sub ClearText()

Dim ctr As Control

For Each ctr In Form1.Controls

If TypeOf ctr Is TextBox Then ctr.Text = ""

Next

End Sub

其中,Sub关键字后跟着的就是子程序的名称ClearText;我们可以看到,这个子程序并没参数,和函数一样,当没有参数时一对小括号也是不能省略的。也和函数相似,子程序是以End Sub来结束的。

再来看一下方法体内的代码吧,在这里我们定义了一变量ctr,它的类型是Control,然后我们使用For Each…In循环语句(为什么是这个语句而不是For…To语句呢,当我们学习完面向对象后也许你就能明白了,在编码中大家可以参照编写)遍历窗体Form1中所有的控件,当这个控件的类型是文本框时,则将它的Text属性设置为空串,从而达到了清除所有文本框内容的目的;要注意的是,在这里TypeOf和Is是关键字。

再来看看这个If语句,好象没有End If来结束,这是因为在条件成立时只有一条执行语句,这时我们就可将这一行执行语句写在Then关键字的后面,从而省略和End If语句。

3 方法的使用范围在上面我们所定义的两个方法IsLeapYear和ClearText,它们只能在Form1内部使用,ClearText到也没什么,然而IsLeapYear有可能在很多处理日期的地方要用到,我们总不能每次都要编写一次吧?

当然不用,只要在IsLeapYear定义的Function关键字前加上一个Public关键字就可以了,如:

Public Function IsLeapYear(iYear As Long) As Boolean

其它代码则不用改变,然后,我们程序的其它地方就可以使用“Form1.IsLeapYear(2005)”这样的形式来调用了,而这里如果将Public关键字改成“Private”则又只能在Form内使用了,这两个关键字就决定了方法的使用范围,我们会以后面学习中很多的接触到它们的用法。

对于在程序中要公用的方法,如系统中提供的MsgBox函数、CStr函数,我们在窗体中定义它们当然是不太方便的,在后面我们还会学习到另外的大规模创建公用代码的方法。

关于方法的定义,在这里要说明的是,函数或子程序只能单独存在,而不能互相嵌套,也就是说在子程序或函数的代码块中不能定义其它的子程序和函数。

在前面我们使用了Dim变量来定义变量,如果要定义一个在整个程序中都要使用的变量,也可以在窗体的“通用”部分定义它,并且将Dim关键字改成Public关键字;这些变量只能定义在所有窗体方法的前面,这一点应该注意。

对于变量,Dim、Private和Public三种定义方式的不同在于:Dim只能在方法体内定义变量;Private定义的变量则只能在所定义的文件内使用,如窗体文件;而Public所定义的则是全局的变量,它可以使用在整个程序中使用。

在编程中,请大家注意变量和方法的使用范围。

在下一章,我们将会来了解一下VB6中的错误处理。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有