20.变量的作用域 变量作用域是指变量可作用范围。按作用域分变量有以下几种类型: (1)局部变量 窗体上的控件建立事件过程的内部用Dim声明,或不说明而直接使用的变量是局部变 量。 局部变量仅仅在这个过程内部有效,在过程之外使用是没有作用的。局部变量的作用域 为定义变量的过程内部使用。 局部变量是在过程执行时,才会在内存中为变量开辟存储单元,过程结束时局部变量所 占用的内存单元将被释放,每次调用过程时局部变量都会重新分配空间。 (2)窗体级变量 在程序代码窗口的通用声明段中用Dim语句声明的变量称为窗体级变量。 窗体级变量可以被本窗体的任何过程访问。窗体级变量随着窗体的加载而生成,只要窗 体不被卸载就一直占用内存的单元。 (3)全局变量 全局变量必须在工程公共标准模块中用Public语句声明。 格式:Public变量名[As类型 全局变量在执行工程时就己经在内存中形成,并一直保存到工程结束为止。全局变量的 作用域为整个工程。 (4)静态变量 局部变量会随着过程的结束而消失,如果希望下次执行这个过程时能够找到原来执行时 生成的值,就要使用静态变量。 静态变量一般在过程内定义。 格式:Static变量名[As类型 静态变量在第一次使用过程时生成,而过程结束时静态变量不释放一直保存,再次调用 过程时静态变量保持原来的值。 静态变量只能被定义的过程所使用,不会被其他过程所使用,所以其作用域也是在定义 变量的过程内部使用。 21.过程作用域 过程作用域是指过程可作用的范围。按作用域,过程有以下几种类型: (1)窗体/模块级过程 窗体模块级过程是在由Private方式定义的过程。窗体/模块级过程仅仅在本身的窗体/ 模块内部有效,在窗体/模块级之外是没有作用的。 (2)全局级过程 全局级过程是由Public方式定义的过程。全局级过程在工程内的所有窗体和模块中都 有效。 所以其作用域是整个工程。 22.过程、函数 过程就是完成某一特定功能的程序,可供事件过程或其它过程所调用。有两大类过程: 系统提供的内部函数和事件过程、用户自定义函数和过程。 (1)用户自定义函数和过程的特点
' *+278 $*sI$G$*tu>Ù$*sYHmB £¦vk -²¿'(hµø( ðk* *&1 4VRf_Æ@)*Ivk > vkww^ÌK ðkYxV^ aù)*I5Y$*>vk$*s Ó ðk)*> vkI^ v?·V3Å^ðTÓyzV ;·vkÁ <*ð{=>,Vo|* ·vk}Å8ib> £¦-²} ^®~-*4T* *&1 DE4ÒÓ-²}> -²}GH="-² ì>-²} -²/_ VØh- ²f=ÜJÆ<*ð> £¦üv üv[\^i5`/.kT* 456& DE4> @AB456& ú üv^v?i·Üàj^ðT V,Jƶi;ÓÏ>üv $*sÓ°Ki> £¦2 vkÅ ;_VWXSTov?ÌK ·:¶Av?· 3VÜh)*2> 2JU^ ð > @AB& ú 2^Jo)* · V_ ;·2f>,JÆV{o|* ·2A3> 2Ø= Á)*VfÅ=y Á)*VÁHy$*sI^ ðk)*> 95278 $*sI$ G$*tu>Ù$*sV YHmB £¦-²=.k} -².k} I^¼ 4'&8 A >-²=.k} ww^"-²= .kðkYxV^-²=.k}aùI5Y$*> £¦üv} üv} I¼ 456& A >üv} ^iðÁY-²ë.kT} Yx> ÁHy$*sI°Ki> 95- ÜIû sJÂ7VGø( Ry Á|*>Y2 B Mïðk©ëø( *& ©ë > £¦*& ©ë Â
这类函数和过程是用户根据自己的需要定义的,可在工程中被调用执行。 (2)VB提供的自定义过程有4种:Sub子过程、Function函数过程、Property属性过 程、Event事件过程 (3)子过程和函数过程的异同点 共同点:都是为完成某个功能而编写的一段程序,使用时被其他过程调用。 不同点:子过程考虑更多的是执行的过程,结果体现在执行过程中,不带有返回值,调 用时使用Cl语句:函数过程强调的是返回的结果,因此具有类型,调用时需要使用相同 类型的变量接收函数的返回值或在表达式中应用函数,函数过程不能单独作为一条语句执 行。 23.子过程和函数过程的形式 (1)子过程形式 [Private Public[Static]Sub<过程名>L(参数表)] <语句序列小 [Exit Sub] <语句序列> End Sub 说明: 子过程以Sub开头,以End Sub结束。其中的语句序列称为过程体。 过程名:命名规则与变量名相同,由用户指定 参数表:过程被调用时传送给该过程的形式参数表。 Exit Sub语句:表示从过程中退出,并返回主调过程。 (2)函数过程形式 [Private Public[Static]Function<函数名>[(参数表)][As类型] <语句序列> [Exit Function] [函数名=表达式] End Function 说明: 函数过程以Function开头,以End Function结束,其它含义与子过程中相似。 As类型:是函数过程返回值的数据类型。 由函数过程返回的值放在<表达式>中,再将它赋给函数名。 Exit Function语句:表示从函数过程中退出,并返回主调过程。 24.子过程和函数过程的调用方法 (1)子过程的调用方法 方法l:用Call语句调用Sub过程,格式为: Call过程名[(参数表)] 方法2:把过程名作为一个语句来使用,格式为: 过程名「参数表] (2)函数过程的调用方法 函数名(「参数表])
Ì©ë I*+&gh VG^iT=|*v?> £¦2( ï& Y B56 ~ .5&# © 4'#,'9 [\ 8 ø( £¦~ ë© `B}IÓû sK7_]JV)*·=y |*> fB~ Iv? VX²^v? TVf YÀ¸3V| *·)* DE© |IÀ¸XVYV|*·gh)*w @©À¸3R^NOATx*©V© f $ÓJCDEv ?> :95;95<= £¦~ A 4'&8>456&&56 ú£¡N¦ DEF 0&56 DEF 56 B ~ H 56 yUVH 56 ;>yTDEFÒÓ ²> úBú¢ZúwV¼*$ ¡NB =|*·£¤ A¡N> 0&56 DEBN1½ TßV,À¸l| > £¦© A 4'&8>456&&.5&#©ú£¡N¦ DEF 0&.5&# ©úâNOA .5&# B © H .5&# yUVH .5&# ;Vyñ ~ Tw¥> BI© À¸3> ¼© À¸3,^NOATV{{E©ú> 0&.5&# DEBN1½© TßV,À¸l| > :95;95>7?@ £¦~ |* B* DE|* 56 V@AÓB ú £¡N¦ BL ú$ÓJKDE)*V@AÓB ú ¡N £¦ © |* ©ú£¡N¦