《vb调用sub过程》PPT课件.ppt

上传人:sh****n 文档编号:8633617 上传时间:2020-03-30 格式:PPT 页数:26 大小:327.31KB
返回 下载 相关 举报
《vb调用sub过程》PPT课件.ppt_第1页
第1页 / 共26页
《vb调用sub过程》PPT课件.ppt_第2页
第2页 / 共26页
《vb调用sub过程》PPT课件.ppt_第3页
第3页 / 共26页
点击查看更多>>
资源描述
第九章过程 SUB过程 事件过程 当发生某个事件时对该事件做出相应的程序段 通用过程 多个不同的事件过程可能需要使用同一段相同的程序代码 因此把这一段程序代码独立出来作为一个过程 通用过程分为两类 子过程 sub过程 函数过程 function过程 建立sub过程1 定义sub过程语句结构如下 static private public sub过程名 参数列表 语句块 exitsub 语句块 Endsub SUB过程 说明 1 sub过程以sub开始 以endsub结束 中间的描述过程操作的语句块称为过程体过子程序体 语句中的参数含义如下 Static指定过程中的局部变量在内存中的默认存储方式 如果使用static语句则每次调用的局部变量值保持不变 省略static则默认为自动的 每次调用变量时局部变量被初始化为0或空字符串 Private表示sub过程为私有过程 只能被本模块中的其他过程访问 不能被其他模块中的过程访问 Public表示sub过程为公有过程 可以在程序的任何地方调用它 一般在标准模块中用public定义 如果在其他窗体模块中使用 则应加上窗体名作为前缀 过程名不超过255个字符的变量名 在同一个模块中同一个变量名不能既作sub过程名又做function过程名 SUB过程 参数列表指明了调用时传送给过程的参数的类型和个数 每个参数的格式为 byval 变量名 as数据类型 如果加上byval则表明该参数是传值参数 没有byval或者加byref的参数称为引用参数 在定义sub过程时 参数列表中的参数称为形式参数 不能用定长字符串变量或定长字符串数组作为形式参数 2 endsub表明sub过程的结束 每个sub过程必须有一个endsub子句 在一个子过程体内可以用一个或多个exitsub语句退出 3 sub过程不能嵌套 在sub过程内不能定义sub过程或function过程 不能用goto语句进入或转出一个sub过程 只能通过调用执行sub过程 而且可以嵌套调用 建立sub过程 在标准模块中建立通用过程方法 方法1 菜单 工程 添加模块 在对话框中选择 新建 选项卡 双击 模块 图标 打开模块代码窗口 执行 工具 添加过程 在对话框中输入过程名 并设置相应的选项 单击确定返回代码输入框输入代码 方法2 执行 工程 添加模块 打开代码窗口 然后输入过程的名字 例如 subtest 按回车后显示 subtest endsub在sub与endsub之间输入代码 调用sub过程 要执行一个过程 必须调用该过程 调用sub过程的方法有两种 把过程的名字放在call语句中 把过程名作为一个语句来使用 1 用call语句调用sub过程格式 call过程名 实际参数 2 把过程名作为一个语句来使用格式 过程名实际参数与第一种的区别在于省略了call 去掉了实际参数的括号 通用过程与事件过程 事件过程是一种特殊的sub过程 它附加在窗体和控件上 一个控件的事件过程由控件的实际名字 下划线和事件名组成 而窗体事件过程由form 下划线和事件名组成 窗体的事件过程不能由用户任意定义 而有系统指定 事件过程的一般格式为 private public sub控件名 事件名 参数表 语句组endsub通用过程可以放在标准模块和窗体模块中 而事件过程只能放在窗体模块中 当过程名唯一时可以直接通过过程名调用 如果两个或两个以上的标准模块中含有相同的名字时 则在调用时必须用模块名限定 一般格式 模块名 过程名 参数表 通用过程与事件过程 当一个模块调用其他模块的过程时 被调用的过程必须是 公用的 public Function过程 Sub过程不返回值 可以直接作为独立的语句调用 而function过程返回一个值 通常出现在表达式中 建立function过程定义的格式如下 static private public function过程名 参数列表 as类型 语句块 过程名 表达式 exitfunction 语句块 endfunction说明 1 function过程以function开头 以endfunction结束 在两者之间是描述过程的语句 As类型 是function过程返回的值的数据类型 省略则是variant Function过程 2 调用function过程返回一个值 因此可以像内部函数一样在表达式中使用 由function过程返回的值放在表达式中 并通过 过程名 表达式 把它的值赋给 过程名 在function过程中省略 过程名 表达式 则该过程返回一个默认值 数值函数返回0值 字符串函数过程返回空字符串 3 过程不能嵌套 因此不能在事件过程中定义通用过程 包括sub过程和function过程 只能在事件过程内调用通用过程 参数传递 形参 在sub function过程定义中出现的变量名 实参 在调用sub function过程中传送给sub function过程的常数 变量 表达式或数组 传送方式 按位置传送和指名传送按位置传送 是大多数语言处理子程序调用时使用的方式 当使用这种方式时实际参数的次序必须和形式参数的次序匹配 即位置次序必须一致 如下例子 过程定义 subtest sub p1asinterger p2assingle p3asstring 过程调用 calltest sub a b test 在传送实参时形参表与实参表中对应变量的名字不必相同 但是包含的个数必须相同 同时实参与相应参数的类型必须相同 参数传递 形式参数列表中各变量之间用逗号隔开 表中的变量可以是 除定长子符串之外的合法变量名 后面跟有左右括号的数组名 实际参数表中的各项用逗号隔开 实参可以是 常数 表达式 合法的变量名 后面跟有左右括号的数组名 注意 必须把所需要的实参传送给过程 取代相应的形参 执行过程的操作 实参与形参必须按位置次序传送 指名传送 即显式地指出与形参结合的实参 把形参用 与实参连接起来 和位置传送不同 指名传送方式不受位置次序的限制 引用 参数通过两种方式传送 即传地址和传值 传地址习惯上称为引用 引用方式通过关键字byref实现 在定义通用过程中如果形参前有关键字byref 通常省略 则该参数通过引用 传地址 方式传送 当通过引用来传递实参时可以改变传送给过程的变量的值 传值 传值就是通过值传送实际参数 即传送实参的值而不是传送他的地址 此时系统把需要传送的变量复制到一个临时单元中 然后把该临时单元的地址传送给被调用的通用地址 在VB中传值方式通过关键字byval实现 即在定义通用过程中如果形参前有关键字byval则该参数用传值方式 否则用引用方式传送 例子 使用传值方式与传地址方式的规则 1 对于整型 常整型或单精度参数 如果不希望过程修改实参的值则应加上关键字byval 而为提高效率字符串和数组应通过地址传送 用户定义的类型 记录 和控件只能通过地址传送 2 对于其他类型 双精度 货币型和变体型数据可以用两种方式 此类参数最好用传值方式 3 如果没有把握一般用传值方式传送所有变量 在调试程序后再把部分参数改为传地址以加快运行速度 传值 4 用function过程可以通过过程名返回值 只能返回一个值 sub过程可以通过参数返回多个值 如果通过sub过程返回值时相应的参数要用传地址方式 数组参数的传送 在VB中允许把数组作为实参传送到过程中 例如 subS a b endsub在上面语句中两个数组作为形参 需要在数组名后面加上一对括号 以免与普通变量混淆 可以用下面语句调用 callS a b 当用数组作为过程的参数时使用的是传地址方式 而不是传值方式 注意事项 1 为了把一个数组的全部元素传送给一个过程 应将数组名分别放入实参表和形参表中 并略去数组的上下界 但是括号不能省略 例子 代码见数组传送 vbp 数组参数的传送 2 如果只传递数组的某个元素 则需要数组名后的括号中写上指定元素的下标 3 用lbound与ubound函数来确定传送给过程的数组的大小 参数传送注意事项 1 字符串和数值常数分别传送给字符串类型和数值类型的形参 2 当传送数值常数时 如果实参表中的某个数值常数与function和sub过程形参表相应的形参不一致 则把这个常数被强制变为相应形参的类型 3 当作为实参的数值表达式与形参类型不一致时 通常也强制变为相应的类型 传送记录 记录是用户定义的类型 传送记录实际上是传送记录的变量 一般步骤如下 1 定义记录类型 语法格式如下 type记录名成员名as类型 长度 endtype2 定义记录类型变量3 调用过程 并把定义的记录变量传送到过程4 调用过程时注意形参类型匹配例子自定义记录类型代码见记录 vbp 可选参数与可变参数 可选参数 在定义参数时如果某个参数是可选的需要在该参数前加关键字optional 并在过程中通过ismissing函数测试调用时是否传送可选参数 可选参数必须放在最后面 并且类型为variant ismissing有一个参数 即由optional指定的形参的名字 其值返回为boolean 结果为true或false 可变参数 可变参数过程通过paramarray命令来定义 一般格式 sub过程名 paramarray数组名 注 数组名只是一个形式参数 只有名字和括号 没有上下界 数组类型默认为variant 注意 1 由于可变参数是variant类型 故其中的参数可以是任何类型的 2 可变数组中的数是连续的 不可以有空缺 否则会无法进行计算 对象参数 在VB中允许对象 窗体或控件 作为通用过程的参数 格式为 sub过程名 形参表 语句块 exitsub endsub注意 形参表中形参的类型通常为control或form 对象只能通过传地址方式传送 不在参数前加关键字byval 对象参数 注意 在使用控件作为参数时必须考虑到作为实参的控件是否具有通用过程中所列的控件的属性 在vb中提供了一个typeof语句 格式如下 if elseif typeof控件名称is控件类型Typeof语句放在通用工程中 控件名称指的是控件参数 形参 的名字 即ascontrol前面的参数 控件类型是代表各种不同控件的关键字 这些关键字是 checkbox 复选框 frame 框架 combobox 组合框 hscrollbar 水平滚动条 commandbutton 命令按钮 label 标签 listbox 列表框 dirlistbox 目录列表框 drivelistbox 驱动器列表框 menu 菜单 filelistbox 文件列表框 textbox 文本框 局部内存分配 一般来讲在运行程序时VB会为全局变量分配内存 而局部变量在过程开始时为变量分配内存 过程结束时会清除这些变量而收回内存 当再次调用该过程时重新建立这些变量 当过程结束时如果需要保存在局部变量中的数据 则需要把该变量声明为全局变量或模块级变量 如果声明的变量只在一个过程中使用则使用static语句 该语句如下 static变量表变量表格式如下 变量 as类型 变量 as类型 注意 static语句只能在事件过程 sub过程 function过程中 过程中的static变量只在本过程中可见 本过程结束后变量的值与模块级变量一样其值可以保留 局部内存分配 Static语句的几种用法 1 把一个数值变量定义为静态变量 staticaasinteger2 把一个字符串变量定义为静态变量 staticabcasstring3 把一个通用过程中的变量定义为静态变量 staticsubarray 4 把一个事件过程中的变量定义为静态变量 staticsubform click 5 定义静态数组 staticarr 5 Shell函数 在VB中利用shell函数调用windows下的可执行程序 扩展名为 com exe bat pif Shell函数格式 shell 命令字符串 窗口类型 窗口类型有以下六种选择
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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