Visual Basic程序设计
基础教程
电子教案
制作人:曾强聪
2004 年 4 月
课程内容
第 1 章 第 2 章 第 3 章 第 4 章
第 5 章 第 6 章 第 7 章 第 8 章
第 1章 Visual Basic 6.0 基本知识
环境要求
安装步骤
集成开发环境
工程管理
程序编辑
程序调试
程序创建步骤
Visual Basic 的特点
可视化, Visual的英文含义既是可视化,在可视化环境下创
作前端界面也就如同摆放积木。
面向对象, 面向对象编程是建立在类的基础上的,其通过类
的封装而使源程序更加便于维护。
部件编程, 部件编程则使软件创建如同组装一辆汽车。
事件驱动, 事件驱动则是指程序的执行路线是基于用户的操
作步骤来确定的。
环境要求
操作系统,NT Server 4.0,NT Workstation 4.0,Windows
95,或更高版本。
CPU,486DX/66 MHz 或更高的处理器。
内存,Windows 95/ 98下要求 24MB以上的内存,Windows
NT下要求 32MB以上。
磁盘空间,对于标准版或专业版,典型安装 48MB,完全安
装 80MB。
其他设备,CD-ROM 驱动器,鼠标或其他光标控制设备。
安装步骤
( 1)启动安装程序。
( 2) 输入用户 ID号
( 3) 输入姓名, 用户单位
( 4) 选择安装路径 。
( 5) 选择安装方式, 有, 典型安装, 和, 自定义安装, 两
种安装方式 。
集成开发环境
工程类型
1、标准 EXE工程:用来创建 Windows环境下的标准可执
行程序文件。
2,ActiveX DLL工程:用来创建能够与应用程序运行在
同一进程内的 ActiveX DLL部件。
3,ActiveX EXE工程:用来创建在应用程序进程外工作
的 ActiveX EXE部件。
4,ActiveX 控件工程:用来创建可视开发环境下的前端
界面元素。
工程资源
程序工程由文件组成, 主要文件类型有,
工程文件 (.vbp)。
标准模块文件 (.bas)。
窗体的文件 (.frm)。
窗体的二进制数据文件 (.frx)。
类模块文件 (.cls)。
包含 ActiveX 控件的文件 (.ocx)。
工程管理
Visual Basic是以工程为单位创建程序的, 其通过工程
文件 (.vbp)获得工程信息, 并通过, 工程资源管理器,,
,工程属性, 窗口实现对程序工程的有效管理 。
程序编辑
在编辑程序时, 经常用到的工具有,
1,窗体设计器, 其用于编辑用户界面 。
2,代码编辑器, 其用于编辑源程序代码 。
3,属性窗口, 其用于设置窗体或控件的属性值 。
程序调试
在调试程序时, 最常使用的调试方法有,
1,在程序中设置断点, 进行中断调试 。
2,通过, 立即窗口, 进行数据测试 。
3,使程序逐条语句, 或逐过程执行, 进行单步调 。
程序创建步骤
当在 Visual Basic 6.0中创建应用程序时, 一般需要经历以下
基本步骤,
1,分析程序问题 。
2,建立程序工程 。
3,设计用户界面 。
4,编写并调试程序代码 。
5,保存工程资源 。
6,对源程序进行编译 。
程序创建步骤
程序创建举例,
考虑创建一个窗体程序, 其用于商品销售时的累积计价 。
具体考虑是,。
1,添加, 文本框控件,, 用于商品的单价, 数量的输入 。
2,添加, 命令按钮控件,, 并在其 Click事件中添加, 计价
程序,, 用于商品计价 。
3,添加, 标签控件,, 用于商品价值和商品总价的输出 。
集成开发环境( 2)
Visual Basic 6.0集成开发环境由 菜单, 工具栏, 工具箱,窗
体设计器、属性窗口、工程管理器、代码编辑器,以及对象浏
览器、窗体布局窗口、编程环境设置窗口等组成;它们是用户
实施可视化开发所必须的成分。
Visual Basic 6.0 菜单
菜单是在集成开发环境下发布命令的最基本手段。 Visual
Basic 顶级菜单有,文件, 编辑, 视图, 工程, 格式, 调试,
运行, 工具, 外接程序,但菜单命令是通过子菜单中的子菜
单项发出的。
文件菜单
文件菜单主要用于建立、打开、
添加、移去、保存工程和文件,
包括:新建工程,打开工程,
添加工程,移除工程,保存工
程,工程另存为,保存文件,
文件另存为,打印,打印设置,
生成工程 等子菜单项。
编辑菜单
在对工程进行修改时,编辑菜
单用于各种编辑操作 。包括:撤
消、重复、剪切、复制、粘贴、
粘贴链接、删除、全选、查找、
缩进、凸出、插入文件、属性/
方法列表、快速信息、参数信息
书签等子菜单项。
视图菜单
视图菜单用于显示各种窗口及
和窗口有关的操作 。包括:代码
窗口、对象窗口、定义、最后位
置、对象浏览器、立即窗口、本
地窗口、监视窗口、调用堆栈、
工程资源管理器、属性窗口、窗
体布局窗口、属性页、表、缩放、
显示窗格、工具箱、调色板、工
具栏等子菜单项。
工程菜单
工程菜单用于为当前工程创建
模块、作对象引用或提供各种设
计器 。包括:添加窗体、添加
MDI窗体、添加模块、添加用户
控件、添加属性页、添加用户文
档、添加设计器、添加文件、移
除、引用、部件、工程属性等子
菜单项。
格式菜单
格式菜单用于界面设计,能使
界面中的控件规范排列 。包括:
对齐、统一尺寸、按网格调整大
小、水平间距、垂直间距、在窗
体中居中对开、顺序、锁定控件
等子菜单项。
调试菜单
调试菜单用于调试、监视程序 。
包括:逐语句、逐过程、跳出、
运行到光标处、添加监视、编辑
监视、快速监视、切换断点、清
除所有断点、设置下一条语句、
显示下一语句等子菜单项。
运行菜单
查询菜单中各条菜单命令用于
数据库表的查询及相关操作 。所
提供的各种查询设计工具,使用
户能够通过可视化工具创建 SQL
语句,实现对数据库的查询、修
改。
工具菜单
工具菜单包括:添加过程、过
程属性、菜单编辑器、选项、发
布等子菜单项。
外接程序菜单
外接程序菜单工程菜单用于为
当前工程创建含:可视化数据管
理器、外接程序管理器等子菜单
项。
Visual Basic 6.0 工具栏
工具栏的作用是可以通过其上面的图标按钮执行菜单命令,
由此加快操作速度。
Visual Basic能提供“编辑”、“标准”、“窗体编辑器”、
“调试”等几个工具栏,用户也可以按自己的需要“自定义”
工具栏,可以通过“视图 \工具栏”菜单项下的子菜单项选
取它们 。
Visual Basic各种工具栏中最常用的是“标准工具栏”
Visual Basic 6.0 工具箱
工具箱是 Visual Basic用于为开发提供控件的面板,通过它
可以往设计中的窗体设置各种控件。
除了 Visual Basic 内置控件之外,用户还可以通过菜单
“工程 \部件”打开“部件”对话框,从中能添加控件、设
计器或可插入对象到工具箱中,也可以引用已加载的控件工
程。
第 2章 数据类型及操作
常量
变量
基本数据类型
数组
枚举类型
运算符
标识符命名规则
自定义类型
常量
常量即是用标识符来表示数值或字符串, 由此可以提
高源代码的可读性和可维护性 。
常量有两种来源,
1,系统常量, 其由 Visual Basic或引用的对象提供 。
2,用户自定义常量, 其需要用 Const 语句来声明 。
定义常量
用户自定义常量在使用前需要定义, 由此使该 标识 符能
够被程序识别 。 其语法是,
[Public/ Private] Const 常量名 [As 类型 ] = 常量表达式
例如,
Const PI = 3.14159265358979
Const MaxPlanets As Integer = 9
使用常量
常量在被定义之后, 就可以在代码中作为数据使用 。
例如,
Const MaxPlanets As Integer = 9
Const People As Integer =19
Static SolarSystem (1 To MaxPlanets)
If WorldPop > People Then Exit Sub
变量
变量用来等待处理的临时存储数据, 可以把变量看作内存
中存放未知值的所在处 。
变量有名字和数据类型, 在使用之前需要声明 。
声明变量
声明变量就是事先将变量通知程序, 由此使变量的使
用合法 。
语法,Dim/Private/Public/ Static 变量名 [As 类型 ]
例如,
Dim I As Integer
Private YourName As String,BillsPaid As Currency
Public Test,Amount,J As Integer
变量范围
变量范围是指变量能够在多大的范围内被访问到 。 可
以根据变量范围将变量分成以下三类,
1,过程级变量 。
2,模块级变量 。
3,公用变量 。
过程级变量
过程级变量也叫 局部变量, 其在过程内声明, 并且只有
在声明它们的过程内才能被识别 。
过程级变量只能用 Dim 或 Static 关键字来声明 。
例如,
Dim intTemp As Integer
Static intPermanent As Integer
用 Dim 声明的变量是 动态变量, 而用 Static 声明的变
量则是 静态变量 。
模块级变量
模块级变量在 模块顶部的声明段 用 Private或 Dim关
键字声明, 并且所在模块的所有过程都可使用该变量 。
例如,
Private intTemp As Integer
公用变量
公用变量在 模块的声明段 使用 Public 关键字声明,
其可以被应用程序的所有过程 。
例如,
Public intTemp As Integer
基本数据类型
所有变量都具有数据类型, 以决定能够存储哪种数据 。
除变量外, 数据类型也用于其他场合 。 如在给对象属
性赋值时, 这个值就有数据类型;函数的参数也有数据
类型 。 事实上, 在 Visual Basic 中, 凡是涉及数据就与
数据类型有关, 包括:变量, 常量, 数组, 以及函数,
过程中的参数, 等等 。
数值型数据
Visual Basic 支持以下几种数值型数据,
Integer( 整型 ), Long( 长整型 ), Single( 单精度
浮点型 ), Double( 双精度浮点型 ), Currency( 货币
型 ), 另外, Byte( 字节型 ) 也可用于数值计算 。
所有数值变量都可相互赋值 。 在将浮点数赋予整数之
前, Visual Basic将浮点数的小数部分四舍五入到整数 。
String 数据类型
String型变量用于存储字符串 。
例如,
Dim S1 As String,Dim S2 As String * 10
S1 = "Database"
S2 = "Database"
上述变量中, S1是一个可变长度的 String变量, 随着对
其赋予新数据, 它的长度可增可减 。 而 S2则是具有固定
长度 String 型变量 。
Boolean 数据类型
Boolean是逻辑型变量, 其值只能是 True,False。
Boolean 的缺省值为 False。
Date 数据类型
用于存储 Date 和 Time 值 。
例如,
Dim SomeDate As Date
SomeDate = #1980-03-16#
SomeDate = #3-6-93 13:20#
Object 数据类型
Object 变量采用 32 位 ( 4 个字节 ) 地址来存储对象,
该地址可用于引用应用程序中的对象 。
例如,
Dim objDb As Object
Set objDb = OpenDatabase ("c:\Vb5\Biblio.mdb")
Variant 数据类型
Variant 型是 Visual Basic的 缺省数据类型, 能够存储所
有类型的数据 。
例如,
Dim SomeValue
SomeValue = "17"
SomeValue = SomeValue - 15
SomeValue = "U" & SomeValue
数组
数组使用相同名字引用一系列变量, 并用数字 ( 索引 )
来识别它们 。
语法,
Dim/Private/Public/ Static数组名 ( [下界 To ] 上界 )
[As 数据类型 ]
一个数组中的所有元素具有相同的数据类型 。
使用数组
例如,
Dim Sums (101 To 120) As String
Dim X(20) As Integer,Y(10,5 To 10) As Long
Sums (110) = ―ABCDEF‖
X(0)=100
Y(0,8) = 1000
枚举类型
枚举类型提供了方便的方法处理名称与常数数值的相
互关联 。
声明枚举类型的语法是,
[Public|Private] Enum 类型名
……
End Enum
枚举类型
Public Enum Days
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
End Enum
例如,可以为跟星期相关联的
一组整数常数,声明一个枚举类
型,然后在代码中使用星期的名
称而不使用其整数数值。
自定义类型
自定义数据类型是由一些基本类型的数据元素构成的
结合体 。
声明自定义类型的语法是,
[Private|Public] Type自定义类型名
元素 As 类型
[元素 As 类型 ]
……
End Type
自定义类型
例如,
Private Type StuRecord
Name As String
Birthday As Date
Others As Variant
End Type
Dim myRecord As StuRecord
myRecord.Name = "杨明 "
myRecord,Birthday = #1970-06-18#
标识符来命名
在 Visual Basic中, 常量, 变量, 数组, 过程, 函数, 类等,
都依靠标识符来命名;但命名必须遵循一定的规则 。 其具
体规则有,
( 1) 标识符由字母 ( A~Z,a~z), 数字 ( 0~9) 或下化线
( _) 组成 。
( 2) 长度不能超过 255个字符 。
( 3) 自定义的标识符不能和 Visual Basic 中的运算符, 语
句, 以及系统已有的函数, 过程名等关键字同名 。
运算符
程序中对数据的基本加工, 是依靠运算符实现的 。 在
Visual Basic中运算符的类型有,赋值运算符, 算术运算符,
比较运算符, 连接运算符, 逻辑运算符 。
赋值运算符
Visual Basic中的赋值运算符, =‖用来给变量, 数组或
对象的属性赋值, 即把运算符右边的内容赋给运算符左
边的变量 。
语法格式:变量 = 表达式
算术运算符
用来进行算术运算, 有,+( 加 ), -( 减 ), *( 乘 ),
/( 除 ), \( 整除 ), Mod ( 求模 ), ^( 乘方 ) 等运算
符 。
比较运算符
比较运算符包括,<( 小于 ), <=( 小于或等于 ), >
( 大于 ), >=( 大于或等于 ), <>( 不等于 ) 和 =( 等
于 ), 用来反映两个数值或字符串表达式之间的关系 。
关系成立, 返回 True( 真 ) ;关系不成立, 返回 False
( 假 ) ;两个表达式中若有 Null,则返回 Null。
连接运算符
&, + 运算符都能用于进行两个字符串的连接, 但 &
运算符强制两个表达式按字符串连接, 尽管被连接的表
达式不是字符串也是如此 。
而 + 运算符则较复杂, 当两个表达式都是字符串时按
字符串连接, 否则视具体情况会有不同结果 。
在进行字符串连接时一般使用 & 运算符 。
逻辑运算符
逻辑运算符包括,Not( 非 ), And( 与 ), Or( 或 ),
Xor( 异或 ), Equ( 逻辑等于 ) 和 Imp( 逻辑蕴涵 ),
用于表达两个逻辑表达式之间的关系 。
在进行逻辑运算时, 只要参入运算的表达式中有一个
为 Null,则将返回 Null。
运算符优先顺序
在表达式中, 当运算符不止一种时, 要先处理算术运
算符, 接着处理比较运算符, 然后再处理逻辑运算符 。
算术运算符优先级由高至低是,指数运算 (^),负数 (–
),乘法和除法 (*,/),整数除法 (\),求模运算 (Mod)、
加法和减法 (+,–),字符串连接 (&)。
逻辑运算符优先级由高至低是, Not,And,Or,Xor、
Eqv,Imp 。
所有比较运算符的优先顺序都相同 。
自定义数据类型
在模块的声明部分可以使用 Type语句建立自定义数据
类型 。
语法格式,
[Private|Public] Type自定义类型名
元素 As 类型

End Type
动态数组( 1)
创建动态数组的步骤,
第一步是声明动态数组, 其和声明固定大小的数组类
似, 但给数组附以一个空维数表, 例如,
Dim DynArray ()
第二步是用 ReDim 语句在程序执行过程中给数组指定
维数和分配实际的元素个数, 例如,
ReDim DynArray (4 to 12)
动态数组( 2)
值得注意的是,ReDim 语句与 Dim 语句, Static 语句
不同, ReDim 语句是一个可执行语句, 通过在应用程序
中执行 ReDim 语句, 给维数和元素个数待定的数组指定
维数和元素个数 。
在程序中还可以使用变量设置动态数组的边界 。
例如,
ReDim DynArray (X,Y)
第 3章 程序结构
程序流程控制
模块概念
过程与函数
常用内置函数
程序出错处理
过程参数传递方法
程序流程控制
程序的基本运行方式是自顶向下地顺序执行各条语句, 被
称做顺序结构 。 对于简单的问题, 依靠顺序结构就可以完成
任务;但对于稍微复杂一点的问题, 单纯依靠顺序结构也许
就不够了, 而必须在程序中加入更多的程序流程控制 。
程序流程的控制是通过一定的控制结构来实现的, 包括:
分支结构, 循环结构, 并可以进行 控制结构嵌套 。
另外, 也可以使用 Goto语句 来控制程序流程 。
分支结构
分支结构的作用是使程序依照条件而走不同的支路 。
Visual Basic 支持的分支结构有,
If...Then
If...Then...Else
Select Case
程序往往根据需要而选择合适的分支结构 。
If...Then 语句
用 If...Then 结构可以有条件地执行其结构内的一条或多条
语句 。
If 条件表达式 Then 一条语句
或,
If 条件表达式 Then
多条语句
End If
可以使用 If...Then...Else语句建立多个分支流程, 并根
据条件选择其中一个分支 。 语法结构,
If 条件 1 Then
[语句块 1]
[ElseIf 条件 2 Then
[语句块 2]],.,
Else
[语句块 n]]
End If
If...Then...Else 语句
Select Case 语句
Select Case 是用于实现多重选择, 其作用与 If...Then...Else 语句类似,
但主要用于只有一个条件, 并且条件值为离散值的分支选择 。
语法结构是,
Select Case 测试条件
[Case 表达式 1
[语句块 1]]
[Case表达式 2
[语句块 2]]
[Case Else
[语句块 n]]
End Select
循环结构
循环的作用是允许某个程序段被重复执行 。 Visual
Basic 支持的循环结构有,
Do...Loop
For...Next
For Each...Next
程序往往根据需要而选择合适的循环结构 。
Do...Loop 循环
Do...Loop 语句是通过计算条件值以决定是否继续执行, 而产生循环
效果 。 Do...Loop 语句有几种演变形式 。
形式一,
Do While 条件表达式
语句块
Loop
形式二,
Do Until 条件表达式
语句块
Loop
Do...Loop 循环
形式三,
Do
语句块
Loop While 条件表达式
形式四,
Do
语句块
Loop Until 条件表达式
For...Next 循环
在知道要执行多少次时, 则可以使用 For...Next 循环 。 与
Do 循环不同, For 循环使用一个叫做计数器的变量, 每重
复一次循环之后, 计数器变量的值就会增加或者减少 。 For
循环的语法如下,
For 计数器 = 初始值 To 终止值 [Step 增量 ]
语句块
Next [计数器 ]
其中, 参数:计数器, 初始值, 终止值和增量都必须是
数值型的变量 。
For Each...Next循环
For Each...Next 循环与 For...Next 循环类似, 但它是以对
象集合中的每一个元素作为重复依据的, 而不是按次数重
复 。 如果不知道一个集合有多少元素, For Each...Next 循
环非常有用 。
语法格式,
For Each 元素 In 集合
语句块
Next 元素
控制结构嵌套
控制结构嵌套就是把一个控制结构放入到另一个控
制结构之内, 例如:在 For...Next 循环块中放入
If...Then..,块 。
在 Visual Basic 中, 控制结构的嵌套层数没有限制 。
Goto语句
GoTo是无条件转向语句, 能够无条件地转移到过程
内指定的行 。
语法格式是,GoTo line
其中, 参数 line为行标签或行号 。
由于 GoTo语句是非结构化流程控制的遗留物, 容易
破坏程序结构, 因此要求尽量少用 。
模块概念
模块概念诞生于结构化程序设计方法 。
结构化设计的基本思路是通过将复杂问题按照功能成分
进行有效地分解, 使大问题转化为小问题, 由此使得问题
简化, 便于解决 。
模块即是被分解出来的并具有一定功能特征的程序块或
代码集 。
实际应用中, 根据对程序问题的分解程度, 模块可大可
小, 它可以被理解为所建程序系统中的一个子程序系统,
也可以是子程序系统内一个涉及多项任务的功能块, 或者
是功能程序块内的一个函数, 过程 。
模块概念
Visual Basic程序结构是以模块为单位构造的, 其基本模块以
文件形式保存, 例如, 标准模块, 窗体模块 。
标准模块, 窗体模块中包含有:过程, 函数等内容, 可以把过
程, 函数看作为单元级模块, 它们是 VB最小的模块单位 。
标准模块文件的扩展名是,BAS,它是一个包含许多过程, 函
数等单元模块的仓库 。
窗体模块的文件扩展名是,FRM,它被用来构造前端用户界
面的, 通过在窗体上放置控件, 可以获得界面的可视化设计 。
当通过 Visual Basic创建应用程序时, 首先需要建立标准模块,
窗体模块等文件级模块, 然后在其内接着建立过程, 函数等单
元级模块 。
过程与函数
在 Visual Basic 中, 过程是构建程序逻辑部件的最小单元
成分 。 使用过程编程至少有两大好处 。
其一:可以将程序划分成更小的逻辑单元, 这 有利于简化
程序 。
其二:过程可以供多处调用, 这 有利于代码重用 。 。
在 Visual Basic 中使用的过程有,
Sub 过程 ——不返回值;称做 通用过程 或 子过程 。
Function 过程 ——返回值;称做 函数过程 。
另外, 窗体, 控件等, 还可以提供 事件过程 。
通用过程
通用过程由用户根据需要自主建立, 其作用是可以把
需要完成一定功能的代码放在过程, 供诸多功能操作调
用, 由此提高代码利用率, 并使其更便于维护 。
定义通用过程的语法是,
[Private|Public][Static] Sub 过程名 (形式参数列表 )
语句块
End Sub
过程参数
过程的参数类似于变量声明, 它表明在调用过程时,
需要传递进来的数据的个数及其类型 。 例如,
Private Sub Abut(X As String,Y As Integer,Z)
语句块
End Sub
调用过程
调用过程的语法,
Call 过程名 ( 实际参数列表 )
或,
过程名 实际参数列表
其中, 实际参数列表, 是需要往被调用过程传递的具体数
据;因此, 其数据类型需要和被调用过程的形式参数保持一
致 。 实际参数可以是常量, 变量, 数组, 或复杂表达式, 但
无论是什么都必须有确定的值 。
函数过程
通过 Function 语句创建的函数过程可以返回一个值到
调用过程处 。
函数过程的语法是,
Function 函数名 (形式参数列表 ) [As 类型 ]
语句块
End Function
函数过程需要返回的值的类型由 As 子句设置 。
函数过程中返回值
在函数过程内, 可以通过以下语句将值返回 。
函数名 = 表达式
例 如,
Function Hypotenuse (A As Integer,B As Integer) As String
Hypotenuse = Sqr (A ^ 2 + B ^ 2)
End Function
调用函数过程
把函数看作一个数, 可以放在赋值号右端 。
例如,
Tx1=MyFunc(5)
用做参数 。
例如,
Tx2=MyFunc(MyFunc(5))
事件过程
窗体, 控件的某个事件的发生时, 会自动调用它的该
事件过程 。 因此, 事件过程往往是由用户事件触发 。
控件的事件过程名, 由控件的实际名字, 下划线和事
件名组合而成 。 例如, 一个名为 cmdPlay 的命令按钮被
单击时所调用的事件过程是,cmdPlay_Click。
窗体也有事件, 但其事件过程命名规则却和一般控件
有所不同 。 窗体事件名是:词汇,Form‖,下划线和事件
名的组合 。 例如, 窗体单击时所调用的事件过程是,
Form_Click 。
通用、函数过程和事件过程的关系
过程参数传递方法
1,按值传递参数
按值传递参数时, 所传递的是实际参数的值 。 这时实
际参数所在内存地址处所存储的数值传给了被调用过程
的形式参数;这时, 实参, 形参分别有不同的内存地址 。
如果在被调用过程中改变了这个参数值, 则所作变动只
会到形参, 不会影响实参 。
通过关键字 ByVal可以声明按值传递的参数 。
过程参数传递方法
2,按地址传递参数
按地址传递参数时, 所传递的是实际参数的地址 。 这
时的实参与形参具有相同的内存地址 。 因此, 当按地址
传递参数时, 对形式参数所做的改变, 也将随之反映到
实际参数上来 。
按地址传递参数在 Visual Basic 中是缺省的, 并可以
通过关键字 ByRef明确声明参数是按地址传递 。
常用内置函数
除了建立函数过程外, Visual Basic还提供了丰富的内置
函数可用于程序设计, 包括,数学函数, 字符串函数, 判
断函数, 转换函数 等方面的函数 。
数学函数
数学函数主要用来完成数学运算, 常用的有,
1,Sin(x)——返回 X的正弦值, X的单位为弧度 。
2,Cos(x)——返回 X的余弦值, X的单位为弧度 。
3,Tan(x)——返回 X的正切值, X的单位为弧度 。
4,Atan(x)——返回 X的反正切值, 返回值单位为弧度 。
5,Log(x)——返回 X的自然对数 。
6,Exp(x)——返回以 e为底的 X的指数值 。
数学函数
7,Sqr(x)——返回参数 X的平方根值 。
8,Abs(x)——返回 X的绝对值 。
9,Hex(x)——以字符串形式返回 X的十六进制值 。
10,Oct(x)——以字符串形式返回 X的八进制值 。
11,Rnd(x)——产生一个介于 0—1之间的单精度随机数 。
12,Int(x)——去掉小数部分, 返回整数 。
13,Fix(x)——去掉小数部分, 返回整数 。
字符串函数
常用的字符串函数有,
1,InStr( [起始位置 ],字符串 1,字符串 2[,比较类型 ]) ——
字符串 2在字符串 1中第一次出现的位置 。
2,InStrRev(字符串 1,字符串 2[起始位置 [,比较类型 ]]—— 与
InStr()函数相似, 只是从字符串 1的后面开始向前查找 。
3,LTrim(字符串 ) ——去掉字符串左边的空白部分 。
4,Rtrim(字符串 ) ——去掉字符串右边的空白部分 。
5,Trim(字符串 ) ——去掉字符串的左右空格 。
6,Left(字符串, 个数 ) ——取出字符串左边指定个数的字符 。
字符串函数
7,Right(字符串, 个数 ) ——取出字符串右边指定个数的字符 。
8,Mid(字符串, 起始位置 [,个数 ]) ——取字符串由起始位置开始
的指定个数的字符 。
9,Len(字符串或字符变量 ) ——计算字符长度 。
10,Ucase(字符串 ) ——将字符串的小写字母转换为大写字母 。
11,Lcase(字符串 ) ——将字符串的大写字母转换为小写字母 。
12,Space(个数 ) ——返回指定个数的空字符串 。
13,String(个数, 字符 )——返回包含重复字符的字符串 。
判断函数
1,IsArray(变量名 )——判断变量是否为数组 。
2,IsDate(表达式 )——判断表达式是否为日期 。
3,IsEmpty(变量 )——判断变量是否已被初始化 。
4,IsNumeric(表达式 )——判断表达式是否为数字型 。
5,Iff(表达式, 真部分, 假部分 )——计算真假两部分的值,
再计算表达式的值 。 若表达式为 True,返回真部分的值;
否则, 返回假部分的值 。
转换函数
转换函数用来实现不同类型数据之间的转换 。
1,Str(数值表达式 )——把数值转换为字符串 。
2,Val( 字符串 ) ——把字符串转换为数字数值, 忽略字符
串中的非数字字符 。
编程方法
Visual Basic 具有 结构化 和 面向对象 两种编程特征 。
结构化编程
结构化编程是程序设计走向成熟的一个标志 。 非结构化的高级语
言程序是把问题作为一个单一过程来处理的 。 但是, 随着问题越来
越复杂, 程序规模逐步加大, 以至求解问题的单一过程程序复杂度
超出人所能够驾束的范围 。 结构化的基本思路是将问题进行有效分
解, 使大问题转化为小问题, 而使问题简化, 便于解决 。
模块是结构化设计中的一个基本概念 。 所谓模块既是具有一定的
功能特性程序段落 。 而模块又表现出多层次特性 。
在 Visual Basic中, 标准程序文件, 窗体文件是上层模块, 而其内
的过程, 函数则是具有更细节功能特性的下层模块 。 因此, 以完成
某项功能为目标创建程序文件, 窗体文件, 并在其内建立过程, 函
数, 也就成为了在 Visual Basic环境下, 按照结构化进行程序设计的
基本方法 。
出错处理语句
1,On Error语句
格式 1,On Error GoTo 行标号
格式 2,On Error Resume Next
2,Resume语句
Resume 结束错误处理并重新执行产生错误的语句 。
Resume Next 结束错误处理并重新执行产生错误的语
句的下一条语句 。
Resume 行标号 结束错误处理并在行标号指定的位置
处恢复执行 。
第 4章 用户界面设计
窗体容器
控件元素
事件驱动
控件数组
设计菜单
创建工具栏
使用对话框
窗体
窗体是 Visual
Basic 应用程序的
基本构造模块, 是
运行应用程序时,
用户进行交互操作
的窗口或对话框 。
其固有成分是:图
标, 标题栏, 控制
菜单, 控制按钮和
工作区 ( 容器 ) 。
窗体属性( 1)
窗体的个性是通过其属性体现的, 其可以在设计时通过, 属性,
窗口设置, 也可以在运行时由代码来实现 。 窗体的常用属性是,
1,Name ——窗体的名称 。
2,Appearance ——3D 效果 。
3,BorderStyle——设置窗体边框样式 。
4,Caption ——窗体标题 。
5,ControlBox ——设置窗体, 控制菜单, 。
6,Enabled ——对用户事件是否能作出反应 。
窗体属性( 2)
7,Height( 高 ), Width( 宽 ) ——窗体大小 。
8,Left( 左 ), Top( 顶 ) ——窗体位置 。
9,HelpContextID ——帮助文件的上下文关联编号 。
10,Icon ——设置窗体图标 。
11,MDIChild ——设置窗体是否被作为 MDI 子窗体 。
12,Moveable ——设置是否能移动一个窗体 。
13,StartupPosition ——设置窗体启动位置 。
14,Visible ——设置窗体是被显示还是被隐藏 。
窗体事件
事件的作用在于能够对用户的行为作出响应 。 窗体的常
用事件有,
1,Load事件 ——发生在窗体被装载时 。
2,Activate 事件 ——当一个窗体变成活动窗体时 。
3,Deactivate 事件 ——当改变当前窗体时 。
4,Unload事件 ——当卸载窗体时 。
5,Resize 事件 —— 当调整窗体的大小时 。
窗体的方法
窗体的方法也就是窗体所具有的行动方式 。 窗体上常用
的方法有,
1,Show方法 —— 用以显示窗体 。
2,Hide方法 ——用于隐藏窗体, 但不能使其卸载 。
3,Move方法 ——用以移动窗体到一定的坐标位置 。
4,Refresh方法 ——强制全部重绘窗体及上面的控件 。
控件
控件是建立 Visual Basic应用程序的基本元素 。 应该讲, 可
视化设计就是通过控件实现的 。
能够用于 Visual Basic的控件数量众多, 一般将其分为两个
方面,内部固有控件, ActiveX 控件 。 用户可以通过, 工具
箱, 获取各种控件 。
内部控件
内部控件是包含在 Visual Basic系统内, 可以直接使用的控件;
因此具有相对较好的运行性能 。
常用的内部控件有,命令按钮, 文本框, 标签, 框架, 列表
框, 组合框, 复选框, 选项按钮, 图片框, 定时器, 数据控件
等 。
CommandButton(命令按钮)
当用户需要交互式地控制应用程序的时候, 最简便的方法就是
给用户提供一个, 命令按钮, 。
命令按钮的作用是:在用户单击它时, 将会激发它的 Click 事
件 。 因此, 将代码写入 命令按钮的 Click 事件过程, 通过用户单
击就可以执行相关操作 。
命令按钮的常用属性有,
Cancel属性 用于设置按钮为取消按钮 。
Caption属性 用于设置在命令按钮上显示的文本 。
Style属性 设置命令按钮的外观 。
TextBox (文本框)
TextBox( 文本框 ) 控件一般是用来接收或显示输入输出信息,
可用于编辑文本 。
经常使用的文本框属性有,
Text属性 用于设置显示的文本内容 。
MaxLength属性 用于设置文本框中输入字符串的长度限制 。
MultiLine属性 用于设置文本框是否以多行方式显示文本 。
PasswordChar属性 用于设置是否显示用户键入的字符 。
ScrollBars属性 用于设置文本框是否有垂直或水平滚动条 。
Label(标签)
Label ( 标签 ) 控件是专门用来显示文本的, 因此用户不能对
标签内的文本进行编辑 。
一般被用作标题名 。 通常用标签来标注本身不具有 Caption 属
性的控件 。 例如, 可用 Label 控件为文本框, 列表框, 组合框等
控件添加描述性的标签 。
标签常用的属性有,
Caption 属性 缺省属性, 设置标签中显示的文本内容 。
AutoSize属性 设置控件是否能自动调整以显示所有的内容 。
WordWrap属性 该属性设置控件是否扩大以显示标题文字 。
Frame(框架)
Frame( 框架 ) 控件是一个容器 。 框架的作用是能够把其他的
控件组织在一起形成控件组 。 这样, 当框架移动, 隐藏时, 其内
的控件组也相应移动, 隐藏 。
框架的常用属性有,
Caption属性 设置框架标题, 使用户了解框架的用途 。
Enabled属性 设置框架是否有效 。
Visible属性 设置框架是否可见 。
ListBox(列表框)( 1)
ListBox( 列表框 ) 控件用于显示项目列表 。 用户可以从列表框
中的一系列选项中选择一个或多个选项 。
List属性 设置列表框中包含的项 。
Columns属性 设置是水平滚动还是垂直滚动 。
MultiSelect属性 设置是否能够做多个选择 。
ListIndex属性 当前所选择元素的下标 。
ListCount属性 列表中全部元素的个数 。
Sorted 属性 设置按字母顺序排列项目 。
ListBox(列表框)( 2)
列表框经常用到的操作有,
1,添加项目:列表框,AddItem item[,index]
例如,List1.AddItem ―王平,
2,删除项目:列表框,RemoveItem index
例如,List1,RemoveItem 0
3,获得列表项目内容,列表框,List(index)
例如,Text1.Text = List1.List(2)
4,用 ListIndex 属性判断项目位置 。
5,用 ListCount 属性返回项目数 。
ComboBox(组合框)
ComboBox( 组合框 ) 控
件将文本框和列表框的功能
结合在一起 。 有了这个控件,
用户可通过在组合框中输入
文本来选定项目, 也可从列
表中选定项目 。
在使用方式上, 组合框具
有和列表框相似的特征 。
组合框的特点是可由 Style
属性设置三种组合样式 。
CheckBox(复选框)
CheckBox( 复选框 ) 控件通常用于提供 Yes/No 或 True/False
的逻辑选择 。
复选框通过 Value 属性指示其所处的状态 。
无论何时, 当用户单击复选框时都将触发其 Click 事件 。
OptionButton(选项按钮)
选项按钮被用来做从
多个可选项中选择一项
的操作 。
选项按钮和复选框控
件看起来相似 。 因此,
可以把复选框中的操作
方法用到选项按钮上来 。
它们之间的区别是:选
项按钮一般用于单项选
择, 而复选框则可以用
于多项选择 。
PictureBox(图片框)
图片框是用来显示图形的,
但同时它又可以作为其它控
件的容器 。 在做容器使用时,
图片框和 Frame 控件类似 。
图片框经常用到的属性是,
Picture属性 用于设置要
加载的图片 。
AutoSize属性 设置图片框
是否按图片大小自动调整 。
Timer(定时器)
定时器是一个响应时间的控件 。 它们独立于用户, 编程
后可用来在一定的时间间隔中周期性地执行某项操作 。
定时器有两个关键属性,
Enabled属性 当该属性为 True时, 定时器处于工作状态 。
而当 Enabled 被设置为 False 时, 它就会暂停操作而处于待
命状态 。 因此, 定时器的 Enabled 属性并不同于其它对象
的 Enabled 属性 。
Interval属性 定时器周期性事件之间的时间间隔 ( 毫秒
数 ) 。
Data(数据)控件
Data控件用于在程序中进行数据库连接, 并可以把数据
库中的信息通过窗体上的数据识别控件显示, 编辑和更新 。
Data控件是依靠属性来获取对数据的连接的, 在进行连
接时其关键属性有,
Connect属性 设置有待连接的数据库类型 。
DatabaseName属性 设置连接的数据库文件或目录名称 。
RecordSource属性 设置需要访问的数据库表的名称 。
ActiveX 控件
ActiveX 控件是外部控件, 因此其存在形式不同于和 Visual
Basic融合在一起的内部控件 。 它们是以扩展名为,ocx 的文件形
式存在于 Visual Basic系统之外, 只在需要时才将其添加到工具
箱中 。
ActiveX 控件是对 Visual Basic 内部控件集合的扩充 。 例如:
ADO Data控件, 它是 Data控件的功能扩充, 可使 Visual Basic具
有更强的数据访问能力 。 应该讲, Visual Basic的诸多强大功能
正是依靠 ActiveX 控件获得的 。
经常使用的 ActiveX 控件有,ADO Data, 数据组合, 数据列
表, DataGrid, 公共对话框, RichTextBox 等 。
ADO Data
在使用 ADO Data 控件之前需要在, 部件, 对话框中, 选择
,Microsoft ADO Data Control‖选项, 将其引入到工具箱 。
如同 Data 控件, ADO Data 控件也是通过属性实现了对数据源
的连接 。 其用于连接的关键属性是,
ConnectionString属性 设置数据源连接方式 。
RecordSource属性 设置记录源类型, 组成 。
DataCombo, Data List 控件
为了使用 DataCombo 和 Data List 控件, 需要在, 部件, 对话
框中, 选择, Microsoft DataList Controls‖选项 。
DataCombo 和 DataList 控件与标准列表框, 组合框控件极为
相似, 其不同在于 DataCombo, DataList 控件具有更强的数据
绑定能力 。
DataCombo, DataList 控件能实现两方面的数据绑定 。 其一
方面, 可以通过 DataSource,DataField属性绑定到其将产生影
响的目标数据的某个字段;另一方面, 还可以通过 RowSource、
ListField属性绑定到其列表所需数据的某个字段 。
DataGrid
要用 DataGrid 控件, 需要在, 部件, 对话框中, 选择
,Microsoft DataGrid Control‖到工具箱 。
DataGrid 控件是一种类似于电子数据表的绑定控件, 可
以显示一系列行和列来表示记录集合的记录和字段 。
DataGrid 控件数据访问功能极强, 但使用却非常简单 。
在设计时只需要设置了它的 DataSource 属性, 则其就会用
数据源的记录集来自动填充该表格, 和自动设置该控件的
列标头 。
CommonDialog(公共对话框)
要使用公共对话框, 需要在, 部件, 对话框中, 选择, Microsoft
CommonDialog Control‖到工具箱 。
公共对话框控件提供一组标准的操作对话框, 进行诸如打开和保存
文件, 设置打印选项, 以及选择颜色和字体等操作 。
方法
显示的对话
ShowOpen
打开
ShowSave
另存为
ShowColor
颜色
ShowFont
字体
ShowPrinter
打印
ShowHelp
调用 Windows―帮助,
RichTextBox
要使用 RichTextBox 控件, 需要在, 部件, 对话框中, 选
择, Microsoft RichTextBox Control‖到工具箱中 。
RichTextBox 控件和标准文本框类似, 标准 TextBox 控件
用到的所有属性, 事件和方法, RichTextBox 控件几乎都能
支持, 例如 MaxLength,MultiLine, ScrollBars,
SelLength,SelStart 和 SelText。
RichTextBox 控件能以 rtf 格式和普通 ASCII 文本格式这
两种形式打开和保存文件 。 可 以 使 用 控 件 的 方 法
( LoadFile 和 SaveFile) 打开和保存文件 。
控件数组
控件数组是一组具有共同名称和类型的控件集合, 其内每
个控件称做控件元素, 各元素之间通过用于索引的 Index属
性相互区别, 其最大索引值为 32767。
通过控件数组还可以使若干个相同类型的控件共享代码 。
控件数组名称为 Command1的命令按钮组的 Click事件, 其
事件过程格式是,
Private Sub Command1_Click(Index As Integer)
…………
End Sub
事件概念
在 Visual Basic中, 事件是一种可以被程序响应的变动,
并可以被理解为一个活动单位 。 例如, 用户单击了某个
按钮, 某个窗体的外观发生了变化, 被展现在窗体上的
记录集的指针发生了移动, 等等, 这些都可称之为事件 。
程序的事件触发器如同程序的感觉器官, 可以使其对外
界进行感应, 而程序的事件过程则使程序具有了对外界
的反应能力 。
事件驱动就是以事件为基本活动单位, 按照操作规程编
写事件过程, 并由此有顺序地安排程序的执行流程 。
事件类型
Visual Basic中可能发生的事件有两种类型 。
用户触发事件,这种事件相当于按了电视遥控器的
某个按钮, 当按下频道按钮时, 就会触发一个可以改
变电视频道的程序 。 其由用户控制 。 在 Visual Basic
中, 如,Click事件, KeyPress事件都属于这种类型 。
系统环境事件,系统环境事件是由 Visual Basic系
统或程序控制的事件 。 例如:窗体的 Load,Activate、
Unload,QueryUnload事件, 时钟控件的 Timer事件 。
编写事件过程
每一种控件所能
识别的事件可以从
代码窗口中的下拉
列表中看出来 。 当
从控件列表框和事
件列表框中选择确
定的对象和事件后,
Visual Basic将自
动产生该对象事件
的过程框架 。 F o r m 对象所能识别的事件
常见用户触发事件
Click,DblClick事件,当在一个对象上单击鼠标按钮或按 Enter键
时, 会发生 Click 事件;如果双击鼠标按钮则会发生 DblClick事件 。
MouseDown,MouseUP和 MouseMove事件, 都是对操作鼠标的响应 。 分
别在按下鼠标键时, 松开鼠标键时或鼠标指针移到新的位置时发生的 。
GotFocus,LostFocus事件,当对象获得焦点时产生 GotFocus 事件;
当对象失去焦点时产生 LostFocus 事件 。
KeyPress,KeyDown和 KeyUp事件, 是对用户键盘操作的响应 。 当用
户按下和松开一个 ANSI 键时会发生 KeyPress 事件 。 KeyDown 和
KeyUp 事件提供了最低级的键盘响应, 当焦点在某个对象上时, 则按下
键盘将触发该对象的 KeyDown事件, 松开按键则会触发 KeyUp事件 。
Change事件,当一个控件的内容发生改变时会被引发 。
事件的顺序( 1)
大部分的控件都能响应诸如鼠标事件, 键盘事件等 。
而这些事件往往不是单独发生的, 他们之间有许多关
联性 。
当一个动作会激发多个事件, 而在其多个事件中都
建立了代码时, 就可能造成程序的冲突 。 因此必须弄
清多个事件的激活顺序, 从而保证程序的正确执行 。
事件的顺序( 2)
当 Click事件和 DblClick事件过程中都有代码时, 只
会响应 Click事件 。
当单击鼠标时, 除了产生 Click 事件以外还可产生
MouseDown 和 MouseUp 事件 。 这三种事件发生的顺
序根据控件的不同而不同 。
按下键盘上的键时, 一般来说, 键盘事件按照以下
顺序发生,KeyDown,KeyPress,和 KeyUp。
设计菜单
菜单能够有效改善用户界面 。 它是用户界面设计中一个非
常重要的内容 。
菜单具有多种不同的形式, 其中,标准 下拉菜单, 弹出
式菜单 是最常见的菜单形式 。
标准下拉菜单
标准下拉菜单的构成
包括:菜单栏, 菜单标
题, 菜单列表, 菜单项
等成分, 它们按照层次
关系合理组织 。
标准下拉菜单的操作
特点是:当单击一个菜
单标题 ( 如, 文件, )
后, 包含菜单项目的列
表就被拉下来 。
菜单属性
Visual Basic中的菜单也是对象 。 菜单中各个成分都可以被当作
为控件对象, 并具有和命令按钮相似的属性 。 其主要属性有,
Name属性 必须设置的菜单对象标识符 。
Caption属性 菜单对象标题 。
Index属性 菜单控件数组中元素的索引标识号 。
Checked属性 设置是否在菜单项旁出现复选标记 。
Enabled属性 设置菜单对象是否有效 。
Visible属性 设置菜单对象是否可见 。
用菜单编辑器创建菜单
在 Visual Basic 环
境下可以通过菜单编
辑器建立菜单 。
菜单编辑器中的控
件列表框列出当前窗
体的所有菜单控件 。
通过单击, 插入, 按
钮可以在现有的控件
之间增加一个菜单控
件, 该控件会在菜单
控件列表框中显示 。
弹出式菜单
弹出式菜单是独立于菜单栏而显示在窗体上的浮动菜单 。
在弹出式菜单上显示的项目取决于按下鼠标右键时指针所处
的位置;因而, 弹出式菜单也被称为上下文菜单 。
弹出式菜单实质上既是下拉菜单中某个菜单标题下的菜单
项列表, 只是激活方式不同而已 。 为了显示弹出式菜单, 可
使用 PopupMenu 方法 。 该方法使用语法如下,
[object.]PopupMenu menuname [,flags [,x [,y [,boldcommand ]]]]
创建工具栏 ( 1)
一般情况下, 工具栏是用来配合菜单 。 工具栏具有
菜单所缺少的图形化的外观, 而且提供了比菜单更快
速的访问方式 。 因此, 利用工具栏与应用程序中最常
用的菜单命令建立联系, 由此可提高应用程序的用户
操作速度 。
为便于创建工具栏, Visual Basic的专业版与企业版
专门提供了用于制作工具栏的 ToolBar 控件 。
创建工具栏 ( 2)
使用 ToolBar 控件创建工具栏的步骤如下,
1,引入控件集, 在, 部件, 对话框中, 选择, Microsoft
Common Controls 6.0‖,把 ToolBar, ImageList等控件引
入到工具箱 。
2,加入控件, 从工具箱选取 ToolBar, ImageList控件到
设计窗体 。
3,向 ImageList 控件置入合适的图象 。
4,建立 ImageList与 Toolbar 之间的关联 。
5,在 Toolbar 中建立按钮 。
使用对话框
对话框分模式或无模式两种类型 。
如果一个对话框, 在可以切换到其它窗体或对话框之前
要求先单击, 确定, 或, 取消,, 则它就是模式的 。 一般
情况下, 显示重要消息的对话框总应当是模式的, 它要求
程序在继续运行之前, 必须对提供消息的对话框作出响应 。
无模式的对话框允许在对话框与其他窗体之间转移焦点
而不用关闭对话框 。 因此, 当对话框正在显示时, 可以在
当前应用程序的其他地方继续工作 。 无模式对话框用于显
示频繁使用的命令与信息 。
使用对话框函数
预 定 义的对话框是依靠函 数来实现的, 有,InputBox,
MsgBox 两个函数, 分别用来提供输入对话框和消息对话框 。
语法格式分别是,
InputBox ( 提示字符串 [,标题字符串 ] [,文本框缺省字符串 ] )
MsgBox ( 提示字符串 [,按钮数值 ] [,标题字符串 ] )
使用自定义对话框
自定义对话框就是含有控件的窗体, 这些控件包括命令按钮, 选
取按钮和文本框, 它们可以为应用程序接收信息 。
可以按照以下操作来完成自定义对话框的制作 。
1,通过设置窗体的 Caption 属性, 为对话框加上合适的标题 。
2,对话框通常不需要移动, 改变尺寸, 最大化或最小化等操作 。
对话框边框尺寸也往往是固定的 。 要达到以上效果, 可以通过设置
BorderStyle,ControlBox,MaxButton 和 MinButton 属性获得 。
3,对话框必须至少包含一个退出该对话框的命令按钮 。 通常用两
个命令按钮,这两个按钮的 Caption 属性设置, 确定, 与, 取消, 。
使用公共对话框
公共对话框控件 ( CommonDialog ) 能 够 提 供 一 组 标 准 的
Windows常规操作对话框, 例如:打开文件对话框, 保存文件对话
框, 打印设置对话框, 颜色设置对话框, 字体设置对话框 。
第 5章 文件的输入、输出与打印
使用传统方法处理文件
操作文件的语句、函数
使用控件处理文件
输出与打印
使用传统方法处理文件
传统文件处理方法是早期 BASIC的遗产 。 它通过使用
Open 语句以及其它一些相关的语句和函数来实现对文件的
操作 。
在 Visual Basic 中, 为便于对文件的访问, 将文件分成为
三种类型, 即,顺序型, 随机型, 二进制 型 。
顺序文件
顺序文件适合于只包含文本的文件, 比如:由文本编辑器所创建的文
件 。 当以顺序方式访问文件时, 首先需要以需要操作的方式通过 Open
语句将文件打开 。
顺序访问文件时可以执行的操作有,
( 1) 从文件输入字符 (Input)。
( 2) 向文件输出字符 (Output)。
( 3) 把字符加到文件 (Append)。
Open语句的语法是,
Open pathname For [Input | Output | Append] As filenumber [Len =
buffersize]
随机文件
随机型文件是由具有相同数据类型的记录组成的, 其每个记录包含一
个或多个字段 。
在应用程序打开以随机型文件以前, 应先声明所有用来处理该文件数
据所需的变量, 其包括,( 1) 用户定义类型的变量, 它对应于该文件
中的记录; ( 2) 标准类型的其它变量, 用于保存有关临时数据 。
随机文件同样通过 Open 语句打开, 其语法是,
Open pathname [For Random] As filenumber Len = reclength
当随机文件打开后, 可以使用 Get 语句把记录复制到变量;使用 Put
语句把记录添加或者替换到随机型访问打开的文件 。
二进制文件
二进制访问能提供对文件的完全控制, 因为文件中的字节可以代表任
何东西 。 另外, 当要保持文件的尺寸尽量小时, 应使用二进制型文件 。
二进制文件也使用 Open 语句打开, 其语法是,
Open pathname For Binary As filenumber
二进制文件读写使用与随机文件相同的格式 。
操作文件的语句、函数
在 Visual Basic中, 能够用来操作驱动器, 文件夹, 文件
的语句, 函数诸多, 常用的有,CurDir,ChDrive,
ChDir, MkDir, RmDir,FileCopy,Kill, SetAttr和
App.Path。 这些语句, 函数在处理文件时即简便又实用,
因此一般的对文件的操作即可以依靠它们完成 。
CurDir 函数
功能:返回所指驱动器的当前路径 。
语法,CurDir[(drive)]
说明:可选的 drive 参数是一个字符串表达式, 它指定一个存在的驱
动器 。 如果没有指定驱动器, 或 drive 是零长度字符串 (―‖),则 CurDir
会返回当前驱动器的路径 。
举例:假设 C 驱动器的当前路径为,C:\WINDOWS\SYSTEM‖; D 驱
动器的当前路径为,D:\EXCEL‖; C 为当前的驱动器 。
MyPath = CurDir ' 返回,C:\WINDOWS\SYSTEM‖。
MyPath = CurDir("C") ' 返回,C:\WINDOWS\SYSTEM‖。
MyPath = CurDir("D") ' 返回,D:\EXCEL‖。
ChDrive语句
功能:改变当前的驱动器 。
语法,ChDrive drive
说明:必要的 drive 参数是一个字符串表达式, 它指定一个存在的驱动
器 。 如果使用零长度的字符串 (""),则当前的驱动器将不会改变 。 如果
drive 参数中有多个字符, 则 ChDrive 只会使用首字母 。
举例:使, E‖成为当前驱动器 。
ChDrive "E"
ChDir 函数
功能:改变当前的目录或文件夹 。
语法,ChDir path
说明:必要的 path 参数是一个字符串表达式, 它指明哪个目录或文
件夹将成为新的缺省目录或文件夹, 其可能会包含驱动器 。 如果没有指
定驱动器, 则 ChDir 在当前的驱动器上改变缺省目录或文件夹 。
另外, ChDir 语句只能改变缺省目录位置, 但不会改变缺省驱动器位
置 。 当需要改变缺省驱动器时必须使用 ChDrive语句 。
例如,
ChDir "D:\WINDOWS\SYSTEM"
MkDir 语句
功能:创建一个新的目录或文件夹 。
语法,MkDir path
说明:必要的 path 参数是用来指定所要创建的目录或文件夹的字符
串表达式, 其可以包含驱动器 。 如果没有指定驱动器, 则 MkDir 会在
当前驱动器上创建新的目录或文件夹 。
举例:在当前目录下建立新目录 MYDIR。
MkDir "MYDIR"
RmDir 语句
功能:删除一个存在的目录或文件夹 。
语法,RmDir path
说明:必要的 path 参数是一个字符串表达式, 用来指定要删除的目
录或文件夹, 其可以包含驱动器 。 如果没有指定驱动器, 则 RmDir 会
在当前驱动器上删除目录或文件夹 。
另外, 如果想要使用 RmDir 来删除一个含有文件的目录或文件夹,
则会发生错误 。 在试图删除目录或文件夹之前, 先使用 Kill 语句删除所
有文件 。
举例:假设当前目录下的 MYDIR目录是空目录, 将它删除 。
RmDir "MYDIR"
FileCopy语句
功能:复制一个没有被打开的文件 。。
语法,FileCopy source,destination
说明:它的两个参数都是必要的, 其中, source 参数用来表示要被复
制的文件名, 其可以包含目录或文件夹, 以及驱动器; destination参数
用来指定要复制的目地文件名, 可以包含目录或文件夹, 以及驱动器 。
举例,
SourceFile = "SRCFILE" ' 指定源文件名 。
DestinationFile = "DESTFILE" ' 指定目的文件名 。
FileCopy SourceFile,DestinationFile
Kill 语句
功能:从磁盘中删除文件 。
语法,Kill pathname
说明:必要的 pathname 参数是用来指定一个文件名的字符串表达式,
可以包含目录或文件夹, 以及驱动器 。
另外, 在 Microsoft Windows 中, Kill 支持多字符 (*) 和单字符 (?) 的
统配符来指定多重文件 。
举例,
Kill "TestFile" ' 删除当前目录下 TestFile文件 。
Kill "*.TXT" ' 删除当前目录下所有的 *.TXT 文件 。
SetAttr 语句
功能:为一个没有打开的文件做属性设置 。
语法,SetAttr pathname,attributes
说明:它的两个参数都是必要的, 其中, pathname 参数是用来指定
一个文件名的字符串表达式, 并可以包含目录或文件夹, 以及驱动器;
而 attributes参数是数值表达式, 其总和用来表示文件的属性 。
举例,
SetAttr"TESTFILE",vbHidden ' 设置隐含属性 。
SetAttr"TESTFILE",vbHidden + vbReadOnly ' 设置隐含并只读 。
使用 App 对象的 Path属性
App 对象是通过关键字 App 访问的全局对象, 因此它不需要事先声
明即可使用 。
在应用程序中, 特别是在程序启动过程中, 经常需要取得当前执行程
序的路径;其价值是可以从当前执行程序的路径位置而搜索到程序所需
要的其它数据的存档位置, 如:初始数据文件, 帮助文件等等 。 而以上
需要即可以通过 App 对象的 Path属性获得 。
Path是只读属性, 其使用方法如下,
Dim MyPath
MyPath = App.Path
使用控件处理文件
能够用于文件搜索的内部控件是文件系统控件, 其含有:
DriveListBox,DirListBox, FileListBox三个控件 。 当程序
中需要一个专用的操作文件对话框时, 即可以采用文件系
统控件组建 。
公共对话框 ( CommonDialog) 也是一个可以用于文件搜
索的控件, 通过其 ShowOpen方法, ShowSave方法, 可以
获得一个标准的打开或保存对话框 。
RichTextBox控件是一个被加强的文本框控件, 具有文本
格式功能, 并能通过 LoadFile 方法, SaveFile 方法实现对
文档文件加载和保存 。
输出与打印
程序对输入数据经过处理后得到的结果除了存文件之外,
另外的输出方法就是显示或打印 。
为了在窗体或图片框上显示文本, 需要使用到它们的
Print 方法 。
通过 PrintForm 方法能将指定的窗体传送到打印机输出 。
Printer 对象是一个与设备无关的图片空间, 支持用 Print、
PSet,Line,PaintPicture 和 Circle 方法来创建文本和图形 。
但只有在窗体或图片框中, 才能将这些方法用于 Printer 对
象 。
第 6章 数据库应用
数据库概述
使用控件访问数据库
ADO对象
数据报表
数据库概述
数据库就是信息的集合, 这种集合与特定问题或目标相联
系 。 从信息存储来看, 数据库仍然是一种依赖于存储媒介的
具有特殊形态的文件 。 数据库与一般数据文件不同之处体现
在,1,通过一定的数据存储结构, 例如关系型数据库中的
表结构, 能够更有效地组织数据 。 2,通过数据约束机制,
例如创建字段级规则和记录级规则, 设置默认字段值和触发
器等, 而使数据更加便于操作, 维护 。
关系数据库
在数据库的发展过程中诞生了层次型, 网状型, 关系型三
种类型的数据库 。 其中, 关系型数据库具有更完善的内在机
制, 它建立在严密的关系代数基础之上, 并可以通过 SQL标
准查询语言 实现对数据的操作 。 因此, 自上一世纪八十年代
以来, 关系型数据库成为了主流数据库被广泛应用 。 包括大
型数据库, 如,Oracle,SQL Server;桌面型数据库, 如,
Access,FoxPro。
在 Visual Basic 环境下, Access数据库是缺省数据库,
Access所采用的 Jet数据库引擎被得到最有效的利用 。
Microsoft Access数据库
在 Visual Basic
环境下, Access
数据库是缺省数
据库, Access所
采用的 Jet 数据
库引擎被得到最
有效的利用 。
二维关系表
表是关系型数据库的基本结构 。 一个二维关系表以记录
( 行 ) 和字段 ( 列 ) 的形式存储数据 。
字段、记录
数据表的基本成分是字段, 记录 。 其中, 数据表结构通
过字段确定, 它在表中体现为列 。 数据以记录为单位存储,
它在表中体现为行, 一个表可以包含大量的记录, 一个记
录由多个字段组成 。
在建立字段时需要设置字段的名称, 数据类型, 有效性
规则, 索引等等 。
主键、索引
在关系型数据库中, 为使每条记录具有唯一性, 由此减少
表中数据冗余, 提供了对字段设置主键的功能 。 当一个字段
或一组字段被设为主键后, 它就成为了表中所保存的每一条
记录的唯一标识, 在主键字段中不能出现重复值或 Null。
为提高对表中数据的查询速度, 可以在字段中建立索引 。
尽管索引可以提高查询速度, 但索引本身需要存储空间, 并
且有可能降低更新速度, 和使得数据库的维护量加大 。
数据关联
在一个数据库中, 各个不同表中的数据往往有关系, 数据之间的关系可以通过
建立表之间的关联实现 。
, 一对一, 关联只能建立在两个表的主键之间 。
, 一对多, 关联则是建立在一个表的主键和另一个表的普通字段之间 。
通过两个, 一对多, 关联还可以建立表和表之间的, 多对多, 关联 。
数据关联操作
建立表之间关联的作
用是能够提供参照完整
性约束 。 由此保证在相
关表的记录间关系是有
效的, 用户不会任意删
除或更改相关的数据 。
表之间关联通过建立
起级联更新, 删除操作
而起作用 。 如:级联更
新相关字段, 级联删除
相关记录 。
SQL结构化查询 语言
SQL是 Structured Query Language的简称 。 它是关系型
数据库的标准语言 。 因此, 使用 SQL语言能够实现对各种
类型的关系型数据库, 如,Oracle,SQL Server,Access、
FoxPro等进行数据操作 。
SQL虽然名称上叫做查询语言, 可实质上它能够实现对
数据库中各元素的定义, 更新, 查询和权限控制等多方面
操作 。 如,查询记录, 添加记录, 更新记录, 删除记录,
进行数据统计 。
SELECT 语句
SELECT 语句用来实现对表、视图中数据的查询,并以记录形式返回查
询结果。其语法格式是,
SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [,[table.]field2 [AS alias2] [,...]]}
FROM tableexpression [,...]
[WHERE...]
]
[GROUP BY...]
]
[HAVING...]
]
[ORDER BY...]
]
[WITH OWNERACCESS OPTION]
INSERT INTO 语句
INSERT INTO 语句用来添加一个或多个记录至一个表。
其语法是,
1、多重记录追加查询,
INSERT INTO target [(field1[,field2[,...]])]
SELECT field1[,field2[,...]]
FROM tableexpression
2、单一记录追加查询,
INSERT INTO target [(field1[,field2[,...]])]
VALUES (value1[,value2[,...]]
UPDATE 语句
UPDATE 语句用于更新指定表中的字段值。其语法是,
UPDATE table
SET newvalue
WHERE criteria;
DELETE 语句
DELETE 语句用于删除 FROM 所指表中, 并符合
WHERE 子句中条件的记录 。 其语法是,
DELETE
FROM table
WHERE criteria
统计中的合计函数
合计函数可以用来算各种统计值,常用的合计函数有,
Avg 函数 计算包含在特定查询字段中的一组数值的算术
平均值。
Sum 函数 返回包含在指定查询字段中一组值的总计。
Min 和 Max 函数 在查询时从一组指定字段的值中返回最
小或最大值。
Count 函数 计算从查询返回的记录数。
使用控件访问数据库
在访问数据库时可能用到的控件有数据库连接控件,Data
控件, ADO Data 控件 ; 数据库绑定控件,标签, 列表框,
组合框, 复选框, 选项按钮, 图片框, 图象, OLE控件, 和
DataCombo控件, DataList控件, DataGrid 控件等等 。 其中,
连接控件用来获得数据源, 绑定控件用来将数据显示或编辑 。
使用 Data控件
Data控件是 Visual Basic最早用来连接数据库的控件 。 它是内部控件,
并通过使用 Microsoft 的 Jet 数据库引擎来实现数据访问, 因此 Data控件
和 Microsoft Access 使用相同的数据库引擎 。
Data控件依靠属性实现对数据库的连接 。 其主要属性有,
Connect属性 用来确定有待连接的数据库类型;
DatabaseName属性 确定需要连接的数据库;
RecordSource属性 确定需要访问的数据库表的名称 。
RecordsetType属性 确定 Recordset( 记录集 ) 对象的类型 。
Exclusive属性 确定是否按照独享方式打开数据库 。
Data控件上的对象
Data控件是依靠数据对象来获取对数据访问的, 与其相
关的数据对象有,
Database对象 Database对象是物理数据库的逻辑表示 。
在 Data控件中, 其 DatabaseName属性用来连接到一个具
体的数据库, 并通过它的 Database属性 ( 对象 ) 表现出来 。
Recordset对象 Recordset对象代表一组与数据库相关的
逻辑记录集合 。 它所对应的数据来源可以是数据表, 也可
以是和 SQL语言中查询语句 ( SELECT) 有关的查询结果 。
Data控件是通过 RecordSource属性获得 Recordset对象的,
并通过 Data控件的 Recordset属性表现 。
Data控件上对记录的操作
对记录的操作能够主要通过 Recordset对象的方法实现 。 其常用方法
有,
AddNew方法 加入一条新记录到记录集内存缓冲区 。 在该方法之后,
通过 Update方法可以将该记录由缓冲区存储到数据库文件中 。
Edit方法 允许对当前记录进行修改 。 在该方法之后, 通过 Update方
法可以将当前记录的修改由缓冲区存储到数据库文件中 。
Delete方法 用于删除当前记录 。 在该方法之后, 通过 MoveNext或
MovePrevious方法可以将被删除的从被绑定的数据控件中清除 。
Update方法 把内存缓冲区中的内容写进数据库文件, 保存对数据库
所做的改动 。
ADO Data控件
ADO Data 是 ActiveX外部控件, 它的用途以及外形都和 Data 控件相似,
但它是通过 Microsoft ActiveX 数据对象 (ADO) 来建立对数据源的连接的,
凡是符合 OLEDB 规范的数据源其都能连接 。 因此, ADO Data 控件比
较起 Data 控件具有更宽广的适应性 。
ADO Data 控件通过属性实现了对数据源的连接 。 当创建连接时, 可
以使用下列三种源之一:一个连接字符串, 一个 OLE DB 文件 (.MDL),
或一个 ODBC 数据源名称 (DSN)。 其用于数据连接的属性主要有,
ConnectionString属性 连接字符串, 可以包含连接所需所有设置值 。
UserName属性 用户名称 。
Password属性 用户口令 。
数据库绑定控件
数据库绑定控件包括:标签, 列表框, 组合框, 复选框, 选项按钮,
图片框, 图象, OLE控件, 和 DataCombo 控件, DataList控件,
DataGrid 控件等等 。 数据绑定控件的作用是能够把数据连接控件获取的
数据记录集无须编写程序就可以显示, 编辑 。 可以讲, 数据连接控件的
价值是通过数据绑定控件才被展现出来 。
数据库绑定控件对数据的绑定是通过它的 DataSource,DataField属性
得到的 。 其中, DataSource属性用来建立数据绑定控件 ( 如:文本框 )
和数据连接控件 ( 如,Data控件, ADO Data 控件 ) 之间的联系 。
DataField属性用来取得数据连接控件中的记录集中的某个字段 。
ADO对象( 1)
ActiveX 数据对象 (ADO)是对低层数据接口 OLE DB的功能
封装, 它使 OLE DB接口简化, 并为在 Visual Basic中访问
OLE DB提供了便利 。
当通过 ADO对象访问数据时, 可以使用 ADO Data控件 。
但是, ADO Data控件只能提供部分 ADO对象功能 。
ADO对象模型是对 ADO对象集合的完整概括, 它更加灵
活, 能够更有效地发挥出 ADO对象的功能特性 。 为了使用
ADO 对象模型, 需要先通过, 引用对话框, 将 Microsoft
ActiveX Data Objects 2.0 Library引入当前工程 。
ADO对象( 2)
ADO 对象模型是通过它所定义的编程对象实现对 OLE DB
的功能支持的, 下图所示为它所含对象 。
ADO对象( 3)
在通过 ADO对象访问, 编辑和更新数据源时, 其一系列的动作必须按
照一定的顺序进行, 往往需要进行以下活动,
创建 Connection对象, 连接数据源 。
创建 Command对象, 用于进行 SQL 操作 。
执行命令 ( Command,Connection 或 Recordset) 。
如果命令结果以记录集返回, 记录集将存储在 Recordset对象中 。
可通过 Recordset对象对记录集进行排序, 筛选和定位数据 。
可通过 Recordset对象编辑数据, 可以添加, 删除或更改数据 。
使用 Recordset对象中的变更对数据源进行更新 。
数据报表( 1)
Microsoft数据报表设计器 ( Microsoft Data Report designer) 是一个多
功能的报表生成器, 以创建联合分层结构报表的能力为特色 。
数据报表设计器由以下对象组成,
DataReport 对象 该对象如同 Visual Basic 的窗体, 它同时具有一个可
视的设计环境和一个代码模块 。
Section 对象 数据报表设计器由几个区域组成, 其中的每一个区域通过
Sections 集合中的一个 Section 对象表示 。
Data Report 控件 专门用在数据报表设计器上的特殊控件 。 这些控件可
以在 Visual Basic Toolbox中找到, 但是它们被放置在一个独立的名为, 数
据报表, 的选项卡上 。
数据报表( 2)
通过菜单命令
“工程 \添加
Data Report‖建
立 DataReport对
象,可以打开数
据报表设计器,
它由报表标头
、页标头,分
组标头 /注脚,
细节,页注脚
和报表注脚等区
域组成。
第 7章 图形、多媒体及网络的
编程应用
坐标系统
绘图方法
图形载入与保存
多媒体应用
网络应用
坐标系统
当通过 Visual Basic作图
时, 其往往是通过一定的
能够容纳图形的容器, 如:
窗体, 图片框;并依靠在
这些容器上的坐标系统,
才能表现出来 。
坐标系统是一个二维网
格, 可用来定义屏幕上,
窗体中或其它容器中的位
置 。
绘图方法
在 Visual Basic中可以采用两种方法构造图形 。
其一, 使用控件 。 可以使用的控件有:线形控件 ( Line),
形状控件 ( Shape) 。
其二, 使用作图方法 。 可以使用的方法有,Cls,Pset、
Point,Line,Circle。
当需要设置图形按钮时, 图形控件极有用处 。 但在绘制图
形时, 图形方法就具有了更大的灵活性 。
图形的载入与保存
通过 LoadPicture函数, 可以将 BMP,JPEG,GIF等图形文
件, 以及图标文件 (.ico),光标文件 (.cur),加载到窗体,
PictureBox控件, Image控件的 Picture属性上 。
LoadPicture函数的语法格式是,
LoadPicture([filename],[size],[colordepth],[x,y])
通过 SavePicture语句, 可以将窗体, PictureBox控件,
Image控件上的图片, 按照 BMP图形文件格式进行保存 。
SavePicture语句语法格式是,
SavePicture picture,filename
多媒体应用
( Multimedia控件 )
Multimedia 控件是一个专门管理多媒体控制接口 (MCI—
—Media Control Interface)设备的 ActiveX 控件, 其能够管
理的设备有:声卡, MIDI 发生器, CD-ROM 驱动器, 音
频播放器, 视盘播放器和视频磁带录放器 。 通过, 部件, 对
话框选择, Microsoft Multimedia Control 6.0‖选项, 将其引
入到工具箱后, 就可以将它加入到设计窗体内使用 。
Multimedia 控件的特点
Multimedia 控件具有一组能够执行 MCI 命令的下压式按
钮 。 这些命令与通常的 CD 机或录像机上的命令 ( 功能 ) 很
相象 。 按钮的作用从左到右依次是,Prev( 前一个 ),
Next( 下一个 ), Play( 播放 ), Pause( 暂停 ), Back
( 向后步进 ), Step( 向前步进 ), Stop( 停止 ),
Record( 录制 ) 和 Eject( 弹出 ) 。
使用 Multimedia 控件
在使用 Multimedia 控件时, 往往涉及以下操作内容,
1,打开 MCI 设备
2,关闭 MIC设备
3,使用 Error 和 ErrorMessage 属性
Internet Transfer 控件
Internet Transfer 控件是 Internet传输控件, 其能够使用
HTTP与 FTP协议进行数据传输 。 并可以通过 OpenURL或
Execute方法, 连接到使用这两个协议的站点进行文件检索 。
例如, 使用 Internet Transfer 控件进行文件下载 。
使用 Internet Transfer 控件的基本操作有,
1,通过设置 AccessType属性, 可以获得对代理服务器的
设置 。
2,调用 OpenURL 方法以同步方式传输数据 。
3,调用 Execute方法以异步方式传输数据 。
WinSock控件
WinSock控件被用来建立跟远程计算机的连接, 并通过用
户数据文报协议 (UDP)或者传输控制协议 (TCP)进行数据交
换 。 可以使用 WinSock控件创建,聊天,应用程序 。
在使用 WinSock 控件时, 首先需要设置其属性 。 设置
Protocol 属性, 以确定通讯协议 。 设置 RemoteHost属性, 以
确定需要连接的远程计算机 。 设置 LocalPort和 RemotePort
属性, 以确定本地计算机和远程计算机的端口 。
第 8章 制作 ActiveX控件
ActiveX 部件特点
ActiveX 控件
ActiveX 部件特点
Visual Basic功能之强大很大程度上借助于 ActiveX 部件,
包括:扩展名为,EXE的进程外部件, 扩展名为,DLL的进程
内部件, 扩展名为,OCX的主要被用来创建界面的 ActiveX
控件;它们是一些对象的组合, 并且所提供的对象遵循着
ActiveX 规范 。
在 Visual Basic环境中能够开发 ActiveX 控件, ActiveX
DLL, ActiveX EXE和 ActiveX 文档等类型的 ActiveX部件 。
实际上, 使用 Visual Basic 可以创建的部件包括从代码库一
直到可以自动执行的应用程序 。
ActiveX 控件
ActiveX 控件是一种具有可视设计外观, 并且能够作为可插件被引入应
用程序中去的 ActiveX部件, 例如,ADO Data控件就是其中之一 。
当创建一个新的 ActiveX控件时一般应遵循的步骤是,
1,确定控件将要提供的功能 。
2,设计控件的外观 。
3,设计控件的接口, 即将显露的属性, 方法和事件 。
4,把控件和或代码添加到 UserControl 对象中来实现控件的外观 。
5,实现控件的接口和功能 。
6,编译控件部件 (,ocx 文件 ) 并用各种可能的应用程序对它进行测试 。
课件说明
本课件 21世纪高等学校电子信息类专业规划
教材, Visual Basic 程序设计基础教程, 的电
子教学配套资料。可用于教师开展本课程的
多媒体教学。
本课件采用开放式结构,教师可以根据自
己的实际教学需要进行补充或改动。