文章作者 100test 发表时间 2007:03:10 18:33:36
来源 100Test.Com百考试题网
1、再谈Sub过程与Function过程的调用及使用
调用过程有很多方法,它们与过程的类型、位置以及在应用程序中的使用方式有关。调用Sub过程与Function过程不同,在表达式中,调用Sub过程的是一个独立的语句,而调用函数过程只是表达式的一部分。Sub过程还有一点与函数不一样,它不会用名字返回一个值。而与Function过程一样,Sub过程也可以修改传递给它们的任何变量的值。
(1)调用Sub过程
有两种方法:
Call MyProc(FirstArgument,SecondArgument)
MyProc FirstArgument,SecondArgument
说明 当使用Call语法时,参数必须在括号内。若省略Call关键字,则也必须去掉参数两边的括号
(2)调用函数过程
方法一:通常,调用自定义的函数过程的方法和调用VB内部函数过程的方法一样,即在表达式中写上名字。
方法二:也可以像调用Sub过程一样调用Function 过程,如调用函数过程Year:
Call Year(Now)
Year Now
当用这种方法调用函数时,放弃返回值。
一般来说,函数都赋值给某些变量或属性。
(3)调用其它模块中的过程
在工程中的任何地方都能调用其它模块中的公用过程。调用其它模块中的过程的各种方法,取决于该过程是在窗体模块中、类模块中还是标准模块中。
调用窗体模块中的过程:
所有窗体模块的外部调用过程必须指向包含此过程的窗体模块。如在窗体模块Form1中包含SomeSub过程,则可使用语句:“Call Form1.SomeSub(参数列表)”来调用Form1中的SomeSub过程。
调用类模块中的过程:
类模块中的过程与窗体中调用过程类似,在类模块中调用过程要调用与过程一致并且指向类实例的变量。例如DemoClass是类Class1的实例:
Dim DemoClass as New Class1
DemoClass.SomeSub
但是不同于窗体的是,在引用一个类的实例时,不能用类名作限定符(如不能像窗体中用Form1.SomeSub那样使用Class1.SomeSub),必须首先声明类的实例为对象变量(如上面的DemoClass)并用该变量名引用它。
使用标准模块中的过程:
如果过程名是惟一的,则不必在调用时加模块名。无论是在模块内,还是在模块外调用,结果总会引用这个惟一过程。在整个应用程序中,如果过程仅出现在一个地方,这个过程就是惟一的。
如果两个以上的模块都包含同名的过程,例如:对于在Module1和Module2中都有名为“CommonName”的过程,在调用该过程时,分两种情况:
如果在Module1中调用Module2中的“CommonName”过程,那就必须使用模块名进行限定,要用语句:Module2.CommonName(参数列表)。
在下面的练习中,将在前面的“幸运7”程序中添加一个函数,用来计算游戏中的获胜率(Spin中出现一个或多个7的百分比)。为此,可在标准模块中增加一个名为Rate的函数和一个名为Spins的公用变量。然后每次单击“开始”按钮时都调用Rate函数。还要在窗体上新创建的标签中显示计算结果。
在窗体上再添加一个标签,Name属性为“lblRate”、Caption属性为“0.0%”、ForeColor是“红色”,图像框的“Stretch”属性仍设置为True。
界面如下:
在标准模块窗口中键入如下代码(增加一个名为Rate的函数和一个名为Spins的公用变量):
Option Explicit
Public Wins
Public Spins