Visual Basic 程序设计 (丁爱萍) 第9章

上传人:E**** 文档编号:89350630 上传时间:2019-05-23 格式:PPT 页数:25 大小:86.50KB
返回 下载 相关 举报
Visual Basic 程序设计 (丁爱萍) 第9章_第1页
第1页 / 共25页
Visual Basic 程序设计 (丁爱萍) 第9章_第2页
第2页 / 共25页
Visual Basic 程序设计 (丁爱萍) 第9章_第3页
第3页 / 共25页
Visual Basic 程序设计 (丁爱萍) 第9章_第4页
第4页 / 共25页
Visual Basic 程序设计 (丁爱萍) 第9章_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《Visual Basic 程序设计 (丁爱萍) 第9章》由会员分享,可在线阅读,更多相关《Visual Basic 程序设计 (丁爱萍) 第9章(25页珍藏版)》请在金锄头文库上搜索。

1、第9章 变量与过程的作用域,9.1 代码模块的概念 9.2 变量的作用域 9.3 过程的作用域 9.4 高级变量,变量与过程可被访问的范围称为变量与过程的作用域。,9.1 代码模块的概念,在建立VB应用程序时,应该首先设计代码的组成结构。一般情况下,VB应用程序的组成如图9.1所示。,图9.1 VB应用程序的组成,VB将代码存储在3种不同的模块中:窗体模块、标准模块和类模块。 在这3种模块中都可以包含:声明(常数、变量、动态链接库DLL的声明)和过程(Sub、Function、Property过程)。,9.1.1 窗体模块 每个窗体对应一个窗体模块,窗体模块包含:窗体及其控件的属性设置、窗体变

2、量的说明、事件过程、窗体内的通用过程、外部过程的窗体级声明。 窗体模块保存在扩展名为.frm的文件中。默认时应用程序中只有一个窗体,因此有一个以.frm为扩展名的窗体模块文件。如果应用程序有多个窗体,就会有多个以.frm为扩展名的窗体模块文件。,9.1.2 标准模块 标准模块保存在扩展名为.bas的文件中,缺省时应用程序中不包含标准模块。标准模块可以包含公有或模块级的变量、常数、类型、外部过程和全局过程的全局声明或模块级声明。缺省时,标准模块中的代码是公有的,任何窗体或模块中的事件过程或通用过程都可以调用它。,在工程中添加标准模块的步骤为: (1) 从“工程”菜单中执行“添加模块”命令,则打开

3、“添加模块”对话框中的“新建”选项卡。 (2) 在该对话框中双击“模块”图标,将打开新建标准模块窗口。 (3) 在属性窗口修改该模块的“名称”属性(只有“(名称)”属性),给模块命名。接下来就是在标准模块的代码窗口中,向模块中添加过程。,9.1.3 类模块 在VB中,类模块(文件扩展名为.cls)是面向对象编程的基础。程序员可在类模块中编写代码建立新对象,这些新对象可以包含自定义的属性和方法,可以在应用程序内的过程中使用。,9.2 变量的作用域,变量的作用域指变量能被某一过程识别的范围,它决定了哪些子过程和函数过程可访问该变量。 在VB中,可以在过程或模块中声明变量,根据声明变量的位置,变量分

4、为两类:过程级变量(Procedure level)和模块级变量(Module level)。 按照作用范围分类,过程级变量属于局部变量,而模块级变量则属于全局变量。,9.2.1 过程级变量 在一个过程内部使用Dim或Static关键字声明变量时,只有该过程内部的代码才能访问或改变该变量的值,因此被称为“过程级变量”。,9.2.2 模块级变量 在模块的通用段中声明的变量属于模块级变量。 1. 私有的模块级变量 私有的模块级变量在声明它的整个模块的所有过程中都能使用,但其他模块却不能访问该变量。声明方法是在模块的通用段中使用Private或Dim关键字声明变量。,2. 公有的模块级变量 公有的模

5、块级变量在所有模块中的所有过程中都能使用。它的作用范围是整个应用程序,因此公有模块级变量属于全局变量。声明方法是在模块的通用段中使用Public关键字声明变量。,9.2.3 变量的作用域小结,9.2.4 变量的生存期 从变量的作用空间来说,变量有作用域;从变量的作用时间来说,变量有生存期。 静态变量不释放内存单元,动态变量释放内存单元。,1. 动态变量 动态变量是指程序运行进入变量所在的过程时,才分配该变量的内存单元,经过处理退出该过程后,该变量占用的内存单元自动释放,其值消失,其内存单元能被其他变量占用。 使用Dim关键字在过程中声明的局部变量属于动态变量,在过程执行结束后变量的值不被保留,

6、在每一次重新执行过程时,变量重新声明。,2. 静态变量 静态变量是指程序运行进入该变量所在的过程,修改变量的值后,退出该过程,其值仍被保留,即变量所占的内存单元没有释放。当以后再次进入该过程时,原来变量的值可以继续使用。使用Static关键字在过程中声明的局部变量属于静态变量。,9.3 过程的作用域 过程也有作用域。在VB中,过程的作用域分为:模块级(或称文件级)和全局级(或称工程级)。,9.3.1 模块级过程 模块级过程是在某个模块(文件)内定义的过程。如果在Sub或Function前加关键字Private,则该过程只能被在本模块(文件)中定义的过程调用。即其作用域为本模块(文件)。,9.3

7、.2 全局级过程 全局级过程是在定义过程时,在Sub或Function前加关键字Public(可以默认)。全局级过程可被整个应用程序所有模块(文件)中定义的过程调用。即其作用域为整个应用程序(工程)。,9.3.3 调用其他模块中的过程 在工程中的任何地方都能调用其他模块中的全局过程。调用其他模块中的过程的各种技巧,取决于该过程是在窗体模块中、类模块中还是标准模块中。 1. 调用窗体中的过程 所有窗体模块的外部调用必须指向包含此过程的窗体模块。如果在窗体模块Form1中包含SomeSub过程,则可使用下面的语句调用Form1中的过程: Call Form1.SomeSub( arguments

8、),2. 调用类模块中的过程 与窗体中调用过程类似,在类模块中调用过程要调用与过程一致并且指向类实例的变量。 3. 调用标准模块中的过程 如果过程名是唯一的,则不必在调用时加模块名。无论是在模块内,还是在模块外调用,结果总会引用这个唯一过程。如果过程仅出现在一个地方,这个过程就是唯一的。如果两个以上的模块都包含同名的过程,那就有必要用模块名来限定了。,9.3.4 过程作用域小结 不同作用域的2种过程定义及调用规则,见下表。,9.4 高级变量,9.4.1 使用多个同名的变量 如果不同模块中的公有变量使用同一名字,通过同时引用模块名和变量名就可以在代码中区分它们。,9.4.2 公有变量与局部变量的

9、比较 在不同的范围内也可有同名的变量。通过用模块名限定模块级变量就可在过程内访问这样的变量。 9.4.3 阴影窗体属性和控件 由于阴影效应,窗体属性、控件、常数和过程皆被视为窗体模块中的模块级变量。 在窗体模块内,与窗体中控件同名的局部变量将遮住同名控件。因此必须引用窗体名称或Me关键字来限定控件,才能设置或得到该控件的值或其属性值。,9.4.4 使用同名的变量和过程 私有模块级变量和公有模块级变量的名字也会和过程名冲突。模块中的变量不能和任何过程同名,也不能和模块中定义的类型同名。但可以和全局过程或其他模块中定义的类型或变量同名。在这种情况下,从别的模块访问这个变量时,就必须用模块名来限定。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号