《VisualBasic过程和变量的作用域.ppt》由会员分享,可在线阅读,更多相关《VisualBasic过程和变量的作用域.ppt(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、理解多窗体及多模块应用程序各过程与变量的关系 理解通过全局变量实现各过程之间数据的传递; 掌握多模块中过程的作用域和调用关系 掌握变量作用域及生存周期。,本章要求:,过程和变量的作用域,本章重点:,本章难点:,多模块应用程序各过程与变量的关系、变量和过程和作用域。,多模块应用程序各过程与变量的关系,前面我们介绍了VB应用程序(通常称为工程)的组织结构,它由窗体模块、标准模块和类模块组成。VB程序代码就保存在窗体模块文件(.Frm)、标准模块文件(.Bas)或类模块文件(.Cls)中。它们形成了工程的一种模块层次结构,如下图所示。,1 概 述,2 过程的作用域,Public|Private Su
2、b 子过程名(形式参数列表) . End Sub,概念,通用子过程和函数过程既可写在窗体模块中也可写在标准模块中,在定义时可选用关键字Private(局部)和Public(全局),来决定它们能被调用的范围。,1、窗体/模块级过程: 加Private关键字的过程,只能被定义的窗体或模 块中的过程调用。 2、全局级过程: 加Public关键字(或缺省)的过程,可供该应用程序的所有窗体和所有标准模块中的过程调用。,按过程的作用范围来划分,过程可分为: 模块级过程 全局级过程,用例1来说明过程的作用域,2 过程的作用域,总结归纳过程的定义及作用域如下表,2 过程的作用域,Sub Main过程(P96)
3、,3 变量的作用域,概述:,在VB中,由于可以在过程中和模块中声明变量,根据定义变量的位置和定义变量的语句不同,变量可以分为: 局部变量(过程级变量) 窗体/模块级变量(私有的模块级变量,能被本模块的所有过程和函数使用) 全局级变量(公有的模块级变量)。,3.1 过程级变量局部变量,局部变量:在过程内用声明的变量,只能在本过程中使用。,在过程内部使用 Dim 或者 Static 关键字来声明的变量,只在声明它们的过程中才能被访问或改变该变量的值,别的过程不可访问。所以可以在不同的过程中声明相同名字的局部变量而互不影响。,3 变量的作用域,例: Private Sub Form_Load() D
4、im n% n= 10 End Sub Private Sub From_Click() Dim n% Print “n=“;n End Sub,程序运行后单击窗体,其输出结果是什么?,3 变量的作用域,3.2 窗体/模块级变量,窗体/模块级变量:在“通用声明”段中用Dim语句或用Private语句声明的变量,可被本窗体/模块的任何过程访问。但其他模块却不能访问该变量。 例如:在“通用声明”段声明如下变量: Private s As String Dim a As Integer,3 变量的作用域,例: Dim n% Private Sub Form_Load() n= 10 End Sub
5、Private Sub From_Click() Print “n=“;n End Sub,3.3 全局变量,全局变量也称公有的模块级变量,在窗体模块或标准模块的顶部的“通用”声明段用Public关键字声明,它的作用范围是整个应用程序,即可被本应用程序的任何过程或函数访问。 例如: Public a As Integer,b As single,3 变量的作用域,3种变量声明及使用规则如下表:,3 变量的作用域,一、公用变量与局部变量同名 在不同过程中定义同名变量,它们互不影响,但若在一过程中定义使用了与全局变量同名的变量,则就应注意。,3.4 关于多个变量同名,3 变量的作用域,Public
6、 Temp As Integer 定义全局变量 Private Sub Form_Load() Temp = 1 将全局变量Temp 的值设置成 1 End Sub Private Sub Command1_Click() Dim Temp As Integer 定义局部变量 Temp = 2 将局部变量Temp 的值设置成 2 Print temp=; Temp Print temp=; Form1.Temp End Sub Private Sub Command2_Click() Print temp=; Temp End Sub,3 变量的作用域,Private Sub Form_Click() Dim i% ,isum% For i = 1 To 5 isum = sum(i) Print isum, Next i End Sub,Private Function sum(n As Integer) Dim j As Integer j = j + n sum = j End Function,1 2 3 4 5,Static j As Integer 结果如何?,补充例题:,3 变量的作用域,