VB第九章
VB教程第9章
• 表6.1 ScaleMode属性设置
属性设置 单 位
0
1 2 3 4 5 6
用户定义
Twip(缺省值) 磅(point,每英寸72磅) 像素(Pixed,与显示器分辨率有关) 字符(缺省为高12磅宽20磅的单位) 英寸(inch,1inch=1440 Twip) 毫米(millimeter)
7
厘米(centimeter)
图6.3 Shape属性确定的形状
9.2.3 图像框(Image)控件
图像框控件是Visual Basic提供的一种显示图像的控件,它可 以从文件中装入并显示下面几种格式的图形:位图、图标、图元 文件、增强型图元文件、JPEG和GIF文件。除此之外,图像框控 件还响应Click事件,并可用图像框控件代替命令按钮或作为工具 条的内容。此外,它还可以用来制作简单动画。图像框两个比较 重要的属性是Stretch和Picture。 •Stretch属性 当Stretch属性设置为True时,所装入的图形能够自动缩放以适应图 像框的大小。
• (1)单击工具箱中的Line图标; • (2)移动鼠标到要画线的起始位置: • (3)按下鼠标左键并拖曳鼠标到要画线的结束处,放开鼠标左 键。 • (4)打开属性窗口,设置线条属性,如线条风格、线条颜色等。 • (5)需要对设置好的线条进行调整时,可再单击该线条,通过 鼠标的拖动来改变线条的大小或位置,或通过属性窗口来改变属 性值。
vb第9章
(3) 下面的子程序用来计算并显示出各地的时间:
Private Sub clock(dt) t$ = Time$ hr = Val(Left(t$, 2)) + dt If hr >= 24 Then hr=hr-24 t1$ = Str$(hr) t2$ = Mid$(t$, 3, 6) Label1.Caption = t1$ + t2$ For I=1 to 100 Beep Next i End Sub
图9.5
LoadPicture函数的作用是把图形文件调入内存。 它的一般形式为: [对象.]Picture = LoadPicture(″文件名″) 其中的“对象”指的是窗体、图片框、图像框等, 默认为窗体。 运行这个程序,单击“装载”命令按钮,clock.wmf 图形文件所对应的图形被装入图片框中,运行结果 如图9.6所示。
使用Beep方法能够发出蜂鸣声。一般来说,执行一 次Beep,发出的声音很短,难以听到,所以用一个 For循环,多次执行Beep。 运行结果如图9.11所示。
图9.11
【例9.6】在一个画面上轮流显示一本书的各章目 录。程序运行时的屏幕显示如图9.12和图9.13所示 (请注意图片中的文字不同)。 属性设置见表9.4(见书194页)。 在窗体中画一个大的图像框,见图9.14,准备在上 面装入背景图案。标签在图像框的上部,准备用来 显示书的目录。其BackStyle属性值为 “0Transparent”,含义是“背景是透明的”。这样, 在背景画面上显示文字时标签不会挡住后面的图像, 能够取得比较好的效果(如取1-Opaque,则标签 为不透明)。计时器放在右下角,但在运行时它就 消失了。
(4) 用“编辑”菜单中的“粘贴”命令将剪贴板 上的图形粘贴到图片框中(如图9.4所示)。 实际上,并不是只有用图形软件制作的图形才能装 入图片框,凡是能放到Windows剪贴板上的图形, 都可以用Visual Basic的“编辑”/“粘贴”命令剪贴 到图片框中。 除上述两种方法外,还能够在程序运行中把图片加 载到图片框中。
VB第九章 文件
设计界面:在窗体中添加驱动器列表框Drive1、目录列表框 Dir1和文件列表框File1以及框架Frame1、图象框Image1;
将File1的Pattern属性改为“*.bmp;*.exe”
将Image1的Stretch属性设置为True
Private Sub Form_Load()
File1.Pattern = "*.bmp;*.exe" End Sub
在2号缓冲区读取C盘根目录下名为Student.dat的文件的语句为: Open “C:\Student.dat” For Input As #2
2、写操作 要将数据写入顺序文件,应以Output或Append方式打开 该文件,然后使用Print #或Write # 语句将数据写入文件中。 1)Print # 文件号,[数据项列表] 其中:数据项列表和前面讲过的对象的Print方法中的格式基 本相同,只是在每行多了回车换行符。
文件的分类及访问模式: 顺序文件:是按记录号的顺序进行存储的文件。见下图:
记录1 记录2 记录3 …… 记录N
记录分隔符
顺序文件中每条记录的长度可不相同,记录与记录之间 的分隔符为回车换行符(Chr(13)和Chr(10)),而记录中各 数据项之间还有特定的分界符(如逗号等)。 显然,顺序文件是将记录按行进行存储。如文本文件就是 典型的顺序文件,其中的每一行字符串都是一条记录。 顺序文件在机器中是以ASCII形式进行存储的。 顺序访问模式:查找某个记录是从第一条记录开始,直到找 到需要的记录为止。修改某个记录,则将整个文件读出来, 修改后再将整个文件写回外存。此模式专门处理文本文件。
如果要在文件列表框中双击某个可执行文件就能执行该文件,则必须 要有如下的过程: Private Sub File1_DblClick( )
vb基础教程第09章
9.2 Sub过程
在一个大型程序中,经常会有一段相同的代码多次出 现在程序的不同位置,而这样的结构又不宜用循环来 解决.为此,我们引入了子程序的概念——过程. Sub 过程分为通用过程,属性过程和事件过程三种类 型.通用过程完成某一特定的任务,不与任何特定的 事件或属性相联系,所以一旦确定了通用过程,就必 须由应用程序来调用,它可以存储在窗体或标准模块 中.本章我们所说的过程主要介绍的就是通用过程.
9.2.2 调用Sub过程
过程也可以通过变参(将变量作为实参)向主调程序传回一些运 算结果: 【例】编写一个过程,将传入的变量参数的值加1. Sub addVar(n As Integer) n=n+1 End Sub Private Sub Command1_Click() Dim kk As Integer kk = 1 addVar kk MsgBox kk End Sub
9.3.2 函数的调用
【例】利用梯形法求定积分.
假设函数在区间[A,B]上可积.根据数学的定义,定积分即 函数曲线与X轴及x=a,x=b所围成的面积,如图所示. 分析:为了求得这部分面积,我们不妨把区间[A,B]分成很 多份(n),每一份都形成如图所示的一个小梯形,设s为所 有小梯形的面积和.当n很大时,s近似等于所求的定积分.
9.3.1 函数的定义
建立函数的方法 建立函数的方法仍然有两种,和通用过程的 建立方法完全相同.
9.3.2 函数的调用
在VB中调用函数的方法和调用标准函数的方法 相同:
如果函数有返回值,一般按如下形式调用: 被赋值对象= 函数名(参数1, 参数2, …) 如果函数没有返回值,一般按如下形式调用: 函数名 参数1, 参数2, … 后者也能象调用Sub过程那样调用函数: call 函数名(参数1, 参数2, …)
vb9
1、打开文件
Open
文件名 For 模式 As [#]文件号
模式:Output 进行写操作 Input 进行读操作 Append 在末尾追加记录 文件号 1~511
注意: 文件名可以为字符串常量,也可以是字符变量。 Freefile()获得可利用的文件号。
9.2.2 常用语句和函数
(1) 顺序文件 按顺序进行访问。读和写时必须按从头到尾的顺序 操作。 优点:结构简单。处理文本方便,数据写入顺序文 件时都被转换为ASCII码字符。顺序文件也就是文 本文件。 缺点:必须按顺序访问,不能同时进行读、写操作。
(2) 随机文件 文件中每条记录长度相同,根据记录号可直接访 问任意一个记录。优点:存取速度快。
将一个记录变量的内容,写入所打开的磁盘文件中 指定的记录位置处。如果忽略记录号,则在当前记 录前插入一条记录。
Get
[#]文件号,[记录号],变量名
将指定的记录内容读入记录变量中。如果忽略记录 号,则表示读出当前记录后的那一条记录
例8.6 编写学生信息管理程序
第九章 数据文件
9.1 9.2 9.3 9.4
2、写操作 (1) Write
Write #文件号,[输出列表] Write在数据项之间插入“,”并给字符串加上双 引号。 例:Write #1, “One”, “Two”, 123 写入到文件后:"One","Two",123
9.2.2 常用语句和函数
(2) Print
选择“添加数据”,则将一个学生的学号、姓
名和成绩(Integer)添加到Score.txt文件中 选择“读取数据”,则从文件读取数据并计算 总分和平均成绩,最后送入文本框。
编程VB课程第九章
单文档界面(Single Document Interface,SDI) 多文档界面(Multiple Document Interface,MDI)
多文档界面(MDl)是指在一个父窗体中可同时打开多个子 窗体,子窗体特征为: ◆所有的子窗体都显示在父窗体之中,子窗体可以改变大 小或进行移动,但被限制在父窗体之中。 ◆当子窗体最小化时,它的图标将显示在父窗体内,而不 是显示在Windows的任务栏上。 ◆当子窗体最大化时,它的标题将与父窗体标题组合在一 起并显示在MDI窗体的标题栏上。 ◆活动子窗体的菜单显示在父窗体菜单栏中,而不是显示 在子窗体中。 ◆通过设定AutoShowChildren属性,子窗体可以在窗体加 载时自动显示(True)或自动隐藏(False)。
3.编写工具栏代码。 工具栏设定好以后,可以向Toolbar控件的ButtonClick事件 过程写入代码。返回的Button参数,表示被用户单击的那个按 钮。当工具栏中的按钮较多时,一般使用Select…Case语句结构 来编写根据按钮Button.Key(关键字)选择要执行的语句。
9.2.2 状态条
用Show和Unload语句可显示和缷载MDI窗体。 加载子窗体时,其父窗体会自动加载并显示。 缷载父窗体时,其子窗体会自动缷载。
三、运行时动态创建多文档(多子窗体)
Dim frmd as form1 „ 声明一个窗体变量 Set frmd=new form1 ‟ 创建一个与form1一样的新窗体 Frmd.Caption=“ Newform “ „改变新窗体标题 Frmd.show ‟显示新窗体
一、创建MDI应用程序的一般步骤
1.选取“工程’’菜单中的‘‘添加MDI窗体”选项,添 加一个MDI窗体。(只能有一个MDI窗体,但可以有多个子窗 体) 2.建新工程时自动生成Form1窗体,把“MDIChild”属性 设为True就成MDI窗体子窗体。再添加子窗体就选取‘‘工 程’’菜单中的‘‘添加窗体”命令,添加一个新普通窗体, 打开其属性对话框,然后把它的MDIChild属性设为True。这样 就创建了一个子窗体。 二、MDI窗体的显示
第9章 VB控件的使用
9.1 9.2 9.3 9.4 9.5 9.6 9.7
vb程序设计基础 程序设计基础
VB中的控件 VB中的控件 控件的常用属性及默认属性 焦点和Tab Tab键顺序 焦点和Tab键顺序 控件数组 常用控件的使用 使用ActiveX ActiveX控件 使用ActiveX控件 控件应用举例
vb程序设计基础 程序设计基础
本书目录
9.5 常用控件的使用
9.5.1 命令按钮
用于程序运行时执行相应的事件 1. 属性 (1)Caption (1)Caption 命令按钮上显示的文字 (2)Default 设定该命令按钮是否为默认按钮, (2)Default 设定该命令按钮是否为默认按钮 , 其值为 True时 Enter键相当于用鼠标点击了该按钮 键相当于用鼠标点击了该按钮。 True时,按Enter键相当于用鼠标点击了该按钮。 (3)Cancel (3)Cancel 设定该命令按钮是否为Cancel按钮,其值 设定该命令按钮是否为Cancel按钮, Cancel按钮 True时 ESC键相当于用鼠标点击了该按钮 键相当于用鼠标点击了该按钮。 为True时,按ESC键相当于用鼠标点击了该按钮。 注:在一个窗体上只能有一个命令按钮设为默认按钮和 Cancel按钮 按钮。 Cancel按钮。
vb程序设计基础 程序设计基础
本书目录
(5)Style 按钮样式 (5)Style Standard:默认, 0 —— Standard:默认,按钮上不能显示图形 Graphical: 1 —— Graphical:按钮上可以显示图形和文字 (6) Picture 在按钮装入图形 (7) ToolTipText 加以文字提示 命令按钮一般接收Click Click事件 2. 事件 命令按钮一般接收Click事件
VB程序设计教程 第九章
如何解决?
根据提示以及VB的语言、语法规则修改出错的地方。
运行错误
是什么?
由于试图执行一个不可以执行的操作而引起的错误,例如使用一个 不存在的对象或者使用一个某些关键属性没有正确设置的对象;在 程序运行过程中数组下标越界、数据溢出。
如何发现?
系统你会在运行时检测到并给出提示信息
如何解决?
根据提示以及VB的语言、语法规则修改出错的地方。
4、如何退出中断状态?
“运行”菜单中“继续(F5)”、“结束”、或者“重新启动”
使用调试窗口
1、本地窗口 显示当前过程所有的局部变量的当前值。 2、监视窗口 用于查看指定的表达式的值。 3、立即窗口 显示当前过程中有关的信息。当测试一个过程时候,可 在“立即”窗口中输入代码并立即执行;也可以利用 Print方法显示表达式或者变量的值。 Print、msgbox方法等
逻辑错误
是什么?
'判断素数的函数 由于编写的程序不能实现预定的处理功能要求而产生的错误。主 Private Function Prime(n As Long) 要算法的错误,例如书P202的例子。 As Boolean Dim i As 如何发现? Long For i = 2 To Sqr(n) 对算法进行重新分析或者对程序按步调试。 If n Mod i = 0 Then Exit For 如何解决? Next i Prime = True 对算法进行重新分析或者对程序按步骤调试,对引起逻辑错误的 End Function 程序实例 地方进行修改。
语法错误
是什么?
由于违反了语言有关语句形式或者使用规则而产生的错误,例如: 语句格式错误、语句定义符拼错、变量名定义错、标点符号使用 错误、语句结构不完整或者不匹配。
VB chapter9
★Style属性: 设定命令按钮的类别,有0、1两个取值。 0 — 表示按钮为标准按钮,按钮上不能显示图 形,这是缺省值。 1 — 表示按钮为图形按钮,这时会在Caption 文本上方显示由Picture属性指定的图形。 注:若在Picture图片属性中选择了图片文件, 则Style属性值必须为1,否则无法显示图形。 ★Picture属性: 用于设定命令按钮上显示的图形,可以在设计阶 段单击其后的省略号按钮选择一个文件(以.bmp 和.Ico为扩展名的图片文件),也可以在代码中设 置。只有当命令按钮的Style属性设为1时,才会在 命令按钮上显示图形。 ★ToolTipText属性: 用于设定图形的提示文字,与Picture图片属性同时 使用。
上一页 下一页
字体
Font属性:改变文本的外观 FontName:字体 FontSize:字号 FontBold:粗体 FontItalic:斜体 FontStrikethru:删除线
FontUnderline:下划线
例9-2(p-168)
例:利用循环语句显示不同字形的大小。并在窗 上一页 下一页 体上显示出来。
3、可插入的对象
有些对象能够添加到工具箱中,例如一个Excel工作表, 这时可以把它们当作控件使用,这样的对象称可插入对象。 其中一些对象还支持OLE自动化,使用这种控件就可以在 VB应用程序中编程控制另一个应用程序的对象。
上一页 下一页
返回
二 、控件的命名规则 在第一次创建控件时,VB总是将其“名称” 属性设置为默认值。为了便于提高程序的 理解性和可维护性,可以为控件取一个易 记和有代表性的名字。
上一页 下一页
◆ 外观 Caption(标题)属性:控件上显示的内容 ForeColor(前景颜色)属性:控件的正文颜色 BackColor(背景颜色)属性:正文以外显示区域颜色 BackStyle(背景风格)属性:0—Transparent 透明显示 1—Opaque不透明 AutoSize属性:决定控件是否自动调整大小 True — 自动调整大小 False — 保持原设计大小,正文过长自动裁减
VB第9章 过程
End If
End Function
9. 3 Function 函数过程
【例VB9-5】 同【例VB9-2】 ,利用 Function 函数计算 s = 1! + 3! + 5! + 7!
Private Sub Form_Load()
Show
For i = 1 To 7 Step 2 sum = sum + fact(i)
2.标准模块
• 当有多个窗体模块需要共享代码时, 创建标准模块,使其包含公共代码。 • 标准模块是应用程序内其它模块访问 的过程和声明的容器。包含变量、常 数、类型、过程的全局声明
标准模块只有代码窗口,没有对 象窗口
9. 4 变量的作用域和存活期
3.类模块
• 它是面向对象编程的基础,可在类模 块中编写代码建立新对象(实现用对 象编程)。
9. 4 变量的作用域和存活期
【例VB9-7】用静态变量求三个随机数的和 Function Total(n) Static sum sum = sum + n Total = sum End Function 'sum为静态变量
9. 4 变量的作用域和存活期
【例VB9-8】 统计文本框中单词的个数。 在文本框中输入单词,当输入空格(32) 和回车键(13)时,计数器加1
Private Sub Command1_Click() '无参数 Call Star1 End Sub Public Sub Star1() Print Tab(2); String(10, "*") End Sub
9. 2 Sub 子过程
Private Sub Command2_Click() '有参数
VB第9章
2.标准模块 标准模块(文件扩展名为 .BAS)是应用程序内其它模块访问的 过程和声明的容器。它们可以包含变量、常数、类型、外部过程 和全局过程的全局(在整个应用程序范围内有效的)声明或模块 级声明。写入标准模块的代码不必绑在特定的应用程序上;如果 不小心用名称引用窗体和控件,则在许多不同的应用程序中可以 重用标准模块。
第9章 变量与过程的作用域
变量与过程可被访问的范围称为变量与过程的作用域。
9.1 代码模块的概念
对于一个大型的程序,在建立应用程序时,通常应先设计代码的组成结 构。在一般情况下,VB将代码存储在3种不同的模块中(窗体模块、标 准模块和类模块),如图9-1所示。
例如,某工程的模块结构如图92所示。
1.窗体模块
Private Sub Form_Activate() Dim i As Integer For i = 1 To 4 ' 循环4次 tests ' 调用通用过程tests Next i End Sub 通用过程代码如下: Sub tests() Dim a As Integer, x As String ' 定义动态变量a和x,每次 调用重新初始化 Static b, y ' 定义静态变量b和y,保留变量的值 a = a + 1 ' a为动态变量 b=b+1 ' b为静态
Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End If End If End If End Sub 运行程序,如果输入的密码正确,则显示“欢迎使用本系统”,如图9-8 所示;如果输入的密码不正确,则弹出消息框,提示您还有几次机会, 如图9-9和图9-10所示;如果3次输入的密码都不正确,则显示“对不起, 您无权使用本系统。”,如图9-11所示。
VB编程课件第9章
9.1.1 文件的结构
为了有效地存取数据,数据必须以某种特定方式存放, 为了有效地存取数据,数据必须以某种特定方式存放,这种方式称 为文件的结构。基本的文件结构有:字符、字段、记录。 为文件的结构。基本的文件结构有:字符、字段、记录。 1. 字符(Character) 字符( ) 字符是数据的最小单位,是构成文件的最基本单位。字母、数字、 字符是数据的最小单位,是构成文件的最基本单位。字母、数字、 特殊符号都可以看成是一个字符。 特殊符号都可以看成是一个字符。 2. 字段(Field) 字段(Field) 字段也称为域,是指由某种数据类型及若干字符组成的一项数据, 字段也称为域,是指由某种数据类型及若干字符组成的一项数据, 通常表示特定含义。 通常表示特定含义。 3. 记录(Record) 记录( ) 记录是由一个或多个相关联的字段组成, 记录是由一个或多个相关联的字段组成,是计算机处理数据的基本 单位。 单位。 文件就是记录的集合。 文件就是记录的集合。
9.2.1 使用传统的方式访问文件
函数向file.txt文件中写入数据。 文件中写入数据。 【例9-2】使用 】使用Print、PrintLine函数向 、 函数向 文件中写入数据 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click FileOpen(1, "c:\file.txt", OpenMode.Output) ' 打开指定文件 Print(1, "大家 大家") ' 写入数据,不包括换行符 写入数据, 大家 Print(1, "好!") 好 PrintLine(1) ' 写入换行符 PrintLine(1, "欢迎使用 TAB(), "VB 2005!") 欢迎使用", ' 写入数据,包括换行符 写入数据, 欢迎使用 ! PrintLine(1, "VB 2005", TAB(), "是VB的最新版本。") 的最新版本。 是 的最新版本 PrintLine(1, SPC(3), "它具有强大的文件操作功能。") 它具有强大的文件操作功能。 它具有强大的文件操作功能 FileClose(1) ' 关闭文件 End Sub
VB程序设计第九章事件过程
上一页
返回章首
下一页
第九章 事件过程
9.3 拖放( Drag and Drop ) 拖放( 与拖放有关的属性, 9.3.1. 与拖放有关的属性,事件和方法 1.属性 1.属性 DragMode属性 1) DragMode属性 缺省) 0:(缺省),手工拖动模式 1:自动拖动模式 . [例9-9]转换拖放模式 9]转换拖放模式 DragIcon属性 2) DragIcon属性 对象.DragIcon=LoadPicture ("C:\Icons\ 对象.DragIcon=LoadPicture ("C:\Icons\Mail.ico")
上一页 返回章首 下一页
第九章 事件过程
3.方法 3.方法 Drag方法 Drag方法 格式】 对象.Drag 【格式】: 对象.Drag [Action] 说明】 【说明】: Action可选的 它指定要执行的动作. 可选的. Action可选的.它指定要执行的动作. 三种情形: 三种情形: 0:取消拖放操作 1: 开始拖放操作 2:结束拖放操作
上一页 返回章首 下一页
第九章 事件过程
DragOver事件 2) DragOver事件 格式】 【格式】: Private Sub Object_Drag Over (source As Control, x As Single, y As Single, state As Integer ) 说明】 【说明】: state是一个整形变量,由三种取值,分别代表源 是一个整形变量,由三种取值, 对象相对于目标对象的三种不同状态: 对象相对于目标对象的三种不同状态: 0 = 进入 1 = 离去 2 = 经过
第九章 事件过程
事件过程( 第九章 事件过程(Event Procedure)
VB第9章
第9章 菜单程序设计
9.1 菜单
2.下拉式菜单设计
主要设计2部分 (1)菜单栏,即主菜单 (2)设计各级子菜单。 子菜单可以是:菜单命令,下级子菜单, 分隔条
5
第9章 菜单程序设计
9.1 菜单
用菜单编辑器建立菜单
打开菜单编辑器
(1)选中窗体,按下Ctrl+E键;
(2)可以选择“工具|菜单编辑器” ;
FilterIndex Int
InitDir String
设置或返回在文件列表框中所选文件类型的序号
制定初始目录,默认为当前目录
26
第9章 对话框程序设计
9.7
文件对话框
monDialog.ShowSave “另存为”对话框
DefaultExt属性: 表示所保存文件的缺省扩展名
其它属性同ShowOpen
13
第9章 菜单程序设计
9.1 菜单
例9-3 通过菜单完成两个整数的加减运算, 并添加乘法和除法操作。
Private Sub Form_Click() If AppendCalNo = 0 Then AppendCalNo = AppendCalNo + 1 Load appendcal(AppendCalNo) appendcal(AppendCalNo).Caption = "乘法"
27
第9章 对话框程序设计
9.8 其它对话框
其它对话框
monDialog.ShowColor “颜色”对话框 属性: Color 设置或返回用户指定的颜色
23
第9章 对话框程序设计
9.6 对话框概述
通用对话框控件的外形和结构是因Action属性
VB第9章详细介绍
功能:返回一个指示是否达到文件尾的逻辑值。 功能:返回一个指示是否达到文件尾的逻辑值。
()函数 (4)Seek()函数 ) ()
格式:Seek(文件号 文件号) 格式: 文件号 功能:返回打开文件当前的读/写位置 写位置, 功能:返回打开文件当前的读 写位置,返回值的类型 是Long。 。
9.3 文件访问
5. 顺序文件综合应用举例 【例9-7】 建立一个窗体如下图所示,实现以下功 】 建立一个窗体如下图所示, 能:
9.3 文件访问
程序实现功能: 程序实现功能:
( 1)在文件名文本框中输入文件名 ,如果该文件存在 , 单 ) 在文件名文本框中输入文件名,如果该文件存在, 浏览数据” 击 “ 浏览数据 ” 按钮将该文件内容显示在文件内容文 本框;如果该文件不存在,单击“浏览数据” 本框 ; 如果该文件不存在 , 单击 “ 浏览数据 ” 按钮时 给出错误提示,并清空文件名文本框重新输入。 给出错误提示,并清空文件名文本框重新输入。 ( 2)单击 “ 写数据 ” 按钮时 , 将文件内容文本框中的数据 ) 单击“写数据”按钮时, 写到指定的文件中。 写到指定的文件中。 ( 3)单击 “ 添加数据 ” 按钮时 , 将文件内容文本框中的数 ) 单击“添加数据”按钮时, 据追加到指定的文件中。 据追加到指定的文件中。 ( 4)单击 “ 清除数据 ” 按钮时 , 将文件内容文本框中的数 ) 单击“清除数据”按钮时, 据清除。 据清除。 (源文件 源文件) 源文件
9.1 文件系统控件
(4)Click、DblClick事件 ) 、 事件
'单击输出文件名。 单击输出文件名。 单击输出文件名 Sub File1_Click( ) MsgBox File1.FileName End Sub '双击执行可执行程序。 双击执行可执行程序。 双击执行可执行程序 Sub File1_DblClick( ) ChDir Dir1.Path ' 改变当前目录 RetVal = Shell(File1.FileName, 1) ' 执行程序 End Sub
vb第9章
程
19
' CreateStr函数返回N个字符
Private Function CreateStr(N As Integer)
第 九 章 过 Dim TmpStr As String, I As Integer
TmpStr = ""
' StrAsc用于保存字符的ASCII码
StrAsc = Asc("A") – 1 For I = 1 To N StrAsc = StrAsc + 1 ' 生成下一个字符的ASCII码 程 TmpStr = TmpStr & Space(1) & Chr(StrAsc) Next I CreateStr = TmpStr End Function
16
程
第 九 章 过
程
' 在Command1的单击事件过程中调用自定义函数 Private Sub Command1_Click() Dim m As Integer, n As Integer m = Val(Text1.Text): n = Val(Text2.Text) Label3.Caption = Str(hcf(m, n)) End Sub ' 在Text1获得焦点时选中其中的文本 Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub
8
【例9-3】从键盘上任意输入一个整数,然后调用例 9-1编写的函数过程计算其阶乘数。 第 九 章 过
程
9
第 九 章 过
程
' 自定义求阶乘的函数过程Fact Functin Fact(N As Integer) As Long Dim I As Integer, F As Long F=1 For I = 1 To N F=F*I Next I Fact = F ' 给函数过程名赋值 End Function ' 在按钮的Click事件过程中调用函数过程 Private Sub Command1_Click() Dim X As Integer X = Val(Text1.Text) Label2.Caption = Trim(Str(X)) & "的阶乘数为: " Label3.Caption = Trim(Str(Fact(X))) End Sub 10
vb教学第9章
可以在代码中通过该方法将Value属性设置为True。 与命令按钮相同,使用该方法之前,必须要保证单选钮处于可 见和可用状态(即Visible与Enabled属性值均为True)。
Click事件 Click事件
单击单选按钮后,其Value值为True,并会触发其Click事件。 单击单选按钮后,其Value值为True,并会触发其Click事件。
Selected(组合框无此属性)
列表项是否被选中属性,其值为逻辑值。 格式:对象名.selected(序号) 对象名.selected(序号 对象名.selected 值为Ture Ture——列表项被选中 Ture 值为False False——列表项没有被选中 False 多项选择时,要显示选中的列表项,不用 list(序号 Text属性,而是用list(序号 list(序号)属性。
列表框程序示例2—显示所选的多个列表项(Form94)
思考:list1.list(i) 是否可以换成:List1.text ?
列表框程序示例3—删除所选的多个列表项(Form94)
五、组合框
组合框与列表框相似,但组合框不允许多项选择。 组合框的Style属性取值:0 , 1 , 2 ,而列表框的取 0 值只有0,1。 0 Style取值为0 , 1 时 , 组合框允许输入、修改数据, 0 而列表框中不能修改。
1. 先画框架,再在框架中画单选按钮 2. 若单项按钮已经画好,需要使用“剪切/粘贴”法将窗体中的单选 “剪切/粘贴” 按钮移到框架内。
一、单选按钮——常用属性 一、单选按钮——常用属性
Caption
单选按钮的标题文本。 单选按钮的标题文本。 标题文本中可加&设置快捷键, 标题文本中可加&设置快捷键,如: &File 、&Edit
VB第9章
【例9-1】编写一个除法计算器,计算器的设计界面如图9-35所示。
要求:程序运行时,输入被除数和除数后单击【计算】按钮将会把运算结果显示在【结果】文本框中,如图9-36所示。
要求程序能够识别出除数为零的错误并给出提示信息,如图9-37所示。
图9-35程序设计界面图9-36程序正常运行界面图9-37除数为零的情况分析:首先把在文本框中输入的字符串转换成整数(只有整数和Decimal型的数据除以0才会发生异常,其他类型除以0,结果是无穷大),然后通过I语句来判断除数是否为0,如果除数不为0,进行除法运算,得到结果并转换成字符串显示在第三个文本框中,如果除数为0,则在第三个文本框中显示“除数为零”的错误提示信息。
主要步骤:(1)界面设计本例控件对象及其属性设置如表9-2所示。
表9-2例9-1控件属性设置及控件作用(2)程序代码设计如下:Dim Num1,Num2 As Single ′存放被除数和除数Dim Result As Single′存放结果Num1 = TextBox1.Text:Num2=TextBox2.Text′获取除数和被除数If Num2 = 0 ThenTextBox3.Text="除数为零"′如果除数为0,显示出错信息ElseResult=Num1/Num2′如果除数不为0,则相除得到结果TextBox3.Text=CStr(Result)′显示结果End If本例虽然能够处理除数为零的错误,但在程序执行时如果输入的除数和被除数中包含数字以外的其他字符,依旧会产生异常,而用If语句来处理这样的异常就显得有点力不从心了。
为使应用程序能够方便地处理错误,在现代的程序设计语言中,基本上都提供了异常处理功能。
在中,可以采用非结构化的方法处理异常,也可以采用结构化的方法处理异常。
特别是结构化处理异常的方法,可以把程序中出现的异常问题以统一的方式进行处理,这样不但能增加程序的稳定性和可读性,同时也可规范程序的设计风格,有利于提高程序质量。
vb第9章
授课学时 3课时
本章主要内容
9.1 9.2 9.3 9.4 9.5 菜单 对话框 多重窗体程序 Visual Basic工程结构 综合应用程序举例
重点:菜单的设计和对话框的使用、 重点:菜单的设计和对话框的使用、 多重窗体程序的建立
9.1 菜单
常用菜单有2种:
下拉式
弹出式(右键产生) 右键产生)
打开菜单编辑器
(1)选中窗体,按下Ctrl+E Ctrl+E键; Ctrl+E (2)可以选择“工具|菜单编辑器 ; 工具| 工具 菜单编辑器” (3)右击 右击窗体,从快捷菜单中选择“菜单编辑器”命令。 右击 “菜单编辑器”
Index
Checked,菜单 命令左边是否 产生√
Enable d
Visibl e
例9-2 整数加减运算
菜单的增减
了解
首先建立一个菜单项,设置名称,并设置索引为0。 并设置索引为0 并设置索引为 Load 菜单项控件数组(Index):从菜单控件数组中 添加一个新的菜单项。 UnLoad菜单项控件数组(Index):从菜单控件数组 中删除一个菜单项。
例9-3 在例9-2中添加乘法和除法操作,单 击窗体时,增加两个子菜单命令“乘法”和 “除法”,当用户双击窗体时,删除这两个子 菜单命令。 。
多重窗体程序设计 添加(窗体或模块)、 运行、保存、打开
课后习题
1.Visual Basic的菜单可分为_________菜单和 __________菜单两种。 2.实现菜单弹出的方法是____________。 3.Visual Basic的菜单可在中设计完成。若要使某项 菜单在运行时不可见,可设置该菜单对象的属性 _______为False来实现;若要使某项菜单在运行时 失效,则应设置菜单项对象属性__________为False。 4.若要将某项设计为分隔条,则该菜单项的标题应 设置为_____。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB第九章.txt铁饭碗的真实含义不是在一个地方吃一辈子饭,而是一辈子到哪儿都有饭吃。
就算是一坨屎,也有遇见屎壳郎的那天。
所以你大可不必为今天的自己有太多担忧。
第9章过程Visual Basic应用程序是由过程组成(如前面的各种事件过程)的。
在用Visual Basic设计应用程序时,除了定义常量和变量外,全部工作就是编写过程。
Visual Basic中的过程可以看作是编写程序的功能模块。
在前面的各章中,已多次见过事件过程,这样的过程是当发生某个事件(如Click, Load, Change)时,对该事件作出响应的程序段,这种事件过程构成了Visual Basic应用程序的主体。
有时候,多个不同的事件过程可能需要使用一段相同的程序代码,因此可以把这一段代码独立出来,作为一个过程,这样的过程叫做“通用过程”(general procedure)它可以单独建立,供事件过程或其他通用过程调用。
在Visual Basic中,通用过程分为两类,即子程序过程和函数过程,前者叫做Sub过程,后者叫做Function过程。
9.1 Sub过程Visual Basic提供了与Pascal, C, Ada等语言类似的子程序调用机制,即子程序过程和函数过程(C语言全由函数组成)。
为了便于区分,在今后的叙述中,我们把由Sub ...End Sub 定义的子程序叫做子程序过程或Sub过程,而把由Function ... End Function定义的函数叫做函数过程或Function过程。
9.1.1建立Sub过程1.定义Sub过程通用Sub过程的结构与前面多次见过的事件过程的结构类似。
一般格式如下:[Static][Private][Public]Sub过程名[(参数表列)]语句块[Exit Sub][语句块]End Sub用上面的格式可以定义一个Sub过程,例如:Private Sub Subtest()Print "这是一个sub过程"End SubPrivate Sub Form_click()Print "这是窗体的单击鼠标事件"Subtest '调用sub子过程End Sub说明:(1) Sub过程以Sub开头,以End Sub结束,在Sub和End Sub之间是描述过程操作的语句块,称为“过程体”或“子程序体”。
格式中各参量的含义如下:①Static指定过程中的局部变量在内存中的默认存储方式。
如果使用了Static则过程中的局部变量就是" Static "型的,即在每次调用过程时,局部变量的值保持不变;如果省略" Static则局部变量就默认为“自动”的,即在每次调用过程时,局部变量被初始化为0或空字符串。
Static对在过程之外定义的变量没有影响,即使这些变量在过程中使用。
②Private:表示Sub过程是私有过程,只能被本模块中的其他过程访问,不能被其他模块中的过程访问。
③Public表示Sub过程是公有过程,可以在程序的任何地方调用它。
各窗体通用的过程一般在标准模块中用Public定义,在窗体层定义的通用过程通常在本窗体模块中使用,如果在其他窗体模块中使用,则应加上窗体名作为前缀。
④过程名:是一个长度不超过255个字符的变量名,在同一个模块中,同一个变量名不能既用作Sub过程名又用作Function过程名。
⑤参数表列:含有在调用时传送给该过程的简单变量名或数组名,各名字之间用逗号隔开。
“参数表列”指明了调用时传送给过程的参数的类型和个数,每个参数的格式为:[ByVal]变量名[()][As数据类型]这里的“变量名”是一个合法的Visual Basic变量名或数组名,如果是数组,则要在数组名后加上一对括号。
“数据类型”指的是变量的类型,可以是Integer, Long, Single, Double, String, Currency, Variant或用户定义的类型。
如果省略"As数据类型”,则默认为Variant. “变量名”前面的"ByVal"是可选的,如果加上"ByVal",则表明该参数是“传值”(Passed by Value)参数,没有加"ByVal"(或者加ByRef)的参数称为“引用”(Passed by Reference)参数。
有关参数的传送问题将在9.3节介绍。
在定义Sub过程时,“参数表列”中的参数称为“形式参数”,简称“形参”,不能用定长字符串变量或定长字符串数组作为形式参数。
不过,可以在调用语句中用简单定长字符串变量作为“实际参数”,在调用Sub过程之前,Visual Basic把它转换为变长字符串变量。
(2) End Sub标志着Sub过程的结束。
为了能正确运行,每个Sub过程必须有一个End Sub 子句。
当程序执行到End Sub时,将退出该过程,并立即返回到调用语句下面的语句。
此外,在过程体内可以用一个或多个Exit Sub语句从过程中退出。
(3) Sub过程不能嵌套。
也就是说,在Sub过程内,不能定义Sub过程或Function过程;不能用GoTo语句进入或转出一个Sub过程,只能通过调用执行Sub过程,而且可以嵌套调用。
下面是一个Sub过程的例子:Sub Tryout(x As Integer, ByVal y As Integer)x=x+100y=y*6Print x,yEnd Sub上面的过程有两个形式参数,其中第二个形参的前面有ByVal,表明该参数是一个传值参数。
过程可以有参数,也可以不带任何参数。
没有参数的过程称为无参过程。
例如上面的例子。
对于无参过程,调用时只写过程名即可。
2.建立Sub过程前面几章已见过如何建立事件过程。
通用过程不属于任何一个事件过程,因此不能放在事件过程中。
通用过程可以在标准模块中建立,也可以在窗体模块中建立。
如果在标准模块中建立通用过程,可以使用以下两种方法:第一种方法,操作步骤如下:(1)执行“工程/添加模块”,打开“添加模块”对话框,在该对话框中选择“新建”选项卡,然后双击“模块”图标,打开模块代码窗口。
(2)执行“工具”菜单中的“添加过程”命令,打开“添加过程”对话框,如下图所示。
(3)在“名称”框内输入要建立的过程的名字(例如Tryout).(4)在“类型”栏内选择要建立的过程的类型,如果建立子程序过程,则应选择“子程序”;如果要建立函数过程,则应选择“函数”。
(5)在“范围”栏内选择过程的适用范围,可以选择“公有的”或“私有的”。
如果选择“公有的”,则所建立的过程可用于本工程内的所有窗体模块;如果选择“私有的”,则所建立的过程只能用于本标准模块。
(6)单击“确定”按钮,回到模块代码窗口,如下图。
此时可以在Sub和End Sub之间键入程序代码(与事件过程的代码输入相同)。
第二种方法:执行“工程”菜单中的“添加模块”命令,打开模块代码窗口,然后键入过程的名字。
例如,键入“Sub Tryout() ".按回车键后显示:Sub Tryout()End Sub即可在Sub和End Sub之间键入程序代码。
在模块代码窗口中,通用过程出现在“对象”框的“通用”项目下,其名字可以在“过程”框中找到。
如果在窗体模块中建立通用过程,则可双击窗体进入代码窗口,在“对象”框中选择“通用”,在“过程”框中选择“声明”,直接在窗口内键入“Sub Tryout()”,然后按回车键,窗口内显示:Sub Tryout()End Sub此时即可键入代码。
9.1.2调用Sub过程调用引起过程的执行。
也就是说,要执行一个过程,必须调用该过程。
Sub过程的调用有两种方式,一种是把过程的名字放在一个Call语句中,一种是把过程名作为一个语句来使用。
1.用Call语句调用Sub过程格式:Call过程名[(实际参数)]Call语句把程序控制传送到一个Visual Basic的Sub过程。
用Call语句调用一个过程时,如果过程本身没有参数,则“实际参数”和括号可以省略;否则应给出相应的实际参数,并把参数放在括号中。
“实际参数”是传送给Sub过程的变量或常数。
例如:Call Tryout(a,b)2.把过程名作为一个语句来使用在调用Sub过程时,如果省略关键字Call,就成为调用Sub过程的第二种方式。
与第一种方式相比,它有两点不同:(1)去掉关键字Call;(2)去掉“实际参数”的括号。
例如:Tryout a,b下面举两个例子。
例9.1编写一个计算矩形面积的Sub过程,然后调用该过程计算矩形面积。
程序如下:Sub RecArea (Rlen, Rwid)Dim AreaArea=Rlen*RwidMsgBox "Total Area is”& AreaEnd SubSub Form Click()Dim A, BA=val(InputBox("What is the length?"))B=val(InputBox("What is the width?"))RecArea A, BEnd Sub通用过程RecArea用来计算并输出矩形的面积,它有两个形参,分别为矩形的长和宽。
在Form Click事件过程中,从键盘上输入矩形的长和宽,并用它们作为实参调用RecArea过程。
在该例中,使用的是第二种方式调用Sub过程。
例9.2编写一个用来延迟指定时间(秒)的Sub过程。
调用这个过程,按指定的时间间隔显示若干行信息。
用For---Next循环可以实现时间延迟,但很不精确。
这里用Visual Basic的内部函数Timer来编写较为精确的时间延迟过程。
Timer函数返回系统时钟从午夜开始计算的秒数,把Timer加上需要延迟的时间(秒)作为循环结束的时间,当Timer超过这个时间时结束循环,即停止时间延迟。
用这种方法可以得到精确的时间延迟。
程序如下:Static Sub DelsyLoop(DelsyTime)Const SecondsInDay=24&*60&*60&LoopFinish=Timer+DelsyTimeIf LoopFinish>SecondsInDay ThenLoopFinish=LoopFinish一SecondsInDayDo While Timer>LoopFinishLoopEnd IfDo While Timer<LoopFinishLoopEnd SubSub Form_Click()Fontsize=12Print”现在输出第一行.,Print’.等待5秒钟……”DelsyLoop 5PrintPrint”输出第二行”Print”等待10秒钟……”Call DelsyLoop(10)PrintPrint”输出第三行.”End Sub用上面的DelayLoop过程可以延迟指定的时间,调用时用需要延迟的时间(秒)作为实参。