过程和变量的作用域.ppt

上传人:zhu****ei 文档编号:5406983 上传时间:2020-01-28 格式:PPT 页数:31 大小:372.81KB
返回 下载 相关 举报
过程和变量的作用域.ppt_第1页
第1页 / 共31页
过程和变量的作用域.ppt_第2页
第2页 / 共31页
过程和变量的作用域.ppt_第3页
第3页 / 共31页
点击查看更多>>
资源描述
理解多窗体及多模块应用程序各过程与变量的关系理解通过全局变量实现各过程之间数据的传递 掌握多模块中过程的作用域和调用关系掌握变量作用域及生存周期 本章要求 第七章过程和变量的作用域 本章重点 本章难点 多模块应用程序各过程与变量的关系 变量和过程和作用域 多模块应用程序各过程与变量的关系 在第二章我们介绍了VB应用程序 通常称为工程 的组织结构 它由窗体模块 标准模块和类模块组成 VB程序代码就保存在窗体模块文件 Frm 标准模块文件 Bas 或类模块文件 Cls 中 它们形成了工程的一种模块层次结构 如下图所示 7 1概述 7 1 1窗体模块 文件扩展名为 FRM 窗体模块 窗体模块可以包含处理事件的过程 通用过程以及变量 常数 类型和外部过程的窗体级声明 如果要在文本编辑器中观察窗体模块 则还会看到窗体及其控件的描述 包括它们的属性设置值 写入窗体模块的代码是该窗体所属的具体应用程序专用的 它也可以引用该应用程序内的其它窗体或对象 7 1概述 7 1 2标准模块 文件扩展名为 BAS 它们可以包含变量 常数 类型 外部过程和全局过程的全局 在整个应用程序范围内有效的 声明或模块级声明 写入标准模块的代码不必绑在特定的应用程序上 则在许多不同的应用程序中可以重用标准模块 7 1概述 7 1 3类模块 文件扩展名为 CLS 在VisualBasic中类模块是面向对象编程的基础 可在类模块中编写代码建立新对象 这些新对象可以包含自定义的属性和方法 实际上 窗体正是这样一种类模块 在其上可安放控件 可显示窗体窗口 7 1概述 7 2过程的作用域 Public Private Sub子过程名 形式参数列表 EndSub 概念 通用子过程和函数过程既可写在窗体模块中也可写在标准模块中 在定义时可选用关键字Private 局部 和Public 全局 来决定它们能被调用的范围 1 窗体 模块级过程 加Private关键字的过程 只能被定义的窗体或模块中的过程调用 2 全局级过程 加Public关键字 或缺省 的过程 可供该应用程序的所有窗体和所有标准模块中的过程调用 按过程的作用范围来划分 过程可分为 模块级过程全局级过程 用例7 1来说明过程的作用域 7 2过程的作用域 总结归纳过程的定义及作用域如下表 教材Pg 163 几点说明 教材Pg 164 7 2过程的作用域 7 3变量的作用域 概述 在VB中 由于可以在过程中和模块中声明变量 根据定义变量的位置和定义变量的语句不同 变量可以分为 局部变量 过程级变量 窗体 模块级变量 私有的模块级变量 能被本模块的所有过程和函数使用 全局级变量 公有的模块级变量 7 3 1过程级变量 局部变量 局部变量 在过程内用声明的变量 只能在本过程中使用 在过程内部使用Dim或者Static关键字来声明的变量 只在声明它们的过程中才能被访问或改变该变量的值 别的过程不可访问 所以可以在不同的过程中声明相同名字的局部变量而互不影响 7 3变量的作用域 例 PrivateSubForm Load Dimn n 10EndSubPrivateSubFrom Click Dimn Print n nEndSub 程序运行后单击窗体 其输出结果是什么 7 3变量的作用域 7 3 2窗体 模块级变量 窗体 模块级变量 在 通用声明 段中用Dim语句或用Private语句声明的变量 可被本窗体 模块的任何过程访问 但其他模块却不能访问该变量 例如 在 通用声明 段声明如下变量 PrivatesAsStringDimaAsInteger 7 3变量的作用域 例 Dimn PrivateSubForm Load n 10EndSubPrivateSubFrom Click Print n nEndSub 7 3 3全局变量 全局变量也称公有的模块级变量 在窗体模块或标准模块的顶部的 通用 声明段用Public关键字声明 它的作用范围是整个应用程序 即可被本应用程序的任何过程或函数访问 例如 PublicaAsInteger bAssingle 7 3变量的作用域 3种变量声明及使用规则如下表 7 3变量的作用域 一 公用变量与局部变量同名在不同过程中定义同名变量 它们互不影响 但若在一过程中定义使用了与全局变量同名的变量 则就应注意 7 3 4关于多个变量同名 注意 在过程中 如果定义了与模块级变量 在通用部分使用Private或Dim声明的变量 则在该过程内不能引用同名的模块级变量 例如 7 3变量的作用域 PublicTempAsInteger 定义全局变量PrivateSubForm Load Temp 1 将全局变量Temp的值设置成1EndSubPrivateSubCommand1 Click DimTempAsInteger 定义局部变量Temp 2 将局部变量Temp的值设置成2Print temp TempPrint temp Form1 TempEndSubPrivateSubCommand2 Click Print temp TempEndSub 7 3变量的作用域 二 全局变量同名如果不同模块中的全局变量使用同一名字 则通过同时引用模块名和变量名就可以在代码中区分它们 例如 如果有一个在Form1和Module1中都声明了公用的Integer变量intX 则把它们作为Module1 intX和Form1 intX来引用便得到正确值 也就是说如果不同模块中的全局变量使用同一名字 引用时就需要使用 模块名 变量名 的形式来区分它们 7 3变量的作用域 7 3 5静态变量 除作用域之外 变量还有存活期 在这一期间变量能够保持它们的值 在应用程序的存活期内一直保持模块级变量和全局变量的值 但是 对于Dim声明的局部变量仅当过程执行期间存在 当一个过程执行完毕 它的局部变量的值就已经不存在 而且变量所占据的内存也被释放 当下一次执行该过程时 它的所有局部变量将重新初始化 概念 局部变量的存活期由其定义的关键词来决定 7 3变量的作用域 局部变量声明 Dim声明 随过程的调用而分配存贮单元 变量的初始化 过程体结束 变量的内容自动消失 存贮单元释放 Static声明 每次调用过程 变量保持上次调用结束时的值 声明形式 Static变量名 AS类型 StaticFunction函数过程名 参数列表 As类型 StaticSub子过程名 参数列表 注意 过程名前加Static 表示该过程内的局部变量都是静态变量 7 3变量的作用域 例7 2有一个人编了下面一段程序 想用变量n记录单击窗体的次数 PrivateSubForm Click DimnAsIntegern n 1Print 已单击次数 n 次 EndSub 分析程序运行后多次单击窗体的输出结果 要记录单击窗体次数 如何实现 并比较使用模块变量和静态变量的差别 例7 3教材P168 7 3变量的作用域 PrivateSubForm Click Dimi isum Fori 1To5isum sum i Printisum NextiEndSub PrivateFunctionsum nAsInteger DimjAsIntegerj j nsum jEndFunction 12345 StaticjAsInteger结果如何 补充例题 7 3变量的作用域 7 4多重窗体与多模块程序设计 一个稍微复杂的应用程序 不仅有多个窗体 还可能有标准模块和类模块 如下图所示 本节介绍在多模块程序中 关于启动对象的设置 窗体的加载与卸载 窗体的加载与卸载时的事件 多模块间数据的传递等 7 4 1设置启动对象 在程序运行时 首先被加载并执行的对象 称为程序的启动对象 一个程序的启动对象可以是一个窗体 也可以是标准模块中名为Main的自定义Sub过程 缺省情况下 第一个创建的窗体被指定为启动对象 1 设置方法 从 工程 菜单中的最后一项 属性 在 工程属性 对话框中进行设置 2 如果设置从主过程Main 启动 则必须在标准模块中编写Main 过程代码 例 Pg170 7 4多重窗体与多模块程序设计 7 4 2窗体的加载与卸载过程 当一个窗体要显示在屏幕之前 必须先建立 接着被装入内存 Load语句 最后显示 Show方法 在屏幕上 同样 当窗体要结束之前 会先从屏幕上隐藏 Hide方法 接着从内存中删除 Unload方法 7 4多重窗体与多模块程序设计 在窗体的加载过程的各阶段所用一的语句或方法以及所触发的事件可用下面的图来说明 7 4多重窗体与多模块程序设计 在窗体的卸载过程的各阶段所用一的语句或方法以及所触发的事件如下图 7 4多重窗体与多模块程序设计 1 窗体的加载与显示 1 Load语句 装入窗体到内存Load窗体名称说明 执行Load语句后 窗体并不显示出来 但可引用该窗体中的控件及各种属性 注意 这里的窗体名称是窗体的Name属性 而不是窗体的文件名 以下相同 3 Show方法 显示一个窗体 窗体名称 Show 模式 0 Modeless 非模式 可以对其它窗体进行操作1 Model 关闭才能对其它窗体进行操作 7 4多重窗体与多模块程序设计 2 窗体的隐藏与卸载 1 Unload语句 从内存删除窗体Unload说明 当窗体卸载之后 所有在运行时放到该窗体上的控件都不再是可访问的 在设计时放到该窗体上的控件将保持不变在卸载窗体时 只有显示的部件被卸载 与该窗体模块相关联的代码还保持在内存中 2 Hide方法 隐藏 没有删除 窗体名称 Hide 7 4多重窗体与多模块程序设计 7 4 3与窗体加载与卸载过程的关的事件 1 Initialize事件2 Load事件3 Paint事件4 QueryUnLoad事件5 UnLoad事件6 Activate事件与Deactivate事件7 Terminate事件 例7 4验证与窗体加载与卸载过程相关的事件被触发的先后顺序 7 4多重窗体与多模块程序设计 7 4 4应用举例 例7 5设计一个程序界面如图7 13和图7 14所示 有两个窗体的应用程序 用户在Form窗体 输入窗体 的 请输入排序数个数 文本框输入有效数 按回车键后 在该窗体的 Picture1 图片框中输出排序前的数 单击 排序 按钮 启动Form2窗体 调用冒泡排序子过程Sort并把排序结果在Form2 输出结果 窗体的 Picture1 图片框中输出 在Form2 输出结果 窗体的 请输入要查找的数 文本框内输入要查找的数后 单击 查找 按钮 调用上一章的例6 12查找函数过程 Search 查找结果在 查找结果 文本框显示 单击 结束 按钮结束应用程序的运行 7 4多重窗体与多模块程序设计 二 判断题三 选择题四 程序阅读 本章作业
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!