万博科技职业学院
Visual Basic 程序设计
第一章概论
第二章可视化程序设计
主要内容
1.Visual Basic 的功能特点
2.VB的集成开发环境
3.VB编程步骤与第一个 VB程序
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
主要内容
1,Visual Basic 的功能特点
2,VB的集成开发环境
3,程序设计步骤
4,窗体和标准控件
5,第一个编程实例
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
理解 Visual Basic
? Visual(可视化):采用图形用户界面 (GUI)
的程序设计方法。简单直观。
? Basic:历史悠久,易学易用,功能强大的
计算机程序设计语言。
o BASIC- Beginner?s All-purpose Symbolic
Instruction Code(初学者通用符号指令代码)
o GUI- Graphic User Interface(图形用户界面)
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
Visual Basic 编程特点
? 可视化集成开发环境( IDE)
? 面向对象的编程方法( OOP)
? 事件驱动
? 结构化程序设计语言
? 充分利用 Windows资源
– 提供动态数据交换技术( DDE)
– OLE-对象链接与嵌入
– 利用动态链接库( DLL)和应用程序接口( API)
调用其他语言编写的代码模块
? 开放的数据库功能和网络支持
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
VB集成开发环境( IDE)
窗体设计窗口
代码设计窗口 属性窗口
工程资源管理器
布局窗口
工具箱
立即窗口
菜单栏
工具栏
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
集成开发环境
组成,
? 标题栏和菜单栏
? 工具栏和数字显示区
? 标准工具箱
? 工程资源管理器窗口
? 属性窗口
? 窗体设计器
? 代码窗口
? 布局窗口
? 立即窗口
功能,
?设计
?可视化界面设计
?程序设计
?编辑
?调试
?编译
?运行
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
编程初步
上下文相关帮助
?选择关键字
?按 <F1>键
将显示相关帮助
主题
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
程序设计步骤
?分析问题和需求
?创建用户界面
?设置对象属性
?编写代码
?调试程序,修改错误
?保存工程
?创建可执行文件
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
事件驱动
Click 单击
DblClick 双击
Change 内容改变
MouseDown 按下鼠标键
MouseUp 放开鼠标键
GotFocus 得到焦点
LostFocus 失去焦点
KeyPress 按键盘键
KeyUp 放开键盘键
keyDown 按下键盘键
用户触发事件之例,
Load 装入
Unload 卸载
Activate 激活
Timer 设定时间到
事件驱动,程序的执行
由发生的事件决定。
程序响应所发生的事件,
执行相应的事件过程然
后等待下一个事件。
系统环境事件之例,
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
窗体
窗体是应用程序运行时与用户进行交互
操作的窗口或对话框 。 其固有成分有,
图标
标题栏
控制菜单
工作区
控制按钮
属性
事件
方法
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
窗体属性
窗体的属性可以在设计时通过, 属性, 窗口设置,
也可以在运行时由代码来实现 。 窗体的常用属性是,
1,BorderStyle—— 设置窗体边框样式
2,Caption —— 窗体标题
3,ControlBox —— 设置窗体, 控制菜单,
4,Enabled —— 对用户事件是否能作出反应
5,Height( 高 ), Width( 宽 ) —— 窗体大小 (单位?)
6,Left( 左 ), Top( 顶 ) —— 窗体位置
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
窗体属性(续)
1,Icon —— 窗体图标
2,Moveable —— 窗体是否能移动
3,BackColor,ForeColor —— 背景色, 前景色 (颜色 )
4,Picture —— 窗体中显示的图片文件名
5,AutoRedraw —— 显示窗体时自动重画窗体图文
6,Visible —— 窗体是否显示
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
窗体事件
事件一般由用户操作引发 。 窗体的常用事件有,
1,Load —— 发生在窗体被装载时 。
2,Activate —— 当一个窗体变成活动窗体时 。
3,Deactivate —— 当改变当前窗体时 。
4,QueryUnload, Unload —— 当卸载窗体时 。
5,Resize —— 当调整窗体大小或首次显示窗体时
6,Click,DblClick —— 单击, 双击窗体时
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
窗体的方法
? 方法 是对象内置的功能,可供程序直接调用的
子程序或函数
窗体上常用的方法有,
1,Show —— 显示窗体
2,Hide —— 隐藏窗体, 但不能使其卸载
3,Move —— 用以移动窗体到一定的坐标位置
4,Print —— 在窗体内打印输出
5,Pset,Line,Circle —— 画点, 画线, 画园等
6,Cls —— 清除窗体内输出的图, 文
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
控件
控件是建立 Visual Basic应用程序的基本元素 。
能够用于 VB的控件数量众多, 一般将其分为两个方面:
内部固有控件, ActiveX 控件 。 用户可以通过, 工具箱, 获
取各种控件 。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
标准控件
中文名 类名 (Class)
标签 label
文本框 Textbox
命令按钮 CommandButton
单选按钮 OptionButton
复选框 CheckBox
框架 Frame
水平滚动条
垂直滚动条
HScrollBar
VScrollBar
下拉框 (组合框 ) ComboBox
列表框 ListBox
定时器 Timer
工具箱
内部控件是 VB内可直接使用的最常用的控件 。


Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
标准控件 (续 )
中文名 类名
图片框 PictureBox
图象 Image
驱动器列表框 DriveListBox
目录列表框 DirListBox
文件列表框 FileListBox
形状 Shape
直线 Line
数据 Data
OLE容器 OLE
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
CommandButton(命令按钮)
常用属性,
?Caption —— 在命令按钮上显示的文本
在其中可用 &<字母 >设置快捷键
?Style —— 设置命令按钮的外观,
0-标准; 1-图象
?Cancel —— 设置按钮为取消按钮 ( ESC)
常用事件,
?Click —— 单击
万博科技职业学院
Visual Basic 程序设计
第 3章 BASIC 语言基

Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
主要内容
? 基本数据类型:数值型、字符型、日期型、
布尔型、变体型
? 常量与变量及其定义
? 不同数据类型的运算
? 表达式
? 内置函数
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
基本数据类型
类型 名称,声明符 字节数 范围
整型 Integer,% 2 -32768 (-215) ~ 32767
长整型 Long,& 4 -231 ~ 231-1
单精度 Single,! 4 尾数 24位,指数 8位 *
双精度 Double,# 8 尾数 53位,指数 11位 *
字符型 String,$ 定长用 String*n (n-长度 )
货币型 Currency,@ 8 在 ± 2 63× 10 - 4 之间
* 均指二进制的位,尾数和指数都含 1 位符号位。
* 尾数在(- 1,1)之间。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
基本数据类型 (续 )
类型 声明类型 字节数 范围
布尔型 Boolean 2 True (-1) 或 False (0)
日期型 Date 8 公元 100.1.1 ~ 9999.12.31
字节型 Byte 1 0 ~ 255
定长
字符型 String * n 2 * n
注:赋值时不足时用空格
补,超长时截尾
变体型 Variant (可省 ) 任何类型数据
对象型 Object 4 任何对象引用 (指针 )
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
常量
直接常量
? 数值常量,如, 3.12,-5,1.3E-8
? 日期时间常量,如,#10/12/2002 10:30#
? 字符串常量,如,"I'm fine","99.9"
? 逻辑常量,True,False
? 用符号表示的 VB常量,如,
vbCrLf 回车换行 chr(13) & chr(10)
vbYesNo =4,在消息框 msgbox中显
示 Yes 和 No按钮
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
常量
符号常量分 VB已定义的符号常量和自定义
符号常量。
? VB常量,如,
vbCrLf 回车换行 chr(13) & chr(10)
vbYesNo =4,在消息框 msgbox中显示
Yes 和 No按钮
? 好处:便于记忆,便于程序阅读
? 查阅定义:在 对象管理器 中
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
自定义符号常量-声明
声明常量的好处,
? 便于识别(使用有
意义的符号,如 PI)
? 便于修改(只需修
改定义部分)
? 减少差错:避免输
入错误,便于查错
例,
Const PI=3.1415926
Const VB as string _
=,Visual Basic,
Public Const conMax=99
Const PI2=PI*2
Const T911= #2001-9-
11#
[Public|Private] Const [as <类型 >] <常量名 >=<常量表达式 >
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
枚举类型-定义符号常量集合
? 语法
[Public|Private] Enum 类型名
<成员名 > [=常量表达式 ]
<成员名 > [=常量表达式 ]
……
End Enum
? 如果没有常量表达式,则第一
个成员等于 0,后一个成员等
于前一个成员加 1。
? 常量表达式为 Long类型
? 类型定义后,可以用在变量声
明语句中
? 例如,
Enum Season
Spring =1
Summer
Fall
Winter
End Enum
结果,Season是个符号常量集合,
其中包含 4个符号常量:
Spring= 1,Summer= 2
Fall= 3,Winter= 4
使用,Dim jd As Season
在对象
浏览器中
观察自定
义的类型
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
变量及其命名规则
? 变量分 内存变量 和 属性变量 。
? 属性变量即对象的属性,其名称与类型是确定不
变的,例如 Caption属性,其变量名是
对象名,Caption,而其类型为 String。
? 一般变量即指内存变量,其名称与类型是由程序
员定义的。
? 变量名不能以数字开始,不能用 VB的保留字
? 变量名只能由字母、数字和下划线组成
? 变量名可以使用中文,但较少见。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
变量的声明
? 变量的声明语句,
Dim|Public|Static <变量名 > [as <类型 >]
? 显式声明语句,Option Explicit
该语句强制变量必须先声明才能使用
? 例, Dim x As Double
Dim i As Integer,j As Single,s As String
或, Dim i%,j!,s$
注意:如声明 Dim x,y As Single
则 x为 Variant型(变体型),y才是 Single

Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
表达式
? 常量, 变量, 函数 用 运算符 连接而成
? 单独一个常量,或变量,或函数都可以看
作是一个表达式
? 运算结果称为表达式的 值,该值的数据类
型即为表达式的 类型 。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
运算符
? 数值运算,+ - * / (加减乘除)
\ (整除 ),如, 10\3= 3
mod (求余数 ),如, 12 mod 5 = 2
^ (幂 ),如, 3^4 =81 ( 34)
? 比较运算, < <= = >= >
<>
? 连接运算, & (或 +)
? 逻辑运算, not and or xor equ imp
? VB内置函数
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
数值运算
? 算术运算,+ - * / (加减乘除)
? 整除,\ 如 11\3,结果为 3
求余数,mod 如 14 mod 5,结果为 4
幂运算,^ 如 3^4 即 34,结果为
81
注意,整除( \)和模运算符( mod)两侧 遇
小数点时,先四舍五入,再运算。如,
10.5\3.5=11\4=2
7.2 mod 3.5=7 mod 4=3
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
数值运算的精度
? 数值表达式的运算结果一般为 Double或
Long类型。但如果含 Single类型的变量或常
量,则可能降低其运算精度。
? 数值常量也可以使用类型后缀 (%,&,!,# ),
从而改变其参加运算的表达式的运算精度。
例如,
? 1/3 输出,333333333333333
1/3! 输出,3333333
其中 3!表示单精度常数 3,不是 3的阶乘!
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
日期型数据的运算
? 日期型数据可以加减天数(可含小数),结果仍
为日期型。例如,#2005-9-25# - 10
? 两个日期型数据之差为两个日期之间相隔的天数。
例如,#2005-9-25# - #1986-5-20#
? 日期型数据可以看作一个数值型数据,即该日期
与 #1899-12-30 00:00# 之间相差的天数,其
中的整数部分为日期,小数部分为时间。该数值
称为日期的, 系列数, 。
例如,用单精度数显示 #1900-1-1 6:00#,
Csng(#1900-1-1 6:00#) 输出, 2.25
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
比较运算
? 运算, < <= = >= > <>
– 比较结果为 True 或 False
– 双字符运算符( <=,>= 和 <> )两字符之间不能
有空格,也不能写成 =<,=>,> <
– 字符型数据按其内码( Unicode)大小比较
Unicode,2字节无符号整数,国际通用码。
– ASCII码表中的符号,码值不变,位长 16。
? 注意:对浮点(单精度、双精度)数不要进行 =
(等于)比较,如
1/3 显示,333333333333333
1/3=,333333333333333 显示 False
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
字符串的连接运算
字符串的 连接 运算,& (推荐使用)
或,+ (尽量不用)
例如,
1., 安徽, &,合肥, =, 安徽合肥,
2,在文本框 Text1和 Text2中分别输入
3 和 4,则表达式
Text1.Text+Text2.Text
的值为, 34”而不是 7。这是因为 Text属性
的类型是字符型,而不是数值型。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
逻辑运算
A B Not A A And B A Or B A Xor B A Equ B A Imp B
F F T F F F T T
F T T F T T F T
T F F F T T F F
T T F T T F T T
注,1,A,B均为逻辑表达式。如果是数值,则其值
非零时看作 True,值为零时看作 False。
例如:表达式 4>3 And 5>4 的值为 True
2,F - False,T - True
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
按位运算
A B not A A and B A or B A xor B
0 0 1 0 0 0
0 1 1 0 1 1
1 0 0 0 1 1
1 1 0 1 1 0
例,A 101
0 not A 0101 A or B 1110
B 1100 A and B 1000 A xor B 0110
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
运算的优先级
算术运算 ^ → - (负) → * / → \ → mod → + -(加减)
连接运算 &
比较运算 < <= = > >= 均同级
逻辑运算 not→ and→ or → xor→ equ→ imp
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,

表达式 值 表达式 值
5+3^2 20\7
2*3=6 and 5>2*2 #8/1/2008# +7
“6=,&,1+2+3,Len(“Let’s go!”)
8=5 or not 3>2,abc”>”ABC”
Int(7.65432) 8 mod 3
14
True
6=1+2+3
False
7
2
2008-8-8
9
True
2
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
VB内置函数
? VB内置函数是可以直接使用的函数
? 内置函数是调用内部子程序后返回的
结果,称为函数的 值 。此值的类型称
为函数的 类型 。
? 不同的函数有不同的参数,要注意每
种函数所带参数的个数和类型。
? 函数可以直接放在表达式中,为数据
处理带来很大方便。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
数学函数
? 三角函数, 用弧度
Cos(x),Sin(x),Tan(x),Atn(x) 单位:弧度
sin2 35° 表示为 sin(35*3.1416/180)^2
? 对数,Log(x),指数,Exp(x) (以 e为底 )
? 平方根, Sqr(x)
? 绝对值, Abs(x) | x-y | 表示为, abs(x-y)
? 取整, Int(x) 取 ≤x的最大整数
Fix(x) 取 x的整数部分
? 符号函数 Sgn,Sgn(x)=
VB内置函数
{ -1 当 x < 0 0 当 x = 0
1 当 x > 0
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
数学函数的应用实例
1,∵ Tan(π/4)=1
∴ π= 4*Atn(1) = 3.14159265358979
可用于定义常量,
Const PI= 4*Atn(1)
2,e = exp(1) = 2.71828182845905
π = 4 * Atn(1)
e= Exp(1)
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
随机函数
? (伪)随机函数 Rnd, 产生 0~ 1之间的
1个随机数,0 < Rnd < 1
随机函数在测试、模拟、游戏等程
序中有广泛应用。例如,要产生一个
1~ 6之间的随机整数,可以用表达式,
Int(Rnd*6)+1
? Randomize语句:产生随机数的种子,
从而改变随机数序列。
VB内置函数
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
日期时间函数
? 不带参数,
– 日期函数 Date 和 Date$ 取系统日期
– 时间函数 Time 和 Time$ 取系统时间
– 日期和时间函数 Now 取系统日期和时间
– 当天已过时间总秒数 Timer
? 带参数(日期型表达式),
– Year,Month,Day 分出年月日
– Weekday 算出星期几
– Hour,Minute,Second 分出时分秒
VB内置函数
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
字符串函数( 1)
? 取子字符串,
– Left 函数:取左边 n 个字符,如
Left(“Basic”,3)=“Bas”
– Right 函数:取右边 n 个字符,如
Right(“Basic”,2)=“ic”
– Mid 函数:取中间 n 个字符,如,
Mid(“Basic”,2,3)=“asi”,
Mid(“Basic”,2)=“asic”
? 取长度(字符数)函数 Len,如
Len(“Go!”)=3
VB内置函数
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
字符串函数( 2)
? 求子串位置 InStr,如
InStr(“Welcome”,” come”) = 4
? 转换函数,
– 求值 Val,取前面可作数值的字串转换,如
val(“1.23mm”)=1.23
而 val(“1.23e2abc”)=1.23e2=123
– 数值转字符 Str,Str(12.3)=“12.3”
– 代码 → 字符 Chr,例如 Chr$(65)=“A”
– 字符 → 代码 Asc, 例如 Asc(“A”)=65
注:中文 VB使用双字节的 Unicode码
VB内置函数
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
字符串函数( 3)
? 空格函数 Space(n),返回 n个空格
? 字符重复函数 String(n,c),返回 n个字
串 c的第一个字符
? 大小写转换函数,
Lcase(s) 转换为小写
Ucase(s) 转换为大写
VB内置函数
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
转换函数和判断函数
? 转换函数 Cint,CLng,CSng,CStr,…
注意其命名法,C+ <类型缩写 >
? 判断函数
– IsNumeric(表达式 ) 判是否数值,布尔型
– IsEmpty(变量 ) 判是否空值,布尔型
– IIf(条件,值 1,值 2)
– Typename(表达式)返回表达式的类型名
– IsDate (表达式) 判是否日期,布尔型
VB内置函数
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
格式转换函数
? 函数格式,
Format(<表达式 >,<格式字串 >)
? 功能:将表达式的值按指定格式进行转换。
? 例,
– Format(1.2,”00.000”)=, 01.200”
– Format(Date,”yy.m.d”)=, 05.3.8”
VB内置函数
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
语句的书写格式
? 一般情况下,每行一条语句
? 一行多条语句之间用冒号 (, )作分隔符,如
a=1, b=2, c=3
? 长语句分多行书写是,可在换行前加续行
符(下划线 _),例如,
MsgBox,Sum Of 1,2,3,…, 100 is, _
& vbcrlf & x,vbInformation
? 注释部分以单引号 ( ‘ ) 开头,止换行
万博科技职业学院
Visual Basic 程序设

第四章
程序的输入和输出 万博科技职业学院
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
主要内容
? 利用控件输入、输出
– 文本框的 Text属性,I/O
– 标签的 Caption属性,Output
? 对话框
– 输入对话框函数 InputBox
– 消息对话框函数 MsgBox
? Print方法
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
输入对话框
? InputBox(Prompt,Title,Default,Xpos,Ypos)
– Prompt 提示字符串
– Title 对话框标题
– Default 缺省输入值
– Xpos,Ypos 对话框位置(左上角座标)
? 返回用户输入( String类型)
? 例,a=InputBox("n=","输入 ","1")
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
消息对话框
? MsgBox(Prompt,Buttons,Title)
– Prompt 提示字符串
– Buttons 按钮及图标
– Title 对话框标题
? 返回用户所单击的按钮对应值
按钮 图标
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
消息对话框中的按钮
常量名称 数值 按钮
vbOKOnly 0 确定
vbOKCancel 1 确定,取消
vbAbortRetryIgnore 2 终止,重试,忽略
vbYesNoCancel 3 是,否,取消
vbYesNo 4 是,否
vbRetryCancel 5 重试,取消
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
消息对话框中的图标
常量名称 数值 图标
vbCritical 16
vbQuestion 32
vbExclamation 48
vbInformation 64
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
MsgBox函数的返回值
常量名称 数值 用户点击的按钮
vbOK 1 确定
vbCancel 2 取消
vbAbort 3 终止
vbRetry 4 重试
vbIgnore 5 忽略
vbYes 6 是
vbNo 7 否
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
Print方法
? 格式,
[对象名,] Print [<表达式表 >] [; |,|空格 ]
– 分号 (;)表示后面内容将接着输出
– 逗号 (,)表示后面内容将跳至下个制表站输出
制表站位置,n*14+1
– 回车表示后面内容将从下一行开始输出
? 可以用问号 (?)代替 Print 以简化输入

Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
Private Sub Command1_Click()
Print "1 3 5 7 9 1 3 5 7 9 1 3 5 7 9"
Print "ax","but","color"
Picture1.Print "1 3 5 7 9 1 3 5 7 9 1 3 5 7 9"
Picture1.Print "more","no","yes"
End Sub
制表站的
位置,
1,15,29,

(14n+1)
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
具有 Print方法的对象
? 窗体( Form)
? 图片框( PictureBox)
? 立即窗口( Debug)
? 打印机( Printer)
说明:引用所在窗体时,对象名可以省略,
也可以用 Me代表
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
在 Print方法中常用的函数
? Tab(n) 跳至第 n列,输出后面内容
? Spc(n) 插入 n个空格
? 例,
– Print Tab(10);"学号 ";Tab(20);"姓名 ";Tab(30);"性别 "
– Print "学号 ";Spc(4);"姓名 ";Spc(6);"性别 "
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
与 Print有关的属性
? AutoRedraw(自动重画)属性为 False
(初值)时,用 Print方法和绘图方法输
出的内容被其他窗体遮挡后会被抹去。
为此,应将该属性设置为 True
? 改变 CurrentX和 CurrentY属性(当前输出
位置)可以改变下个输出的位置
例如,
CurrentX=Width/2, CurrentY=Height/2
Print 0 ?在窗体中心位置输出 0
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
输出字体与颜色
属性 意义 类型
FontName 字体名 String
FontSize 大小 Single
FontBold 粗体 Boolean
FontItalic 斜体 Boolean
FontUnderline 下划线 Boolean
ForeColor 前景色 Long
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
与 Print有关的方法
? 可用 Cls方法 清除用 Print方法和绘图方法
输出的内容,格式,
[对象名,]Cls
清除后,当前座标回到对象的左上角
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
文本框的主要属性
? Text 显示的文本,缺省属性
? MultiLine 为 True时允许多行显示
? ScrollBar 滚动条,只有在 MultiLine属性为 True时
才有意义
? PassWordChar 口令字符。代替显示用户输入的
字符。只当 MultiLine属性为 False时才起作用。
? Locked 禁止用户输入,使文本框只能输出
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
关于焦点( Focus)
? 事件,GotFocus和 LostFocus
获得焦点和失去焦点。任何时刻只能有一
个控件获得焦点。
? 方法,SetFocus
? 属性,TabIndex Tab键序
TabStop 允许 /禁止获得焦点
没有 TabStop属性的控件当然不会获得焦
点。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
滚动条- Hscrollbar和 Vscrollbar
? 主要属性
– Max 最大值
– Min 最小值
– Value 当前值
– LargeChange 大增量
– SmallChange 小增量
? 事件
– Change 值改变时
– Scroll 滚动时
Min=0 滚动块 Max=100
Value=

40
万博科技职业学院
Visual Basic 程序设计
第 5章
选择结构设计
万博科技职业学院
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
主要内容
? 选择结构的概念
? 条件表达式,比较运算和布尔运算
? 条件语句 If …
? 多分支选择语句 Select Case …
? 标准控件
– 单选按钮 OptionButton
– 复选框 CheckBox
– 定时器 Timer
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
选择结构的概念
? 用于分析、比较、判断。对不同情况要进
行不同的处理。
? 条件表达式由比较运算、布尔运算完成,
表达式的值为 True或 False
? 例,
1,x>=0 and x <=1 (0 ≤ x ≤ 1)
2,x>y and y>0 (x>y>o)
3,Not x>0 or x>5
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
比较运算
? 比较运算, < <= = >= > <>
? 数值之间比较,例 x!>0 等
注意:对浮点(单精度、双精度)数不要
进行 =(等于)比较,如
x!=3.45 -不可靠
? 字符串(可以包含汉字及其他文字、符号)
之间比较按内码大小,从第 1个字符开始。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
逻辑运算
A B Not A A And B A Or B A Xor B A Equ B A Imp B
F F T F F F T T
F T T F T T F T
T F F F T T F F
T T F T T F T T
注,1,A,B均为逻辑表达式。如果是数值,则其值
非零时看作 True,值为零时看作 False。
例如:表达式 4>3 And 5>4 的值为 True
2,F - False,T - True
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
单行 If 语句
格式,
If 条件 Then 语句 1 [ Else 语句 2 ]
例,
1,If a<0 Then a=-a
2,If x>=0 Then y=sqr(x) Else y=-x
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
多行 If 语句
格式,
If <条件 1> Then
[语句块 1]
[ElseIf <条件 2>
语句块 2]…
[Else
语句块 3]
End If
条件 1
End If 后
下个语句
语句块 1
True
False
条件 2
语句块 3
False
语句块 2
True
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
多行 If 语句
格式,
If <条件 > Then
[语句块 ]
[ElseIf <条件 >
语句块 ]…
[Else
语句块 ]
End If
例,
d=InputBox(“请输入你的出生
日期, )
If Isdate(d) Then
Msgbox,你出世已有, _
& Date-cdate(d) &,天,
Else
Msgbox,输入错误!,
End If
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
Select Case语句
? 格式,
Select Case <测试表达式 >
[Case <取值范围表达式表 >
<语句块 >]…
[Case Else
<语句块 >]
End Select
? 用途,多分支选择
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,Select Case语句流程图
Select Case <表达式 >
Case ① Case ② No Case ③ No
End Select 的下个语句
语句块 4
No ( Case Else)
①②③ 为表达式取值范围,可为,
? 常量或常量列表,如 10,20
? 值 1 To 值 2 如 30 To 50
? Is <比较符 > 常量,如 Is>50
语句块 1
Yes
语句块 2
Yes
语句块 3
Yes
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
例 1:按得分定等级
Select Case cj
Case 100 ?如果成绩 cj=100
lev=“满分,
Case is >= 90 ?如果 cj>=90
lev =,优秀,
Case 75 to 89 ?如果 cj 在 75 与 89 之间
lev =,良好,
Case 60 to 74 ?如果 cj 在 60 与 74 之间
lev =,及格,
Case Else ?其他情况
lev=“不及格,
End Select
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
例 2:判断输入字符类型
? 程序功能:在文本框中输入一串字符,在
输入同时判别输入字符的类型,并显示在
一个标签中。同时统计不同类别字符的个
数。
? 类别分:大写字母、小写字母、数字、韵
母 (a,e,i,o,u)、汉字、其他。

Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
输入字符类别判断
Select Case c
Case "A","E","I","O","U"
t = "大写韵母 "
Case "A" To "Z"
t = "大写字母 "
Case "a","e","i","o","u"
t = "小写韵母 "
Case "a" To "z"
t = "小写字母 "
Case "0" To "9"
t = "数字 "
Case Is > "~"
t = "汉字 "
Case Else
tp = "其他字符 "
End Select
Text1.Text=t
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
例 3:信号灯
运行
Private Sub Timer1_Timer()
a = (a + 1) Mod 6
Select Case a
Case 0,1,2
P1.Picture = Image1.Picture 'red
Case 3
P1.Picture = Image2.Picture 'yellow
Case Is > 3
P1.Picture = Image3.Picture 'green
End Select
End Sub
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
Frame(框架)
Frame( 框架 ) 是一个容器 。 用于把其他
的控件组织在一起 。 当框架移动, 隐藏时,
其包容的控件也都跟着移动, 隐藏 。
框架的常用属性有,
Caption - 设置框架标题, 使用户了解框架
的用途 。
Enabled - 设置框架是否有效 。
Visible - 设置框架是否可见 。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
OptionButton(单选按钮)
? 用于从多个可选项中选择其中之一。
? 主要属性,
– Caption 标题
– Value 值,布尔量。 True-选中,False-不选
– Style 外观,
? Standerd-标准方式,圆形
? Graphical-图形方式,象按钮
? 多个选项应在同一个容器中,
– 窗体( Form)
– 框架( Frame)
– 图片框( PictureBox)
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
CheckBox(复选框)
? 主要属性,
– Caption:标题,用于说明。
– Value:值,可取,
?0- UnChecked,不选
?1- Checked,全选
?2- Grayed,部分选中
?单击复选框时,不会选 2
– 纠错,P.100,第 7行
? 复选框之间无制约。 实例
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
Timer(定时器)
?关键属性,
? Enabled,
?True:定时器处于工作状态 。
?False:处于待命状态 。
? Interval,时间间隔周期(毫秒数 )。
如果 Interval= 0,也不会发生 Timer事件。
?Timer事件:定时时间到 。 重新计时 。
?应用于:计时, 动画等 例
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
颜色及有关常量及函数
? 颜色值用长整型数表示,如,
蓝色,&H00FF0000&
绿色,&H0000FF00&
红色,&H000000FF&
? 内置颜色函数,
RGB(red,green,blue) red,green,blue,0~255
QBColor(n) n=0,1,2,…,15
? 颜色常量,vbRed,vbBlue,vbBlack等

万博科技职业学院
Visual Basic
第六章 循环程序结

? For...Next 语句
? Do… Loop 循环语

? 列表框
? 组合框
主要内容
万博科技职业学院
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
For … Next 循环语句
? 格式,
For <计数器 >=<初值 > to <终值 > [step <步
长 >]
<语句块 >
Next <计数器 >
? 注,
– <计数器 >必须是数值型变量
– 步长可正可负,也可以带小数,缺省值为 1
– 当计数器达到或超过终值时,终止循环。
? 可用 Exit For 语句强行中止循环

Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
For… Next循环的流程图
计数超过终值?
计数器加上步长
( Next语句)
语句块 (循环体 )
No
Yes
Next的下条语句
如果在循环体中遇到
Exit For 语句,则强行
中止循环
计数器= <初值 >
保存终值和步长
( For语句)
For <计数器 >=<初值 > to <终值 > [step <步长 >]
<语句块 >
Next <计数器 >
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
例 1:求 100以内所有奇数之和
S=0 ? S用于保存累计值,初值为 0
For K = 1 to 100 step 2 ?K-计数器,步长
2
S = S + K ?K=1,3,5,…, 99
Next K ?K+2(步长),再执行循环语

‘ 直到 K>=100(终值)
Print,100以内所有奇数之和为, ; S ?输出结

计算,S=1+3+5+7+……+99
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
例 2:输出图案( P110,例 6-7)
For i = 1 To 5 ?对 1~ 5行
Print Tab(5 + i); ?跳到第 5+ i列
Print String(6 - i,“★,); ?打印 6-I个★
‘ 输出 6个空格,i个▲
Print Spc(6); String(i,“▲,);
?再输出 6个空格,6-i个☆
Print Spc(6); String(6 - i,"☆ ")
Next i
注意 Tab,Spc和 String函数的用法
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
例 3:二重循环实例:九九乘法表
For m = 1 To 9
Forecolor=vbRed
print m;
Forecolor=vbBlue
For n = 1 To m
Print Tab(n*4); m*n;
Next n
Print '换行
Next m
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
For Each...Next循环
For Each...Next 循环是以对象集合中的每一
个元素作为重复依据的,如果不知道一个集合有
多少元素, For Each...Next 循环非常有用 。
语法格式,
For Each <元素 > In <集合 >
语句块
Next <元素 >
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
例:移动窗体中所有控件( Controls)
Private Sub form_Click()
Dim ob1 As Object
For Each ob1 In Controls
ob1.Left = ob1.Left + 20
Next ob1
End Sub
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
Do… Loop语句
Do While <条件 >
<语句块 >
Loop
Do
<语句块 >
Loop While <条件 >
Do Until <条件 >
<语句块 >
Loop
Do
<语句块 >
Loop Until <条件 >
Until <条件 > 相当于 While not <条件 >
可用 Exit Do 中止循环






Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
前测型与后测型的比较
条件
语句块
Loop的下条语句
前测型 Do While <条件 >
<语句块 >
Loop
后测型 Do
<语句块 >
Loop While <条件 >
条件
语句块
Loop的下条语句
Yes
Yes
No
No
先测试 至少执行一次
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
例,国王的奖励
国王要奖励棋王,棋王要求在棋盘第 1
格放 1粒麦子,第 2格加倍,第 3格再加倍,
直到放到第 64格。国王想一想就同意了。
国王粮仓里有 10万吨麦子,
1粒麦子只有 0.1克,请问
国王的麦子可以奖励棋王
到棋盘的第几格?
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
例,国王的奖励(程序)
Private Sub Command1_Click()
Dim q As Single,k As Integer
q = 0.0001,k= 1,s=q ?初值 q=0.1g,k=1(第 1
格)
Do While s < 1E8 ?10万吨
k=k+1, q = q * 2, s = s+ q
Loop
Print "第 " & k & "格 "
End Sub
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
ListBox(列表框)及其主要属性
用于显示项目列表。用户可以从列表框中的一系列选项中选
择一个或多个选项。主要属性,
? List(i),设置列表框中包含的项 ( 数组 )
? ListIndex,当前所选列表项的下标
? ListCount,列表项的总数
? Text,当前项文本内容
? MultiSelect,设置是否能够做多个选择
? Selected (i), 数组, 选中的项 ( Boolean)
? Sorted,设置是否按字母顺序排列各项

Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
ListBox(列表框)的主要方法
? AddItem 项目 [,位置 ] 添加项目 。
例如,List1.AddItem,王平,,0
? RemoveItem 位置 删除项目
例如,List1,RemoveItem 0 ( 删除第一项 )
? Clear 删除所有项目
例如,List1.Clear 例
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
ComboBox(组合框)及其主要属性
文本框与列表框的组合, 其主要属性与列表框相同
? List(i),设置组合框中包含的项 ( 数组 )
? ListIndex,当前所选列表项的下标
? ListCount,列表项的总数
? Text,当前项文本内容
? Sorted,设置是否按字母顺序排列各项
? Style,显示方式
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
ComboBox 的 Style 属性
? 0- DropDown Combo
下拉组合框
? 1- Simple Combo
简单组合框
? 2- DropDown List
下拉列表框
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
组合框 -ComboBox的方法
? AddItem 添加项目 。
例如,Combo1.AddItem,王平,,0
? RemoveItem 删除项目
例如,Combo1,RemoveItem
Combo.ListIndex
( 删除当前项 )
? Clear 删除所有项目
例如,Combo1.Clear
万博科技职业学院
Visual Basic程序设计
第七章 数组
万博科技职业学院
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
数组
?一组变量, 名字相同, 数据类型相同, 用下标
( 索引 -Index) 来区分 。 例如,
a(0),a(1),…, a(n)
称为数组 a的成员 ( 元素, 下标变量 )
?两种类型的数组,
?静态数组,成员数量不变,
?动态数组,成员数量可变 。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
静态数组
? 定义 ( 声明 ),
Dim | Private | Public | Static _
数组名 ( [下界 To ] 上界 ) [As 数据类型 ]
?缺省的下界为 0 ( 或 1,如有 Option Base 1 )
?除 Variant型外, 数组内所有元素有相同类型 。
?例,
Dim a(4) As Integer ?含 5个元素a(0),…,a(4)
Dim s(10 To 20) As String ?含 11个元素
Dim b(3,2) ?2维数组, 变体型, 4× 3个元素
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
多维数组
Dim a%(3,4) ?定义了 1个二维数组
A(0,0) A(0,1) A(0,2) A(0,3) A(0,4)
A(1,0) A(1,1) A(1,2) A(1,3) A(1,4)
A(2,0) A(2,1) A(2,2) A(2,3) A(2,4)
A(3,0) A(3,1) A(3,2) A(3,3) A(3,4)
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
数组的使用
? 数组元素与一般变量一样使用。
? 注意,
– 声明后初值为 0(数值型)或空(字符型)
– 声明数组和引用数组元素时,都用圆括号括住
下标。
– 下标值不能超过定义范围
– 数组与简单变量在同一范围内不能同名。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
赋值
? 每个数组元素都是一个变量,一般应逐个
赋值。例如,
For i=0 to ubound(a)
a(i)=i
Next i
? 使用 Array函数。例如,
Dim a as variant ?a是一个变体型变量
a=Array(1,3,6)
?结果 a成为数组,且,a(0)=1,a(1)=3,a(2)=6
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
与数组有关函数
? Lbound(a) 数组 a的下界
? Ubound(a) 数组 a的上界
? Array(a1,a2,… ) 创建一个数组
各元素初值为 a1,a2,.,
? Split(A[,c]) A-String,c-Character
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
使用 InputBox()函数输入
? 逐个输入,
For i=0 to 5
a(i)=inputbox(“a(,& i &,)=“)
Next I
? 一次输入,
Dim a as Variant,s as String
s= inputbox(“输入数据,用逗号隔开”)
a=split(s,”,”)
for I=0 to ubound(a)
print a(I)
next i
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
动态数组( 1)
创建动态数组的步骤,
1,声明动态数组, 给数组附以一个空维数表,
例如,Dim DynA ( ) as integer
2,用 ReDim 语句在程序执行过程中给数组指定
维数和分配实际的元素个数,例如,
ReDim [Preserve] DynA (4 to 12)
3,Preserve 保留数组内容 。 此时只能改变最后
一维上界 。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
动态数组( 2)
值得注意的是,ReDim 语句与 Dim 语句不
同, ReDim 语句是一个可执行语句, 通过在
应用程序中执行 ReDim 语句, 给维数和元素
个数待定的数组指定维数和元素个数 。
在程序中还可以使用变量设置动态数组的
边界 。
例如,
ReDim DynA (X,Y)
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
控件数组
?一组控件,名字相同,类相同,用下标
(索引 -Index)来区分。 例如,
Command1(0),Command1(1),…,
Command1(n)
Font
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
For Each...Next循环
For Each...Next 循环是以对象集合中的每一
个元素作为重复依据的,如果不知道一个集合有
多少元素, For Each...Next 循环非常有用 。
语法格式,
For Each <元素 > In <集合 >
语句块
Next <元素 >
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
例:移动窗体中所有控件( Controls)
Private Sub form_Click()
Dim ob1 As Object
For Each ob1 In Controls
ob1.Left = ob1.Left + 20
Next ob1
End Sub
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
数据排序( Sort)
? 冒泡排序( Buble Sort)
? 选择排序( Selection Sort)
? 插入排序( Insertion Sort)
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
数据查找
? 顺序查找
? 折半查找
万博科技职业学院
Visual Basic程序设计
第八章 过程
-子程序和函数
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
主要内容
?子程序 ( Sub过程 )
?函数 ( Function过程 )
?参数传递
?过程的嵌套调用和递归调用
?鼠标和键盘事件
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
自定义子程序
[Public|Private|Static] Sub <子程序名 >
( [参数及其类型列表 ] )
<程序代码 >
End Sub
例如:交换两个变量内容的子程序,
Public Sub Swap (x,y)
dim t
t=x, x=y, y=t
End Sub
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
自定义函数
[Public|Private|Static] Function <函数名 >
( [参数及其类型列表 ] ) [As <类型 >]
<程序代码 > (内含, <函数名 >=<返回值表达式 >)
End Function
注意:函数与子程序的区别
( 1)函数必须有返回值,子程序没有。
( 2)如果不指明函数的类型(即其返回值的类型),
则其类型是变体型( Variant型)
( 3)函数用在表达式中,子程序不能。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
子程序的调用
? 格式,
Call <子程序名 >(参数列表 )
或者
<子程序名 > 参数列表
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
子程序和函数的参数
? 形参 -形式参数,定义部分所使用的参数。
? 实参 -实在(实际)参数,调用时传递给
子程序或函数的参数。
例如:下面的 x和 y是形参,a和 b是实参。
定义子程序 Swap,
Sub Swap (x,y)
Dim t
t = x, x = y, y = x
End Sub
调用子程序 Swap,
….,
Swap a,b '交换
….,
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
参数的传递方式
? 在子程序或函数的调用过程中,实参内容传递给
相应的形参可以有两种方式,传址 和 传值
? 传址 (ByRef),将实参地址传给形参。
? 传值 (ByVal),将实参的值传给形参。
区别,
? 传址 时,形参与实参是同一个内存区域,因而实参随形参
的改变而改变。
? 传值 时,形参被单独分配内存并获得实参的值,因而形参
的改变并不改变实参的值。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
传值和传址的区别
形参 x ← 实参 a,
形参 y ← 实参 b,
543
21
定义子程序 Swap,
Sub Swap (x,y)
Dim t
t = x, x = y, y = x
End Sub
调用子程序 Swap,
….,
Swap a,b '交换
….,
Swap 传址 ?
x,← a,
y,← b,
543
21
? Swap 传值
543
21
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
实例,
?求直角三角形的斜边
Private Sub Root(ByVal a,ByVal b,c)
c = Sqr(a ^ 2 + b ^ 2)
End Sub
?调用,
……
Root 3,4,z
Print z ?打印结果 5
c b
a
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
自定义函数的实例
?用函数求直角三角形的斜边
Public Function Hyp(x !,y ! ) As Single
Hyp = Sqr(x ^ 2 + y ^ 2)
End Function
?调用,
……
Print Hyp (3,4) ?打印结果 5
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
变量与过程的作用域
? 在声明变量和过程时,
– 在什么地方声明?
? 过程内部
? 过程外部(模块的通用
段)
– 用什么关键字?
? Dim
? Static
? Private
? Public
? 变量的作用域
– 过程级
– 模块级
– 全局变量
? 过程的作用域
– 模块级
– 全局级
? Static:作用?
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
变量声明
? 格式,
Dim|Public|Private|Static <变量名 > [as <类型 >]
? 有效范围:过程 → 模块 → 全局(公用)
? 隐式声明和显式声明,Option Explicit
? 组合声明,
例, dim i as integer,j as single,s as string
或, dim i%,j!,s$
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
VB应用程序的组成
VB应用程序,vbp
窗体模块,frm 标准模块,bas 类模块,cls
函数过程
(Function) 事件过程
子程序
(Sub)
函数过程
(Function)
子程序
(Sub)
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
变量的作用域
? 过程级:在过程内部声明,使用 Dim或 Static关键
字。只能在过程内部使用。
? 模块级:在模块的通用段声明,使用 Dim 或
Private关键字。可以在该模块的所有过程中使用。
? 全局:在模块的通用段声明,使用 Public关键字。
可以在整个应用程序中使用。如果是在窗体模块
内声明,则引用时需要在变量名前面加窗体名。
例如,Form1.a
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
变量的生存期
? 动态变量:声明时产生(分配内存),过
程结束立即释放。用 Dim声明。
? 静态变量:过程结束后不释放内存,其值
保留。下次访问该过程时仍有效。用 Static
声明。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
变量的作用域
作用域,过程级 模块级 全局变量 窗体 标准模块
声明方式 Dim Static Dim Private Public
声明在,过程内 模块的通用声明段
本模块其
他过程,不能用 能用
其他模块,不能用 能用,但要加 窗体名, 能用
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
过程的作用域
? 模块级:用 Private关键字声明
? 全局级:用 Public关键字声明
– 在标准模块内声明:可以直接调用
– 在窗体模块内声明:需要在过程名前面指定对
象(窗体)名。
? 静态( Static):该过程内所有过程级变量均
为静态变量。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
鼠标事件
? Click 单击
? DblClick 双击
? MouseDown 按下
? MouseUp 放开
? MouseMove 移动
? DragDrop 拖放
? DragOver 拖过
有关问题
同时发生时的先后次序
事件过程中的参数
Button 区分左右键
Shift 键盘配合
X,Y 指针位置
有关属性
有关方法

Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
MouseDown和 MouseUp事件
? Button参数,由按下的鼠标键决定,
1-左键,2-右键,4-中键
? Shift参数,由先按下的键盘键决定,
1- <Shift>键
2- <Ctrl>键
4- <Alt> 键
先按下多键时,数值相加
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
与鼠标有关的属性
? MousePointer 指针形状
? MouseIcon 自定义指针形状
当 MousePointer= 99时的指针形状
? DragMode
– 0-手工,1-自动
– 自动:可以拖动,此时 Click事件和
MouseDown事件失效
– 手工:需编程 (用 Drag方法 )才能拖动
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
DragDrop事件
? 发生在目标对象,而不是被拖动对象上
? 参数,Source As Control,X As Single,Y As Single
Source 被拖动对象
X,Y 放下时的 X,Y坐标
? 有关属性
– DragMode,0-手工,1-自动
– DragIcon:拖动时的图标
? Drag方法,Drag [Action]
Action,0-取消,1-开始(缺省),2结束

Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
DragOver事件
? 在拖动越过一对象时发生
? 参数,
Source As Control,X As Single,Y As Single
Source 被拖动对象
X,Y 放下时的 X,Y坐标
State 0-进入时,1-退出时,2-在其中

万博科技职业学院
Visual Basic 程序设计
第 9章,对话框
主要内容
公共对话框
自制对话框
万博科技职业学院
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
公共对话框
? 不是标准控件。而是可插入部件,
Microsoft Common Dialog Control 6.0
和标准控件一样,有属性、方法
? 多功能(由 Action属性决定),
1,打开 文件对话框
2,另存为 对话框
3,颜色 对话框
4,字体 对话框
5,打印 对话框
6,帮助 对话框
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
打开公共对话框的方法
1,ShowOpen 显示 打开 文件对话框
2,ShowSave 显示 另存 为对话框
3,ShowColor 显示 颜色 对话框
4,ShowFont 显示 字体 对话框
5,ShowPrinter 显示 打印 对话框
6,ShowHelp 显示 帮助 对话框

Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
“打开 /另存为, 对话框的主要属性
? FileName 用户所选文件路径
? Filter 过滤器-限制文件选择范围
– 格式:, 描述 |通配符 ;…”
– 例:, 所有文件 |*.*|图片文件 |*.bmp;*.jpg”
? FilterIndex 用户选择的过滤项索引号
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
“字体, 对话框的主要属性
? FontName 字体 ( String)
? FontSize 大小 ( Single)
? FontBold 粗体 ( Boolean)
? FontItalic 斜体 ( Boolean)
? FontUnderline 下划线
( Boolean)
? Color 颜色 ( Long)
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
“颜色, 对话框的主要属性
? Color 用户所选的颜色值
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
自定义对话框
? 对话框是窗体的一种,可以用 Show方法显
示,用 Hide方法隐藏。
? Show方法,
窗体名,Show [0|1]
? 模式,0(默认)- 无模式,打开后继 续
执行其后继语句 (如 Find)
1- 有模式,关闭后才能继续 (如 Open)

Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
Shell函数
? 功能:用于启动其他应用程序。
注,Shell-外壳,操作系统中指命令解
释程序,如 DOS的 command,UNIX的
csh,ksh等。
? 格式,Shell(<命令行 >,<启动状态 >)
– 命令行,任何可在 Windows下可执行的命令,
如, c:\windows\calc.exe”
– 启动状态,有 /无焦点;最大化 /最小化 /正常
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
windowstyle
0- vbHide 窗口被隐藏,且焦点会移到隐式窗口。
1- vbNormalFocus 窗口具有焦点,且会还原到它原来的
大小和位置。
2- vbMinimizedFocus 窗口会以一个具有焦点的图标来显
示。
3- vbMaximizedFocus 窗口是一个具有焦点的最大化窗
口。
4- vbNormalNoFocus 窗口会被还原到最近使用的大小和
位置,而当前活动的窗口仍然保持活动。
6- vbMinimizedNoFocus窗口会以一个图标来显示。而
当前活动的的窗口仍然保持活动。
万博科技职业学院
Visual Basic
第 10章 菜单和工具栏
万博科技职业学院
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
主要内容
? 菜单制作
– 下拉式菜单
– 弹出式菜单-快捷菜单
– 代码设计
? 工具栏制作
– 加入部件(工具栏,图像列表等)
– 组成:图像加入到工具栏
– 代码设计
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
菜单和工具栏的应用实例
工具栏
图像列

Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
菜单编辑器
菜单项
的属性,
Caption
Name
Index
Checked
Enabled
Visible
上移一层 下移一层 上一项 下一项
菜单项显示区

Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
菜单编辑器
? 功能:适用于下拉式菜单和快捷菜单
? 菜单的树形结构(最多 6层)
? 菜单项的增减、插入、移动
? 菜单项的属性设置
? 菜单项数组
? 窗体工作区缩小( ScaleHeight 或 ScaleWidth
相应缩小)
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
菜单项的属性
? 把菜单项看作一种类似命令按钮的控件
? 主要属性
– 名称:必须输入,不能重名,除非是数组元素
( Index属性非空)
– 标题( Caption)
– Index 索引(下标)属性,一般不填
– Visible(可见),Enabled(可用)
– 对应的快捷键-主项与子项的设置方法不同
? 特殊菜单项:菜单中的分隔条-标题为, -”
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
菜单的代码设计
? 唯一的事件,Click(除分隔条)
? 菜单项的隐藏和再现(修改 Visible属性)
? 菜单数组情况下,含参数 Index
? 菜单项的动态增减,
– 只能对菜单数组元素
– 使用 Load和 Unload方法
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
快捷菜单
? 怎样弹出快捷菜单
– 在被右击的对象的 MouseDown事件过程中编程
– 使用 PopupMenu语句(方法),格式,
PopupMenu 菜单名,标志,x,y,粗体子菜单名
? 说明,
1,只有 菜单名 是必须的。并已在菜单编辑器中定义。
2,指定的菜单 必须含有至少一个子菜单 。
3,与下拉式菜单编程相同,正常共享代码。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
工具栏
? 插入部件,
Microsoft Windows Commom Controls 6.0
? 在窗体中加入工具栏( ToolBar)
– 主要属性,Align,决定工具栏的位置
? 加入图像列表控件( ImageList),用于
保存工具栏中所需的图像。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
工具栏的 按钮 属性页
主要属性,
Index
Caption
Key
Style
ToolTipText
Image
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
按钮的样式
? 0-tbrDefault 缺省
? 1-tbrCheck 复选按钮
? 2-ButtonGroup 单选按钮
? 3-tbrSeparator 分隔符
? 4-tbrPlaceholder 占位按钮
? 5-tbrDropDown 下拉式按钮
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
图像列表控件 ImageList
? 用于保存多个图片(在 ListImages属性
中),供其他控件和程序使用。
? 图片类型:位图 (.bmp)、光标 (.cur)、图标
(.ico),JPEG(.jpg) 或 GIF(.gif) 文件。
? 怎样加入图像
? 工具栏与图像列表的关联操作
? 其他应用
万博科技职业学院
Visual Basic
第 11章
图形与图象设计
万博科技职业学院
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
主要内容
? 图形控件,
– Shape 形状
– Line 直线
? 绘图方法,
– PSet
– Line
– Circle
? 显示图片控件
– PictureBox 图片框
– Image 图像框
? 容器,
– 窗体和图片框
? 坐标系,
– 坐标轴
– 度量单位
? 自定义坐标系
? 颜色及颜色函数
– QBColor(n)
– RGB(r,g,b)
– vbRed 等符号常量
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
Shape-形状控件的主要属性
? Shape属性:决定 6种形状之一
? FillStyle属性:决定填充的图案
? BorderStyle属性:决定边界线的虚实
? FillColor:填充色,BorderColor:边框色
? BorderWidth:边框宽度。如宽度 >1,则边界只
能是实线。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
Line(直线) 控件的主要属性
? X1,Y1 - 起点坐标
? X2,Y2 - 终点坐标
? BorderWidth - 线条宽度
? BorderStyle - 线条虚实样式
如 BorderWidth >1,则 BorderStyle不起作用,
只能是实线。
? BorderColor - 线条颜色
注意:在运行时想改变直线的位置,应改变其端点
的坐标。 Line 没有 Left 和 Top 属性

Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
坐标系
? 单位,Twip(缇 )=1/1440 英寸
默认,ScaleMode属性
0 自定义
1 缇
2 磅 (1”/72)
3 像素
4 字符
5 英寸
6 毫米
7 厘米
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
自定义坐标系
? 使用 Scale语句,
Scale (x1,y1)-(x2,y2)
例 Scale (-4,2)-(4,-2)
?始终有,
Scalewidth=x2-x1
ScaleHeight=y2-y1
均可能为负!
(0,0) - 4 4
-2
2
清更正第 285页的错误!
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
容器及其与画图有关的属性
? 容器:窗体、图片框或打印机
? 坐标属性
– ScaleLeft, ScaleTop -左上角坐标
– ScaleWidth,ScaleHeight - 宽度和高度
– CurrentX,CurrentY - 当前坐标
? AutoRedraw -自动重画
? DrawWidth - 线条宽度
? DrawStyle - 线条虚实样式
? FillColor -填充色,FillStyle -填充样式
若 DrawWidth>1,则
DrawStyle不起作用。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
DrawMode属性
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
画点方法 PSet
? 格式,
[对象名,]Pset [Step] (x,y) [,颜色 ]
? 例如,Pset (300,500),vbRed
(在点( 300,500)处画一红点 )
? Step 表示使用相对坐标即,
CurrentX=CurrentX+x
CurrentY=CurrentY+y
然后画点
例 1
例 2
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
画直线方法 Line
? 格式,
Line [Step] [(x1,y1)]-[Step](x2,y2) [,颜色 ] [,B[F]]
其中,
– Step 表示使用相对坐标
– 起点坐标 (x1,y1)的缺省值为 (CurrentX,CurrentY)
– 终点坐标 (x2,y2)不能省。
– 选择, B”将画出一个以 (x1,y1)和 (x2,y2) 为对角线的矩
形。
如果再选择, F”,则以指定的颜色填充。
例,Line (0,0)-(100,50),vbBlue 画一条蓝线

Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
画园或椭圆
? 格式,
[对象名,]Circle [Step]<圆心坐标 >,<半径 >
[,<颜色 >,<起点 >,<终点 >,<比例 >]
? 说明:起点、终点用于画弧 (弧度 ),比例用于画
椭圆。起点、终点为负时,画出与圆心连线。
? 例如,
PictureBox1.Circle (0,0),100,vbBlue,,,0.5
画一个蓝色椭圆
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
清除( Cls)方法
? 用于清除用画图方法画出的图形和用
Print 语句打印的信息,
? 语句格式:对象名,Cls
例如,me.Cls
Picture1.Cls
? 注意,如果 AutoRedraw=False,则 Cls方法不
能清除在 AutoRedraw为 True时所产生的图
形和打印的信息。

Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
颜色及有关函数
? 颜色值用长整型数表示,如,
蓝色,&H00FF0000&
绿色,&H0000FF00&
红色,&H000000FF&
? 内置颜色函数,
RGB(red,green,blue) red,green,blue,0~255
QBColor(n) n=0,1,2,…,15
? 颜色常量,
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
显示图片的控件
? 图片框- PictureBox
? 图像框- Image
? 图片的加载,
– 设计时:指定 Picture的文件名
– 运行时,1。用 LoadPicture函数
2。用其他控件的 Picture属性赋值
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
图像框 Image的主要属性
? Picture属性:所显示的图片
? Strech属性,
– False(缺省):图不伸缩,框随图大小。
– True:图随框大小伸缩。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
图片框 PictureBox的主要属性
? Picture属性:所显示的图片
? AutoSize属性,
– False(缺省):框大小不随图变。
– True:框大小随图变。
万博科技职业学院
Visual Basic 程序设计
第 12章文件处理
万博科技职业学院
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
主要内容
? 文件系统控件
– 驱动器列表框 DriveListBox
– 目录列表框 DirListBox
– 文件列表框 FileListBox
? 文件处理语句
? 文件系统对象 FileSystemObject (FSO)
? 传统的文件 I/O语句
– Open,Close
– Input,Write
– Line Input,Print
– Get,Put
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
文件系统控件
? DriveListBox(驱动器列表框)主要属性,
– Drive 驱动器名
? DirListBox-目录列表框
– Path 选中的目录(路径)
? FileListBox-文件列表框
– Path 显示的目录
– Filename 最后选中的文件名
– Pattern 样式(类似于过滤器 Filter)
? 都有类似 listbox的属性如 List, listcount等
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
三种列表框的同步
'选择驱动器时,目录列表框跟着改变
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
'选择目录时,文件列表框跟着改变
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
常用的文件处理语句
? ChDrive <驱动器名 > 改变当前驱动器
? ChDir <路径 > 改变当前路径
? MkDir <路径 > 创建新目录
? RmDir <路径 > 删除目录
? Kill <文件名 > 删除文件
? SetAttr <文件名 >,<属性 > 设置文件属性
? FileCopy <源文件 > <目的 > 拷贝文件
? Name <原文件名 > As <新文件名 > 更名
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
文件系统对象
把驱动器、文件夹、文件等都看作对象,
? FileSystemObject (FSO) 文件系统
? Drive/Drives 驱动器 /驱动器集合
? Folder/Folders 文件夹 /文件夹集合
? File/Files 文件 /文件集合
? TextStream 文本流
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
文件系统对象操作
? 引用 Microsoft Scripting Runtime
? 创建 FSO对象。两种方法,
– Dim <变量名 > as New FileSystemObject
– Dim fs as New FileSystemObject
– Set <变量名 > =CreateObject(,Scripting.FileSystemObject”)
– Set fs =CreateObject(,Scripting.FileSystemObject”)
? 使用 FSO访问驱动器、文件夹和文件。例如
– Dim fs as New FileSystemObject
– Dim fil as File
– set fil=fs.getfile(“c:\config.sys”)
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
传统的文件读写
? 文件操作,
– 打开文件
– 读写文件
– 关闭文件
? 数据文件访问类型
– 顺序型
– 随机型
– 二进制型
? 传统的文件 I/O语句
– Open,Close
– Input,Write
– Line Input,Print
– Get,Put
? 对不同类型文件用不
同的语句
? 有关函数
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
顺序文件的打开
? 语句格式,
Open <文件名 > For {Input | Output |
Append} As <文件号 > [Len=buffersize]
说明,
Input -为读取文件而打开,文件应存在
Output-为写入数据而打开,新建
Append-为追加数据而打开,也可新建
? 文件号:读写和关闭时用。同时打开多个文件时
要指定不同的文件号。
? 例,Open,c:\a.txt” for Input as #1
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
顺序文件的读取
语句格式,
– 读 1行到一个变量,
Line Input #<文件号 >,<变量名 >
– 用下列函数读指定长度,
Input (<字符数 >,<文件号 >)
InputB(<字节数 >,<文件号 >)
– 读一列数据到一列变量,
Input # <文件号 >,<变量名 1>,<变量名 2>,…
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
与文件有关的函数
? EOF(<文件号 >) — End Of File
测试文件末函数( Boolean型)
? LOF(<文件号 >) — Length of File
返回已打开文件的长度(字节数)
? FileLen (<文件名 >)
返回未打开文件长度(字节数)
? FreeFile
返回下一个可供 Open 语句 使用的文件号
? StrConv(<字符串 >,<类型 >)
字符串转为指定类型。
? CurDir [(<驱动器名 >)]
返回当前目录
又,App.Path (属性)
— 应用程序文件所在路径
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
顺序文件的写入
语句格式,
– Print # <文件号 >,<数据 > [,| ;]
与一般的 Print语句相比,只多了文件号部分,
以表示输出到文件。其他都相同。
– Write # <文件号 >,<数据 >
与 Input语句对应:用 Write写入的数据,用
Input读出。
Input
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
关闭文件
? 语句格式
Close [<文件号 1>] [,<文件号 2>]
? 不带参数的 Close语句将关闭所有打开的文
件。
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
访问随机存取文件
? 打开文件,
Open <文件名 > [For Random] as <文件号 >
Len=<记录长 >
? 读文件
Get #<文件号 >,<记录号 >,<变量名 >
? 写文件,
Put #<文件号 >,<记录号 >,<变量名 >
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
用户定义数据类型
? 语法,
[Public |Private] Type 类型名
<Field1> as type1
[<Field2> as type2]
<[Field3> as type3]

[<Fieldn> as typen]
End Type
? 先定义,后声明
? 例:定义学生记录格式
Public Type Stu
xm as String*6 ?姓名
xh as String*8 ?学号
xb as String*1 ?性别
cj(3) as Integer ?成绩
yw as Integer ?语文成绩
wy as Integer ?外语成绩
End Type
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
万博科技职业学院
Visual Basic程序设计
第 13章
访问数据库
万博科技职业学院
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
两类数据控件
? 数据 连接控件
– 用于连接数据库
– 如 Data控件和 ADO控件等
? 数据 绑定控件
– 包括 Label,TextBox,ComboBox,ListBox,
PictureBox,Image,DBList,DBCombo等
– 用于显示 /修改数据库中的记录
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
数据连接控件 Data的主要属性
? Connect属性:指明连接的数据库类型,如:
Access,Excel,Foxpro等
? DatabaseName:要连接的数据库文件的路
径名
? RecordSource:数据库的表 (或查询 )名
? RecordsetType:记录集类型
? BOFAction EOFAction:达到 BOF或 EOF时
的动作
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
Data控件上的对象
? Database对象(数据库)
– 定义与打开,
? Dim Db as Database
? Set Db=Data1.database
– 动态设定所连接的数据库,
Set Data1.database= OpenDatabase(<文件名 >)
? Recordset对象(记录集)
– 定义与打开,
? Dim Rs as Recordset
? Set Rs=Data1.Recordset
– 动态设定所连接的数据库表,
Set Rs=Data1,Database.Openrecordset(<表名 >,类型 >
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
对记录的操作方法
? 移动记录指针,
– Move,MoveNext, MovePrevious,
MoveFirst, MoveLast
? 增加记录,AddNew
? 删除记录,Delete
? 编辑记录,Edit
? 更新记录,Update
? 关闭记录集,Close
Vi
su
al
BA
SI
C




? ■
万 博 科 技 职 业 学 院
Wanbo Inst,Of Since & Tech,
Data控件的事件
? Reposition事件:当前记录改变时发生
? Validate事件:在 当前记录改变 之前,
Update 方法之前,Delete,Unload
或 Close 操作之前会发生该事件。