VB第九章

合集下载

VB教程第9章

VB教程第9章
3)Width和Height属性 这两个属性设置图片框控件的实际大小,它们总是表示空间容器的 单位。 4) Left和Top属性 Left和Top属性是图片框控件左上角的坐标,用容器的坐标系表示。 5) ScaleMode属性 ScaleMode属性设置或返回控件的当前坐标系。
• 表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章

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第九章 文件

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章

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

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课程第九章

编程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章 VB控件的使用
VB控件的使用 第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的语言、语法规则修改出错的地方。
运行错误
是什么?
由于试图执行一个不可以执行的操作而引起的错误,例如使用一个 不存在的对象或者使用一个某些关键属性没有正确设置的对象;在 程序运行过程中数组下标越界、数据溢出。
如何发现?
系统你会在运行时检测到并给出提示信息
如何解决?
根据提示以及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 程序实例 地方进行修改。
语法错误
是什么?
由于违反了语言有关语句形式或者使用规则而产生的错误,例如: 语句格式错误、语句定义符拼错、变量名定义错、标点符号使用 错误、语句结构不完整或者不匹配。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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过程可以延迟指定的时间,调用时用需要延迟的时间(秒)作为实参。

相关文档
最新文档