VB编程基础教程4–高级变量主题 | 异次元软件世界

来源:百度文库 编辑:神马文学网 时间:2024/04/29 05:37:25

VB编程基础教程4–高级变量主题

[ 程序乐园 ]

使用多个同名的变量
如果不同模块中的公用变量使用同一名字,则通过同时引用模块名和变量名就可以在代码中区分它们。例如,如果有一个在 form1 和 module1 中都声明了的公用 integer 变量 intx,则把它们作为 module1.intx 和form1.intx 来引用便得到正确值。
为了看清这是如何工作的,在一个新工程中插入两个标准模块,并在窗体上画上三个命令按钮。
在第一个标准模块 module1 之中声明一个变量 intx。test 过程设置它的值:
public intx asinteger      ‘声明 module1 的 intx。
sub test ()
   ’设置 module1 的 intx变量的值。
   intx = 1  
end sub
在第二个标准模块 module2 中声明了第二个变量intx,它有相同的名字。又是名为 test 的过程设置它的值:
public intx as integer      ‘声明了module2 的 intx。
sub test ()
   ’设置 module2 的 intx 变量的值。
   intx= 2  
end sub
在窗体模块中声明了第三个变量 intx。名为 test 的过程又一次设置它的值。
publicintx as integer      ‘声明了该窗体的 intx 变量。
sub test ()
   ’ 设置 form中的 intx 变量值。
   intx = 3
end sub
在三个命令按钮的 click事件过程中,每一个都调用了相应的 test 过程,并用 msgbox 来显示这三个变量的值。
private subcommand1_click ()
   module1.test               ‘ 调用 module1 中的 test。
  msgbox module1.intx         ’ 显示 module1 的 intx。
end sub
privatesub command2_click ()
   module2.test               ‘ 调用 module2 中的test。
   msgbox module2.intx         ’ 显示 module2 的 intx。
end sub
privatesub command3_click ()
   test                     ‘ 调用 form1 中的test。
   msgbox intx               ’ 显示 form1 的 intx。
end sub
运行应用程序,单击三个命令按钮中的每一个按钮。于是将看到三个公用变量被分别引用。注意在第三个命令按钮的 click 事件过程中,在调用 form1的 test 过程时不必指定 form1.test,在调用 form1 的 integer 变量的值时也不必指定 form1.intx。如果多个过程或变量同名,则 visual basic 会取变化更受限制的值,在这个例子中,就是 form1 变量。
公用变量与局部变量的比较
在不同的范围内也可有同名的变量。例如,可有名为 temp 的公用变量,然后在过程中声明名为 temp的局部变量。在过程内通过引用名字 temp 来访问局部变量;而在过程外则通过引用名字 temp来访问公用变量。通过用模块名限定模块级变量就可在过程内访问这样的变量。
public temp as integer
subtest ()
   dim temp as integer
   temp = 2                  ‘ temp的值为 2。
   msgbox form1.temp         ’ form1.temp 的值为 1。
end sub
privatesub form_load ()
   temp = 1                  ‘ 将 form1.temp 的值设置成1。
end sub
private sub command1_click ()
   test  
end sub
一般说来,当变量名称相同而范围不同时,局限性大的变量总会用“阴影”遮住局限性不太大的变量(即优先访问局限性大的变量)。所以,如果还有名为 temp的过程级变量,则它会用“阴影”遮住模块内部的公用变量 temp。
阴影窗体属性和控件
由于阴影效应,窗体属性、控件、常数和过程皆被视为窗体模块中的模块级变量。窗体属性或控件的名称与模块级变量、常数、自定义类型或过程的名称相同是不合法的,因为它们的范围相同。
在窗体模块内,和窗体中控件同名的局部变量将遮住同名控件。因此必须引用窗体名称或 me 关键字来限定控件,才能设置或者得到该控件的值或它的属性值。例如:
privatesub form_click ()
dim text 1 , backcolor
’假定该窗体有一个控件也叫做 text1。
  text1 = “variable”       ‘变量用“阴影”遮住控件。
   me.text1 = “control”      ’要得到控件,必须用‘me’限定。
   text1.top = 0          ‘导致出错!
  me.text1.top = 0       ’要得到控件,必须用‘me’限定。
   backcolor =0          ‘变量用“阴影”遮住属性。
   me.backcolor = 0      ’要得到窗体属性,必须用‘me’限定。
end sub
使用同名的变量和过程
专用模块级变量和公共模块级变量的名字也会和过程名冲突。模块中的变量不能和任何过程同名,也不能和模块中定义的类型同名。但可以和公用过程或其它模块中定义的类型或变量同名。在这种情况下,从别的模块访问这个变量时,就必须用模块名来限定。
虽然上面讨论阴影规则并不复杂,但是用阴影的方法可能会带来麻烦,而且会导致难以查找的错误。因此,对不同的变量使用不同的名称才是一种好的编程习惯。在窗体模块中应尽量使变量名和窗体中的控件名不一样。

VB编程基础教程4–高级变量主题 | 异次元软件世界 VB编程基础教程8–高级变量主题 | 异次元软件世界 VB编程基础教程8–高级变量主题 | 异次元软件世界 VB编程基础教程5–静态变量 | 异次元软件世界 VB编程基础教程2–变量 | 异次元软件世界 VB编程基础教程3–理解变量的范围 | 异次元软件世界 VB编程基础教程1–编码基础 | 异次元软件世界 VB编程基础教程6–常数 | 异次元软件世界 VB编程基础教程9–数组 | 异次元软件世界 VB编程基础教程10–动态数组 | 异次元软件世界 VB编程基础教程11–过程 | 异次元软件世界 VB编程基础教程12–使用过程 | 异次元软件世界 VB编程基础教程14–控制结构 | 异次元软件世界 VB编程基础教程15–使用对象 | 异次元软件世界 VB编程基础教程17–创建对象 | 异次元软件世界 VB编程基础教程21–优化 | 异次元软件世界 VB编程基础教程9–数组 | 异次元软件世界999 VB编程基础教程9–数组 | 异次元软件世界 VB编程基础教程17–创建对象 | 异次元软件世界 VB编程基础教程13–向过程传递参数 | 异次元软件世界 VB编程基础教程16–对象之间的关系 | 异次元软件世界 VB编程基础教程18–在应用程序中使用DLL过程 | 异次元软件世界 VB编程基础教程19–界面设计的基础 | 异次元软件世界 VB编程基础教程20–坐标系统概述 | 异次元软件世界