计算机基础与Visual Basic程序设计(第三版)第九章 过程
合集下载
《Visual Basic语言程序设计》 第9章 文件
数,可以避免在文件输入时出现“输入超出文件尾”错误。因此,它是一 个很有用的函数。
(3)关闭文件
文件的读写操作结束后,应将文件关闭。这可以通过Close语句来实现。其格 式为:
Close [ [#]文件号] [, [#]文件号]…… Close语句用来结束文件的输入输出操作。例如,假定用下面的语句打开文件:
第9章 文件
9.1 文件及其基本操作 9.2 顺序文件 9.3 随机文件 9.4 二进制文件 9.5 文件系统控件 9.6 目录及文件操作
第9章 文件
所谓“文件”,是指记录在外部介质上的数据的集合。 例如用Word或Excel编辑制作的文档或表格就是一个文 件,文件通常放到磁盘、光盘、磁带等介质上。 Visual Basic具有较强的文件处理能力。它可以处理顺 序文件、随机文件和二进制文件,并且提供了与文件处 理有关的控件。
第9章 文件
9.1 文件及其基本操作
1 文件及文件结构 (1)文件名
完整的文件名又叫文件说明,文件说明的一般格式为: 设备名: 文件引用名 例如: A:myfile.frm (2)文件结构 为了有效地存取数据,数据必须以某种特定的方式存放,这种特定的
方式称为文件结构。不同的文件有不同的结构。 (3)文件的分类
Dim strLine As String On Error GoTo Errh Open "c:\vb\in.txt" For Input As #1 Open "c:\vb\out.txt" For Output As #2 MousePointer= vbHourglass
存取。 5) FileAttr函数 格式:FileAttr(文件号,属性) FileAttr函数返回打开文件的有关信息。格式中“文件号”的含义同前。“属
(3)关闭文件
文件的读写操作结束后,应将文件关闭。这可以通过Close语句来实现。其格 式为:
Close [ [#]文件号] [, [#]文件号]…… Close语句用来结束文件的输入输出操作。例如,假定用下面的语句打开文件:
第9章 文件
9.1 文件及其基本操作 9.2 顺序文件 9.3 随机文件 9.4 二进制文件 9.5 文件系统控件 9.6 目录及文件操作
第9章 文件
所谓“文件”,是指记录在外部介质上的数据的集合。 例如用Word或Excel编辑制作的文档或表格就是一个文 件,文件通常放到磁盘、光盘、磁带等介质上。 Visual Basic具有较强的文件处理能力。它可以处理顺 序文件、随机文件和二进制文件,并且提供了与文件处 理有关的控件。
第9章 文件
9.1 文件及其基本操作
1 文件及文件结构 (1)文件名
完整的文件名又叫文件说明,文件说明的一般格式为: 设备名: 文件引用名 例如: A:myfile.frm (2)文件结构 为了有效地存取数据,数据必须以某种特定的方式存放,这种特定的
方式称为文件结构。不同的文件有不同的结构。 (3)文件的分类
Dim strLine As String On Error GoTo Errh Open "c:\vb\in.txt" For Input As #1 Open "c:\vb\out.txt" For Output As #2 MousePointer= vbHourglass
存取。 5) FileAttr函数 格式:FileAttr(文件号,属性) FileAttr函数返回打开文件的有关信息。格式中“文件号”的含义同前。“属
Visual Basic程序设计教程第09章
第9章 界 面 设 计 9.1 菜单的设计 9.2 工具栏的设计
9.3 对话框的设计
1
9.1 菜单的设计菜单Fra bibliotek以分成两种基本类型:
下拉式菜单,通常通过单击菜单标题打开。
弹出式菜单,通常通过在某对象上单击鼠标右
键打开。
2
9.1.1 下拉式菜单
1.下拉式菜单的结构
(1)主菜单:包括若干个主菜单标题。放在主菜 单栏中,一般用于对要执行的操作按功能进行分 组。不同功能的操作划分在不同的主菜单标题下。 每一个主菜单标题可以下拉出下一级菜单,称为 子菜单。
5
属 性 区
编 辑 区
菜 单 列 表 区
(1)属性区用于设置或修改菜单项的属性。 标题:即菜单控件的Caption属性,用于输入要 在菜单项中显示的文字,如“文件”、“编辑”、 “查看”等。
6
可以在一个字母前插入&符号,给菜单项定义 一个访问键。例如,定义某菜单标题为“文件 (&F)”,则在菜单中显示为“文件(F)”,F即为访 问键。 名称:即菜单控件的Name属性。
Clipboard.SetText Text1.SelText
文本放到剪贴板中
End Sub
12
Private Sub txtCut_Click()
Clipboard.Clear Clipboard.SetText Text1.SelText
' 剪切
' 清除剪贴板 ' 将文本框中选择
的文本放到剪贴板中
10
【例9-1】
设计菜单界面,
11
在菜单编辑器中完成了各菜单项的设置之后,单 击“确定”按钮关闭菜单编辑器。完成菜单设计。 向窗体上添加一个文本框Text1,录入适当的文字。 以下是“编辑”菜单下的各子菜单项的Click事件 过程:
9.3 对话框的设计
1
9.1 菜单的设计菜单Fra bibliotek以分成两种基本类型:
下拉式菜单,通常通过单击菜单标题打开。
弹出式菜单,通常通过在某对象上单击鼠标右
键打开。
2
9.1.1 下拉式菜单
1.下拉式菜单的结构
(1)主菜单:包括若干个主菜单标题。放在主菜 单栏中,一般用于对要执行的操作按功能进行分 组。不同功能的操作划分在不同的主菜单标题下。 每一个主菜单标题可以下拉出下一级菜单,称为 子菜单。
5
属 性 区
编 辑 区
菜 单 列 表 区
(1)属性区用于设置或修改菜单项的属性。 标题:即菜单控件的Caption属性,用于输入要 在菜单项中显示的文字,如“文件”、“编辑”、 “查看”等。
6
可以在一个字母前插入&符号,给菜单项定义 一个访问键。例如,定义某菜单标题为“文件 (&F)”,则在菜单中显示为“文件(F)”,F即为访 问键。 名称:即菜单控件的Name属性。
Clipboard.SetText Text1.SelText
文本放到剪贴板中
End Sub
12
Private Sub txtCut_Click()
Clipboard.Clear Clipboard.SetText Text1.SelText
' 剪切
' 清除剪贴板 ' 将文本框中选择
的文本放到剪贴板中
10
【例9-1】
设计菜单界面,
11
在菜单编辑器中完成了各菜单项的设置之后,单 击“确定”按钮关闭菜单编辑器。完成菜单设计。 向窗体上添加一个文本框Text1,录入适当的文字。 以下是“编辑”菜单下的各子菜单项的Click事件 过程:
visual basic9-过程
(5)可以使用Exit Sub语句从Sub过程中退出。
(6)形参不能在过程内部重新定义。
下午2时6分48秒
VB9-过程
26
一、 Sub过程的定义
3. Sub过程的定义方法 (1) 直接在代码窗口输入。
(2)在代码窗口使用“添加”命令 。
下午2时6分48秒
VB9-过程
27
一、 Sub 过程的定义
下午2时6分48秒
VB9-过程
1
第九章 过程
m! 问题的提出:求Cmn= ——————。 n!×(m-n)!
为了实现代码的共用,提高程序的易理解性和 易维护性,我们采用模块化的程序设计方法, 将应用程序分解成若干个模块,每个模块具有 简单的功能,与其它模块尽可能独立。
下午2时6分48秒
VB9-过程
对过程名赋值以返回计算结果
End Function
VB9-过程 13
下午2时6分48秒
二、Function过程的调用
1. Function过程的调用格式
格式: <函数过程名> ( <实参表> )
调用Function过程时,将实参的值按顺序传递给 形参,从调用过程转到Function过程去执行。
24
一、Sub过程的定义
1. Sub 过程的定义格式
格式:
Public|Private|Static Sub<过程名> [ (<形参表>) ] [<语句组>] [ Exit Sub ] [ 语句组] End Sub
下午2时6分48秒
VB9-过程
Visual Basic程序设计(第3版)-电子教案第9章
说明: 文件号是在Open语句中指定的。“输 出表列”是准备写入到文件中的数据,可 以是变量名也可以是常数,数据之间用 “,”或“;”隔开,输出表列中还可以 使用Tab和Spc函数,它们的意义与第三章 Print 方法中介绍的一样。
例如: Open "d:\shu2.dat" For Output As #2 Print # 2, "zhang" ;"wang"; "li" Print # 2, 78 ;99; 67 Close #2
9.1. 3
关闭文件
打开的文件使用(读/写)完后,必须 关闭,否则会造成数据丢失。关闭文件会 把文件缓冲区中的数据全部写入磁盘,释 放掉该文件缓冲区占用的内存。
9.2 顺序文件
顺序文件用于处理一般的文本文件, 它是标准的ASCII文件。顺序文件中各数据 的写入顺序、在文件中的存放顺序、和从 文件中的读出顺序三者是一致的。即先写 入的数据放在最前面,也将最早被读出。 顺序文件按行组织信息。每行由若干项组 成,行的长度不固定,每行由回车换行符 号结束。
说明: 其中的字符串变量用来接收从顺序文 件中读出的一行数据。读出的数据不包括 回车及换行符。例如:如果顺序文件 shua.dat的内容如下: "zhang" ,"wang", "li" 78,99,67
我们用Line Input语句将数据读出并 且把它显示在文本框中。
Private Sub Command1_Click() Dim a$, b$ Open "c:\_vb\shua.dat" For Input As #2 Line Input #2, a Line Input #2, b Text1.Text = a & b End Sub
Visual Basic 程序设计课件第9章
9.3.1 模块级过程
模块级过程是在某个模块(文件)内定义的过程。 如果在Sub或Function前加关键字Private,则该过程只能 被在本模块(文件)中定义的过程调用。即其作用域为 本模块(文件)。
9.3.2 全局级过程
全局级过程是在定义过程时,在Sub或Function前加 关键字Public(可以默认)。全局级过程可被整个应用 程序所有模块(文件)中定义的过程调用。即其作用 域为整个应用程序(工程)。
2. 公有的模块级变量
公有的模块级变量在所有模块中的所有过程中都 能使用。它的作用范围是整个应用程序,因此公有模 块级变量属于全局变量。声明方法是在模块的通用段 中使用Public关键字声明变量。
9.2.3 变量的作用域小结
模块级变量
作用范围
过程级 变量
声明方式
声明位置
能否被本模块的 其他过程存取 能否被其他模块 存取
按照作用范围分类,过程级变量属于局部变量,而 模块级变量则属于全局变量。
9.2.1 过程级变量
在一个过程内部使用Dim或Static关键字声明变量时, 只有该过程内部的代码才能访问或改变该变量的值,因 此被称为“过程级变量”。
9.2.2 模块级变量
在模块的通用段中声明的变量属于模块级变量。 1. 私有的模块级变量 私有的模块级变量在声明它的整个模块的所有过程中 都能使用,但其他模块却不能访问该变量。声明方法是在 模块的通用段中使用Private或Dim关键字声明变量。
9.3.3 调用其他模块中的过程
在工程中的任何地方都能调用其他模块中的全局过 程。调用其他模块中的过程的各种技巧,取决于该过程 是在窗体模块中、类模块中还是标准模块中。
1. 调用窗体中的过程 所有窗体模块的外部调用必须指向包含此过程的窗体 模块。如果在窗体模块Form1中包含SomeSub过程,则可 使用下面的语句调用Form1中的过程:
精品课件-Visual Basic程序设计(第三版)-项目九
性值 0 1 2 3 4 5
表 9-1 Shape 属性的设置值
常数
说明
VbShapeRectangle VbShapeSquare VbShapeOval VbShapeOval VbShapeRoundedRectangle VbShapeRoundedSquare
(默认值)矩形 正方形 椭圆形 圆形 圆角矩形 圆角正方形
项目九 图形与图像设计
由上表可以看出,这些组合的结果是难以预测的。 使用Mask类操作可以为CopyPen建立图像的阴影,见表 9-8。 在DrawMode的16种设置中,只有值1、6、7、11、13、16的 结果是能预测的。
项目九 图形与图像设计
值 9(MaskPen) 8(NotMaskPen) 3(MaskNotPen) 5(MaskPenNot)
项目九 图形与图像设计
图9.2 设计时通过设置属性显示不同图形
项目九 图形与图像设计
【课堂演练】 【实例9-1】 编写程序显示Shape控件的6种形状,并设置不 同的填充样式。 【实现步骤】 (1) 在窗体上建立Shape控件数组Shape1(0)~Shape1(5)。 (2) 编写事件代码。
项目九 图形与图像设计
项目九 图形与图像设计
6.了解FillColor属性和FillStyle属性 利用FillColor和FillStyle属性,可以为已绘制好的封闭图 形(如正方形、矩形、圆形等)和Shape控件设置填充图案。当需 填充图案时,填充的颜色由FillColor属性确定,填充的图案样 式由FillStyle属性确定。
项目九 图形与图像设计
DrawMode属性的这种功能与ForeColor和当前颜色有关。在 绘图和动画中,DrawMode=7是一个很有用的设置值,它利用Xor 方式,在同一地点绘图两次,从而消除第一次绘画的痕迹,精确 地还原出绘图之前的显示内容,从而实现动画效果。
表 9-1 Shape 属性的设置值
常数
说明
VbShapeRectangle VbShapeSquare VbShapeOval VbShapeOval VbShapeRoundedRectangle VbShapeRoundedSquare
(默认值)矩形 正方形 椭圆形 圆形 圆角矩形 圆角正方形
项目九 图形与图像设计
由上表可以看出,这些组合的结果是难以预测的。 使用Mask类操作可以为CopyPen建立图像的阴影,见表 9-8。 在DrawMode的16种设置中,只有值1、6、7、11、13、16的 结果是能预测的。
项目九 图形与图像设计
值 9(MaskPen) 8(NotMaskPen) 3(MaskNotPen) 5(MaskPenNot)
项目九 图形与图像设计
图9.2 设计时通过设置属性显示不同图形
项目九 图形与图像设计
【课堂演练】 【实例9-1】 编写程序显示Shape控件的6种形状,并设置不 同的填充样式。 【实现步骤】 (1) 在窗体上建立Shape控件数组Shape1(0)~Shape1(5)。 (2) 编写事件代码。
项目九 图形与图像设计
项目九 图形与图像设计
6.了解FillColor属性和FillStyle属性 利用FillColor和FillStyle属性,可以为已绘制好的封闭图 形(如正方形、矩形、圆形等)和Shape控件设置填充图案。当需 填充图案时,填充的颜色由FillColor属性确定,填充的图案样 式由FillStyle属性确定。
项目九 图形与图像设计
DrawMode属性的这种功能与ForeColor和当前颜色有关。在 绘图和动画中,DrawMode=7是一个很有用的设置值,它利用Xor 方式,在同一地点绘图两次,从而消除第一次绘画的痕迹,精确 地还原出绘图之前的显示内容,从而实现动画效果。
《Visual Basic程序设计实用教程》 第9章
(2)在状态栏中显示图形。单击 “浏览”按钮,在弹出 的“选定图片”对话框中选择需要的图形文件,即可将 指定的图片添加到指定的窗格中。
(3)在状态栏中显示信息。设置 “样式”(Style)属 性可以显示需要的信息。
2020/1/11
综合举例
例9.4 综合举例。 设计具有菜单、工具栏和状态栏的窗体。
2020/1/11
例9.1 下拉式菜单示例。 设计一个窗体,在窗体中使用下拉式 菜单改变文本框内容的字体大小 Sub Form_MouseUp (Button As Integer, Shift As _Integer, X As Single, Y As Single)
下拉式菜单
用菜单编辑器可以创建新的菜单 在“工具栏”上单击“菜单编辑器”按钮,都会打开菜单编辑器
2020/1/11
在“标题”文本框中,为第一个菜单标题输入希望在菜单栏上显 示的文本。 在“名称”文本框中,输入将用来在代码中引用该菜单控件的名 字。 单击向左或向右箭头按钮,可以改变该控件的缩进级。 如果需要的话,还可以设置控件的其他属性。这个工作可以在菜 单编辑器中做,也可以在“属性”窗口中设置。 单击“下一个”按钮就可以再建一个菜单控件。单击“插入”按 钮可以在现有控件之间增加一个菜单控件。也可以单击向上与向 下的箭头按钮,在现有菜单控件之中移动控件。 如果窗体的所有的菜单控件都已创建,单击“确定”按钮可关闭 菜单编辑器。
度会自动伸展,直到填满 MDI窗体工作空间。 Align=1 (2)用CommandButton或Image控件来创建工具栏 按钮。工具栏(图片框)Image控件 (3)设置属性:显示一个位图。设置按钮的 ToolTipText属性来使用工具提示等。
2020/1/11
(3)在状态栏中显示信息。设置 “样式”(Style)属 性可以显示需要的信息。
2020/1/11
综合举例
例9.4 综合举例。 设计具有菜单、工具栏和状态栏的窗体。
2020/1/11
例9.1 下拉式菜单示例。 设计一个窗体,在窗体中使用下拉式 菜单改变文本框内容的字体大小 Sub Form_MouseUp (Button As Integer, Shift As _Integer, X As Single, Y As Single)
下拉式菜单
用菜单编辑器可以创建新的菜单 在“工具栏”上单击“菜单编辑器”按钮,都会打开菜单编辑器
2020/1/11
在“标题”文本框中,为第一个菜单标题输入希望在菜单栏上显 示的文本。 在“名称”文本框中,输入将用来在代码中引用该菜单控件的名 字。 单击向左或向右箭头按钮,可以改变该控件的缩进级。 如果需要的话,还可以设置控件的其他属性。这个工作可以在菜 单编辑器中做,也可以在“属性”窗口中设置。 单击“下一个”按钮就可以再建一个菜单控件。单击“插入”按 钮可以在现有控件之间增加一个菜单控件。也可以单击向上与向 下的箭头按钮,在现有菜单控件之中移动控件。 如果窗体的所有的菜单控件都已创建,单击“确定”按钮可关闭 菜单编辑器。
度会自动伸展,直到填满 MDI窗体工作空间。 Align=1 (2)用CommandButton或Image控件来创建工具栏 按钮。工具栏(图片框)Image控件 (3)设置属性:显示一个位图。设置按钮的 ToolTipText属性来使用工具提示等。
2020/1/11
Visual Basic程序设计案例教程第9章
3.调用函数过程
调用Function过程的方法和调用Visual Basic 6.0内部函数的方法一样,即在表达式中可以通过 使用函数名,并在其后用圆括号给出相应的参数 列表来调用一个Function过程。一般形式如下: 变量名=函数过程名([实参列表]) 被调用的函数过程可以作为表达式,也可以作 为表达式的一部分。 在例8-5中调用函数过程的语句是“Text3.Text = Fac2(m) / (Fac2(n) * Fac2(m - n))”。程序执行 时3次调用函数过程Fac2,返回值分别为m!、n!、 (m-n)!。
1.引例
例9-5 使用函数过程改写例9-3。
2.创建函数过程
建立函数过程和建立子过程类似,也有两种方法。 (1)直接在“代码”编辑窗口中输入过程代码,方法同子过程。 函数过程的完整定义格式如下: [Private|Public] Function <函数名>([<形参列表>]) [As 数据类型]函 数过程体 [局部变量和常数声明] <语句系列> [Exit Function] [<语句系列>] 函数名=表达式 End Function (2)使用“添加过程”对话框。
(2)按值传递传值。 按值传递简称传值,形参得到的是实参的 值,形参值的改变不会影响实参的值。形 参前加“ByVal”关键字的是按值传递 。
(2)实际参数简称实参,指在调用Sub或 Function过程时,写入子过程名或函数名后括号 内的参数,其作用是将他们的数据(数值或地址) 传送给Sub或Function过程与其对应的形参变量。 例9-7的Form2代码里的语句“text4.text = Format(aver(a, b, c), "0.0")” 中的a、b、c就是实 参。 在Form3代码里的语句“Call aver2(a, b, c, d)”中的a、b、c、d也是实参。
计算机基础与Visual Basic程序设计第三版第九章 过程
例6:求两个数的和的函数过程。 lt6.vbp
函数过程: Public Function mysum (first As Integer,
second As Long, Optional third ) mysum = first + second If Not IsMissing(third) Then mysum = mysum + third End Function
事件过程:
Private Sub Command1_Click() Dim a As Integer, b As Long, c As Double Dim sum As Integer a = 10: b = 20 Sum=mysum(a, b) Print "sum="; Sum a = 10: b = 20: c = 30 Sum=mysum(a, b, c) Print "sum="; Sum
例2:将前面的两个Sub过程改为Function过程。
Private Function triarea(x As Double, y As Double, z As Double) Dim s As Double s = (x + y + z) / 2 triarea = Sqr((s - x) * (s - y) * (s - z) * s)
1、 声明 Sub 过程(定义)
声明 Sub 过程就是在窗体或标准模块的代码窗口编写一个能实现预期功能的语句
块。
声明Sub过程的语法格式为:
[Private | Public] [Static] Sub 过程名([<形参列表>])
[<语句块1>]
[Exit Sub]
函数过程: Public Function mysum (first As Integer,
second As Long, Optional third ) mysum = first + second If Not IsMissing(third) Then mysum = mysum + third End Function
事件过程:
Private Sub Command1_Click() Dim a As Integer, b As Long, c As Double Dim sum As Integer a = 10: b = 20 Sum=mysum(a, b) Print "sum="; Sum a = 10: b = 20: c = 30 Sum=mysum(a, b, c) Print "sum="; Sum
例2:将前面的两个Sub过程改为Function过程。
Private Function triarea(x As Double, y As Double, z As Double) Dim s As Double s = (x + y + z) / 2 triarea = Sqr((s - x) * (s - y) * (s - z) * s)
1、 声明 Sub 过程(定义)
声明 Sub 过程就是在窗体或标准模块的代码窗口编写一个能实现预期功能的语句
块。
声明Sub过程的语法格式为:
[Private | Public] [Static] Sub 过程名([<形参列表>])
[<语句块1>]
[Exit Sub]
Visual Basic程序设计教程第九章
• (2)键盘选择 • 菜单项可以用鼠标进行选择,也可以用 键盘进行选择。用键盘选择有两种方法 :快捷键(热键)和访问键。它们都在 设计菜单时直接指定。
7
9.1.2 下拉式菜单
• 下拉式菜单一般通过单击菜单标题,即 可出现下拉式菜单命令列表
8
9.1.3 菜单的Click事件
• 在Visual Basic中,每一菜单项甚至分隔 符都被看作一个控件。每一菜单项都要 响应某一事件过程。一般来说,菜单项 都响应鼠标单击(Click)事件,即每个 菜单项都拥有一个事件处理过程 Name_Click()。每当单击菜单项时, Visual Basic就调用Name_Click过程,执 行这一过程中的代码。
19
• ③ 设置ImageList控件属性窗口中“通 用”标签中的单选按钮16×l6,确定图 像的大小。选择“图像”标签 • ④ 单击“插入图片”按钮,将所需图形 的图形文件打开,则选中的图形将自动 的添加到图形对话框中,设置它们的索 引值分别为1,2,3,……。
9.2.1 ActiveX控件
• ActiveX控件以前被称为OLE控件。OLE 即对象链接与嵌入的意思,ActiveX控 件是指可以重复使用的编程代码和数据 。通过OLE技术用户在开发应用程序的 过程中,能够访问W1ndows环境中的其 他应用程序。
14
9.2.2 工具栏(ToolBar)
• 1.在标准工具箱中插入制作工作具栏所需 要的控件。 • 制作工具栏需要Toolbar(工具栏)控件和 ImageList(图像列表)控件。这两个控件 没有列在标准工具箱中,需要加进去。具 体方法是: • (1)选择“工程”菜单项中的“部件”选 项。 • (2)选择“部件“对话框中的“控件”选 15 项卡。
Visual Basic程序设计教程第9章
建立:
方法1:使用“添加过程”对话框 方法2:在代码窗口中直接键入 Sub “过程名”
பைடு நூலகம்
2017/7/7
2
9.1.2 调用Sub过程
用Call语句调用Sub过程:
Call 过程名[(实际参数)]
把过程名作为一个语句来使用
2017/7/7
3
9.2 Function过程
9.2.1 建立Function过程
12
8
9.3.4 数组参数的传送
当用数组作为过程的参数时,使用的是
“传地址”方式,而不是“传值”方式
为了把一个数组的全部元素传送给一个过
程,应将数组名分别放入实参表和形参表 中,并略去数组的上下界,但括号不能省 略
2017/7/7
9
9.4 对象参数
9.4.1 窗体参数 用窗体作为参数时,过程的格式为: Sub 过程名(形参表) 语句块 [Exit Sub] ...... End Sub
第9章 过程
Visual Basic中的通用过程分为两类,即子 程序过程和函数过程,前者叫做Sub过程, 后者叫做Function过程。本章介绍如何在 Visual Basic应用程序中使用通用过程。
2017/7/7
1
9.1 Sub过程
9.1.1 建立Sub过程
定义:
[Static][Private][Public] Sub 过程名[(参数表列)] 语句块 [Exit Sub] [语句块] End Sub
“形参表”中形参的类型为Form。 在调用时,只能通过传地址方式传送。
2017/7/7
10
9.4.2 控件参数
用控件作为参数时,过程的格式为: Sub 过程名(形参表) 语句块 [Exit Sub] ...... End Sub
Visual Basic 程序设计教程第9章
表9.4
颜色对话框的标志属性 含 义
Flags属性值 1 2 4
使 Color 属性定义的颜色在首次显示对话框时显示出 来 打开的对话框,包括“自定义颜色”窗口 不能使用“规定自定义颜色”按钮
8
显示一个Help按钮
(3)“打印”对话框
“标志”属性用来设置对话框的一些选 项(注意,不同类型的对话框的“标志” 属性值和含义有所不同)。如Flags=0时, 将打印对话框中“打印范围”框架内的 “全部页”单选钮设置为缺省按钮。
Flags=1时将“选择的范围”单选钮设 置为缺省按钮。Flag=2时将“页数”单选 钮设置为缺省按钮。 “起始页”和“终止页”指定从第几页 打印到第几页(如果要设此两属性,“标 志”属性值必须定为2)。
(4)“帮助”对话框
当通用对话框的Action属性值为6时, 通用对话框作为帮助对话框用。其属性页 如图9.12所示。
图9.12
帮助对话框属性页
二.菜 单 设 计
1.菜单编辑器的使用
2.菜单项的控制
在应用程序中,菜单的作用可能因执 行条件的变化而相应的发生一些变化。这 就是菜单的控制问题。
(1).有效性控制
有些命令在执行时需要一定的条件, 例如,只有剪贴板上保存有信息,“粘贴” 命令才能执行,否则该命令是灰色的,不 能执行。这时,“粘贴”命令失效。
法
ShowOpen ShowSave ShowColor ShowFont
5
6
打印(Print)
帮助文件(Help)
r
ShowHelp
2.通用对话框的使用
(1)文件对话框:
① 对话框标题:
用来给出对话框的标题内容,缺省值 为“打开”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Sub tryout(ByRef x as integer, ByRef y as integer) x=x+100 y=y*6 print “x=“;x.”y=“;y 传址: End Sub X=110 Sub Form_click() a=110 Dim a%,b% a=10:b=20 tryout a,b Print “a=“;a,”b=“;b End Sub
例:写出下列程序的运行结果
Sub tryout(ByVal x as integer, ByVal y as integer) x=x+100 传值: y=y*6 X=110 print “x=“;x.”y=“;y End Sub a=10 Sub Form_click() Dim a%,b% a=10:b=20 tryout a,b Print “a=“;a,”b=“;b End Sub
9.1 事件过程与通用过程
VB子程序分类图
过程 VB中有两类子程序 函数 事件过程 窗体事件过程(如:Form_Click( )) 控件事件过程(如:Command1_Click( )) 通用过程(自定义过程Sub) 内部函数(如:Sin(3.14/6) ) 通用函数(自定义函数Function)
过程可以有参数,也可以不带任何参数。根据需要而定
格式为:[ByVal|ByRef]变量名[( )] [AS 数据类型][,……] ByVal 表示按值传递;ByRef 表示按地址传递 6、过程内不能再定义过程,过程定义也不能写在事件过程内
9.2 通用过程(Sub过程)
如:Sub Tryout( x as integer , y as integer)
要执行一个过程,必须调用该过程。调用的方法为: 方法1.使用Call语句 格式:Call 过程名[(实参列表)] 方法2. 将过程名作为语句使用: 格式: 过程名 <实参列表> 特点: Sub 过程的调用是一句独立的语句。 例:要调用前面的Tryout过程,可以使用下面两种方式: Call Tryout(a , b) 或 Tryout a , b
参数为数组时虚实结合示意图
可选参数和可变参数
1、 可选参数
在过程的形参列表中加入Optional关键字,就可以指定过程 的参数为可选的。如果指定了可选参数,则参数表中此参数后面 的其它参数也必是可选的,并且要用Optional关键字来声明。
例6:求两个数的和的函数过程。
lt6.vbp
函数过程: Public Function mysum (first As Integer, second As Long, Optional third ) mysum = first + second If Not IsMissing(third) Then mysum = mysum + third End Function
[ <语句块> ] [ <函数过程名> =<表达式> ] ‘ 返回值语句 [ Exit Function ] End Function 注意: • 在函数体内,函数名可以当变量名使用,函数的返回值就是通过对函数名的赋值语句来实现的。 即函数值通过函数名返回。 • 函数体中的Exit Function语句的功能是强制退出函数并返回 • 函数过程需要返回的值的类型由 As<类型> 设置。
3、 数组作过程的参数
调用时形参数组a和实参数组b虚实结合,共用一段内存单 元,如图 6-7 所示。因此在 Sort() 过程中改变数组 a 的各元素值,
也就相当于改变了实参数组 b中对应的元素的值,当调用结束
时,形参数组a成为无定义。 b(1) a(1) b(2) a(2) b(3) a(3) b(4) a(4) b(5) a(5) b(6) a(6) b(7) a(7) b(8) a(8)
y=120 b=120
3、 数组作过程的参数
Visual Basic允许把数组作为实参传送到过程中。数组作参数是通过传 地址方式传送。在传送数组时,除遵守参数传送的一般规则外,还应注意 以下几点: 1.为了把一个数组的全部元素传送给一个过程,应将数组名分别写 入形参表中,并略去数组的上下界,但括号不能省略。 Private Sub Sort(a() As single) ……
y=120 b=20
2、 按址传递——变量的引用 • 传址方式是将实参在内存的地址传递给形参,也就是实参、 形参公用内存的“地址”。 • 在VB中,按址传递数据是在形参前加上ByRef(默认方式)。 • 这种传递方式是一种双向的数据传递,即调用时实参将值传 递给形参;调用结束由形参将操作结果返回给实参。当用传 址方式时,实参只能是变量、数组名,不能是常数、表达式。 • 修改前例题 ByVal ByRef 再写其运行结果
9.3 Function 过程(自定义函数)
Function 过程 与Sub 过程 的主要区别是: Function 过程可通过函数名返回一个值到调用的过程 1、 声明 Function 过程(函数定义) 格式:
[Public|Private] [Static] Function 函数过程名 [(<参数列表>)] [As<类型>]
函数体
2、 调用 Function 过程
Function 过程的调用,与标准函数(内部函数)相同。 通常用在表达式中 格式:函数名(<实参列表>) 特点:不能独立成为语句,必须参加表达式的运算。 如1:下面是已知直角三角形两直角边的值,计算斜边的函数。 function myfun(A as integer,B as integer) as string myfun=sqr(A*A+B*B) End function Sub Command1_Click( ) a=val(text1.text) : b= val(text2.text) label1.caption=myfun( a , b) End Sub
9.4 参数传递
不同模块(过程)之间数据的传递方式:
通过全局变量实现各过程中共享数据
(即在“通用”部份定义的变量,由该模块所有过程共享)
按值传递(单向传递) 通过过程调用实参与形参的结合实现 按地址传递(双向传递)
9.4 参数传递
Sub 过程和 Function 函数过程中的 < 参数列表 > 中的参数称为形式参数(形 参),在程序中调用 Sub过程和 Function函数过程时 <参数列表 >中称为 实际参数(实参) 。 • 在调用过程时,就是把“实参”依次按位置传递给被调用过程的“形 参” ,然后执行被调用过程中的语句。参数传递时相当于给变量赋初值。 • 如: Print greatcd(x, y) Public Function greatcd(m As Integer, n As Integer)
事件过程——是对发生的事件进行处理的程序段
通用过程和通用函数——是由用户根据自己的需要定义和编写
的、可供事件过程多次调用的程序段
它们都不直接与特定的事件相关联
9.2 通用过程(Sub过程)
• Sub 过程是指以规定语法结构组织的、可以被重复调用的、具有特定功能的、相对独 立的程序段。 • Sub过程不与任何特定的事件过程相关联,只能由别的过程调用 1、 声明 Sub 过程(定义) 声明 Sub 过程就是在窗体或标准模块的代码窗口编写一个能实现预期功能的语句 块。 声明Sub过程的语法格式为: [Private | Public] [Static] Sub 过程名([<形参列表>]) [<语句块1>] [Exit Sub] 过程体 [<语句块2>] End Sub 注意: Sub 过程名无值,无类型。
x=x+100 y=y*6 Print x,y End Sub
7、建立通用过程可以使用以下两种方法:
① “工具”——”添加过程” ② 在标准模块或窗体模块中, 直接输入通用过程的代码。 8、子过程名不返回值,只能通过形式参数与调用语句通信 9、过程体中的Exit Sub 表示强制退出过程返回其中形参“a( )”即为数组。
3、 数组作过程的参数
2 .被调过程可通过 Lbound 和 Ubound 函数确定实参数组的上、下界。 3.当用数组作形参时,对应的实参必须也是数组,且类型一致。 4.实参和形参结合是按地址传递,即形参数组和实参数组共用一段 内存单元。 例如:定义了实参数组b(1 to 8),给它们赋了值,调用Sort()函数过程 的形式如下: Sort b( ) 或 Call Sort( b() ) 实参数组后面的括号可以省略,但为便于阅读,建议一般不要省略 为好。
第9章 过 程与函数
9.1 事件过程与通用过程
过程的定义:
在设计一个规模较大、复杂程度较高的程序时,往往根据需要按功 能将程序分解成若干个相对独立的部分,然后对每个部分分别编写一段 程序,这些程序段称为过程。
过程是构成程序逻辑部件的基本单位,将程序分割成较小的逻辑部件 可以简化程序设计任务,结构化设计就是建立在这个思路之上。 每个过程完成一个具有特定目的的任务。
说明:
1、每个通用过程都有一个过程名(由用户自己指定,规定同变量名),同一模块中过程名不得 重复。 2、过程前加上Public关键字或缺省,则该过程为全局级过程,可以被应用程序的所有窗体模块 或标准模块中的过程调用(在窗体中定义,调用时应加窗体名)。 3、过程前加上Private关键字,则该过程为模块级过程,只有在声明它的模块中才可以调用此 过程。 4、在过程名前加上Static关键字,表明该过程的变量都是静态变量。 5、形参列表是传递到过程中的变量名(多个时用“,”分隔),它指明了调用时传递给过程的参数的 类型和个数.
例2:将前面的两个Sub过程改为Function过程。 Private Function triarea(x As Double, y As Double, z As Double) Dim s As Double s = (x + y + z) / 2 triarea = Sqr((s - x) * (s - y) * (s - z) * s) End Function Private Sub Command1_Click() Dim a#, b#, c#, s#, intYesorNo% a = Val(Text1.Text) : b = Val(Text2.Text) c = Val(Text3.Text) If a + b > c And b + c > a And c + a > b Then Print " 面积 ="; triarea(a, b, c) Else intYesorNo = suberr( ) ‘ 无参数时,括号不能省略 End If End Sub