一个完整的 VB应用程序, 一般都包含三部分内容, 即
输入 → 处理 → 输出
可通过 VB语句、各种控件实现输入输出操作
本章主要内容
使用 Print
窗体和基本控件
命令按钮 /标签 /文本框
对话框
输入对话框 /消息对话框
第 3章 赋值与输入输出
赋值语句是程序设计中最基本、最常用的语句
格式,[ Let]变量名 =表达式
功能:计算右端的表达式,并把结果赋值给左端的变量
例 3.1 已知 a=6,b=9,计算 c=√ a2 + b2
编写的窗体单击事件过程代码如下:
Private Sub Form_Click()
Dim a As Single,b As Single,c As Single
a = 6
b = 9
c = Sqr(a * a + b * b)
Print "c=" & c
End Sub
C=10.81665
3.1 赋值语句
本事件过程采用的是顺序程序结构,运行的过程是:
声明 3个单精度变量 a,b,c
6→a
9→b
计算表达式,其结果 10.81665→c
输出结果
赋值含义, 将值送到变量的存储单元中去
说明:
(1)表达式中的变量必须是赋过值的,否则变量的
初值自动取零值 (变长字符串变量取空字符 )。例如:
a = 1
c = a + b + 3 ′b 未赋过值,为 0
执行后,c 值为 4
(2)利用赋值语句,可以改变变量的值,因此,同
Private Sub Form_Click()
a = 3, Print "*A=" & a
a = 7, Print "**A=" & a
a = a * 2 + 3, Print "***A=" & a
End Sub
运行程序后单击窗体,输出的结果如下:
*A=3
**A=7
***A=17
(3)赋值语句跟数学中等式具有不同的含意,例如赋值语
句 x=x+1,表示 把变量 x的当前值加上 1后再将结果赋给变量
,先读后写,, 读出 x的内容 → 加 1 → 写回 x(覆盖原有内容)
例 3.2 示例
(1)分析,计算某年 y的元旦是星期几,可由以下式子得出:
F = y-1 +[ (y-1)/4] -[ (y-1)/100] +[ (y-1)/400] + 1
其中[ ]表示求整
K = F Mod 7 F除以 7
y为某年公元年号,计算出 K为星期几
(2)创建应用程序的用户界面
例 3.3 设计一个, 万年历, 程序,用来查看
某
年的元旦是星期几
(3)设置对象属性
(4)编写程序代码
功能要求:用户在, 输入年份, 文本框 (Text1)中输入某
一年份,单击, 查看, 按钮时,则在, 星期, 文本框 (Text2)
中显示出星期几
编写的, 查看, 按钮 (Command1)Click事件过程代
码如下:
Private Sub Command1_Click()
Dim y As Integer,f As Integer,k As Intege
y = Val(Text1.Text) -1
f = y + Int(y/4) – Int(y/100) + Int(y/400) + 1
k = f Mod 7 ?等价于 f - Int(f / 7) * 7 吗?
Text2.Text = k
End Sub
运行结果(见上图)
3.2.1 注释语句 Rem
在程序的适应位置加上必要的注释,可以提高程序的可读性
语法格式,Rem
或 ′
Rem 交换变量 a和 b的值
c = a ′c
a = b
b = c
说明,(1)如果使用关键字 Rem,在 Rem和注释内容之间要
(2)在其他语句后使用 Rem关键字,必须使用冒号 (:)与前面
的语句隔开。注释符 (单引号’ )可以直接写在其他语句后面。
3.2 常用基本语句
3.2.2 加载对象语句 Load
语法格式,Load 对象名
功能:把对象名代表的窗体对象、控件数组元素等
说明:使用 Load语句可以加载窗体,但不显示窗体。当 VB
加载窗体对象时,先把窗体属性设置为初始值,再执行 Load事
Load Forml ′加载窗体 Forml
Load Option(2) ′加载控件数组中的一个元素
3.2.3 卸载语句 Unload
格式,Unload 对象名
如果卸载的对象是程序惟一的窗体,则将终止程
序的执行
例如
Private Sub Command1_Click()
Unload Me ′ 卸载当前窗体
End Sub
Me是系统关键字,用来代表当前窗体
格式,End
也可以单击工具栏上的, 结束, 按钮
3.2.5 暂停语句 Stop
格式,Stop
功能:暂停程序的运行。可用于调试程序 (设置断点 )
也可以通过单击工具栏上的, 中断, 按钮来实现
使用 Ctrl + Break组合键
3.2.4 结束语句 End
3.3.1 Print方法
用于显示 (输出 )
格式,[对象名,] Print [表达式列表]
说明,(1)使用的对象可以是窗体等
Print,程序设计, ′在当前窗体上输出
Picture1.Print,程序设计, ′在图片框上输出
(2)表达式列表是一个或多个表达式,如果省略,则输出
一个空行
(3)当输出多个表达式时,各表达式之间用分号, ;, (紧
凑格式 )或逗号,,, (按区格式 )隔开。
(14个字符位置 )
3.3 使用 Print方法输出数据
例,Private Sub Form_Click()
a = 2
b = "VB"
Print 50 * a '计算并输出表达式的值
Print b '输出变量的值
Print '输出空行
Print "The Total is" '输出字符串常量
End Sub
输出数值数据时,前面有一个符号位 (正号以空格表示 ),
后面留有一个空格;输出字符串时,前后不留空格。
例,Private Sub Form_Click()
a = 3,b = 4
Print a,b,4 + a,
Print 2 * b
Print a,,b
Print "a="; a,"b="; b
End Sub
运行结果
(4)若语句行末尾有分号或逗号,则输出本行输出项后不换行
编写的窗体单击事件过程代码如下:
Private Sub Form_Click()
Dim a As Integer,b As Integer,c As Integer
Dim d As Integer,s As Integer,m As Single
a = 6, b = 21, c = 23, d = 15
s = a + b + c + d
m = (a * 18 + b * 19 + c * 20 + d * 21) / s
'以下舍入到小数后 1位
Print "平均年龄,"; Int(m * 10 + 0.5) / 10
End Sub
平均年龄,19.7
例 3.4 使用 Print方法输出全班学生的平均年龄
已知 18岁 6人,19岁 21人,20岁 23人,21岁 15人
1,Spc
格式,Spc(n)
功能:在输出下一项之前插入 n个空格。
Print "学号 "; Spc(2); "姓名 "; Spc(5); "成绩 "
输出结果 (└┘ 表示空格 )
学号 └┘└┘ 姓名 └┘└┘└┘└┘└┘
3.3.2
2,Tab函数
函数格式,Tab(n)
功能:把输出位置移到第 n
例如:
Print Tab(2);"学号 "; Tab(11);"姓名 "; Tab(21);"成绩
"
输出结果是 (1个汉字占 2个位置 ):
└┘ 学号 └┘└┘└┘└┘└┘ 姓名 └┘└┘└┘└┘└┘└┘ 成绩
程序代码如下:
Private Sub Form_Click()
Print Tab(15); "学号 "; Tab(26); "姓名 "; Tab(36); "成绩 "
Print Tab(14); String(27,"-") '输出 27个减号字符,-‖
Print Tab(14); "20011001"; Tab(26); "张小三 "; Tab(36); 57
Print Tab(14); "20011003"; Tab(26); "李小四 "; Tab(36); 69
Print Tab(14); "20011012"; Tab(26); "马小五 "; Tab(36); 92
Print Tab(14); String(27,"-") '输出 27个减号字符,-‖
End Sub
例 3.5 使用 Tab对输出进行定位
运行结果
格式,Format(表达式 [,格式串 ])
功能:根据格式串规定的格式来输出表达式的值
a=4513.7, b=3456.78, TimeVar=#08:30:05#
Print Format(a,"##,###.##")
Print Format(a,"$##,###.00")
Print Format(b,"+##,###.#")
Print Format(TimeVar,"h:m:s")
输出结果是:
4,513.7
$4,513.70
+3,456.8
8:30:5
格式符号 #和 0都能显示数字,但符号 #会剔除不必要的 0,
符号 0会按规定补足 0
3,Format
窗体 (Form)是设计 VB应用程序的基本平台
窗体本身是一个对象,又是其他对象的载体或容器
多数应用程序是从窗体开始执行的 ; 一个程序可以有多个窗体
3.4.1 窗体的基本属性
设置窗体的属性,可在程序设计时在属性窗口中
手工设置,也可以在程序运行时由代码实现
默认属性
3.4 窗体
一些常用的窗体属性:
·Name属性,用于设置窗体的名称。 指定窗体的名称。只读,
不能在应用程序中修改
·Caption属性,用于设置窗体标题栏上的标题内容。
·Maxbutton和 Minbutton属性,用于设置最大化和最小化按钮
·Height和 Width属性,确定窗体的初始高度和宽度
·Left和 Top属性,确定窗体的左上角在屏幕上的横、纵坐标
·Appearance属性,用于设置窗体的外观是平面还是三维的
·BackColor和 ForeColor属性,设置窗体的背景色和前景色
·Picture属性,用于在窗体上设置要显示的图形。
[对象,] Picture=LoadPicture("文件名 ")
·Visible(可见性 ),设置对象的可见性,默认值为 True
坐标原点 (0,0)在窗体的左上角
坐标轴刻度单位为缇 (Twip,567缇为 1厘米 )
当前位置的横坐标 (CurrentX)和纵坐标 (CurrentY)
窗体坐标系统
Y
X
·(CurrentX,CurrentY)
当前位置
窗体作为对象,能够对事件作出响应。与窗体有关的常用
窗体事件过程的一般格式为:
Private Sub Form_事件名 ([参数表 ])
……
End Sub
不管窗体名字如何定义,但在事件过程中只能使用 Form,
而在过程内对窗体进行引用时才会用到窗体名字 (如 Form1等 )
3.4.2 窗体的事件
与窗体有关的常用事件有以下几种。
(1)Load(装载 )事件
(2)Unload(卸载 )事件
(3)Activate(活动 ),Deactivate(非活动 )事件
(4)Paint(绘画 )事件
(5)Click(单击 )事件
(6)DblClick(双击 )事件
(7)KeyPress(按键 )事件:当按下键盘上的某个健时,将触发
KeyPress
Private Sub 对象 _KeyPress(KeyAscii As Integer)
……
End Sub
参数 KeyAscii返回所按键的 ASCII码
(1)Show方法,用于快速显示一个窗体,使该窗体
变成活动窗体
(2)Print方法,用于在窗体上输出表达式的值
(3)Cls方法,用于清除运行时在窗体中显示的文本
或图形
(4)Move(移动 )方法,用于移动并改变窗体或控件的
位置和大小
3.4.3
1,焦点
焦点 (Focus)是 对象接收鼠标或键盘输入的能力 。
当对象得到或失去焦点时,分别会产生 GotFocus或 LostFocus
(1)
(2)
(3)按 Tab键或 Shift+Tab键在当前窗体的各对象之间切换焦点
(4)在代码中用 SetFocus
Text1.SetFocus ′ 把焦点设置在文本框 Text1
2,Tab键序
Tab键序是指用户按 Tab键时,焦点在控件间移动的顺序
反映在控件的 TabIndex属性
3.4.4 焦点与 Tab键序
设置以下 3个命令按钮:
,显示, 按钮:用于显示唐诗, 静夜思,
,清除,
,结束,
(1)创建应用程序的用户界面和设置对象的属性
例 3.6 显示唐诗, 静夜思,
(2)编写程序代码。编写的三个按钮的 Click事件过程代码如下:
Private Sub Command1_Click()
BackColor = RGB(255,255,255)
ForeColor = RGB(0,0,255)
FontName = "楷体 _GB2312"
FontSize = 20
CurrentX = 1200
CurrentY = 350
Print "静夜思 (唐诗 )"
FontName = "幼圆 "
FontSize = 13
Print Spc(6); "床前明月光,疑是地上霜 "
Print Spc(6); "举头望明月,低头思故乡 "
End Sub
Private Sub Command2_Click()
Cls
End Sub
Private Sub Command3_Click()
End
End Sub
程序运行后,单击, 显示, 按钮,输出结果
需要在窗体中放置各种控件,才能实现用户与应用程序
之间的信息交互
三种基本控件 ——命令按钮、标签和文本框
3.5.1 控件的公共属性
(1)Name属性,控件的 Name属性(名称)必须以字母开
头,其后可以是字母、数字和下划线,名称长度不能超过 40
个字符
(2)Caption属性,任意的字符串。以通过程序代码改变其
值,例如:
Command1.Caption=―结束“
可以在 Caption属性中为控件指定一个访问键。例如,将命令按钮的
Caption属性设置为“结束 (&E)‖,则运行时该控件外观如图 3.7所示,只
要用户同时按下 Alt键和 E键,就能执行该按钮命令。
3.5 基本控件
(3) Enabled属性,该属性决定控件是否对用户产生的事件
作出响应
(4) Visible属性
该属性决定控件是否可见,默认值为 True。
(5)Height,Width,Top和 Left属性, Height和 Width属性
确定控件的高度和宽度,Top和 Lelf属性确定控件在窗体中
的位置
Y
X
Top
HeightLeft
Width
(6)BackColor和 ForeColor属性
(7)FontName,FontSize,FontBold、
FontItalic,FontStrikethru和 FontUnderline属
性
(8)Font属性:确定控件中显示的文本所用字体
的样式、大小、字体效果 等
用于接收用户的操作信息,并引发应用程序的某个操作
1.常用属性
(1)Default属性和 Cancel
Default属性和 Cancel属性分别用于设置“默认按钮”和
“取消按钮”
(2)Style属性
设置命令按钮的外观
2.常用事件和方法
命令按钮最常用的事件是 Click(单击 )事件,但不支持
DblClick(双击 )事件。
命令按钮常用的方法是 SetFocus
3.5.2 命令按钮
标签 (Label)主要用来显示比较固定的提示性信息。
1.常用属性
(1)Alignment属性
设置标签中文本的对齐方式
(2)AutoSize属性
确定标签的大小是否根据标签的内容自动调整大小
(3)BorderStyle属性
设置标签的边框外观
2.常用事件和方法
标签最常用的事件是 Click(单击 )事件和
DblClick(双击 )事件。
标签常用的方法是 SetFocus方法。
3.5.3 标签
文本框 (TextBox)是一个文本编辑区域,用户可以在该区
域中输入、编辑和显示文本内容。
默认情况下,文本框只能输入单行文本,并且最多可以
输入 2048个字符
1,常用属性
文本框具有一般控件的常用属性,但文本框没有
Caption属性
(1) Maxlength属性, 确定文本框中文本的最大长度
(2) Multiline属性, 指定文本框中是否允许显示和输入多
行文本
(3) PasswordChar属性,确定在文本框中是否显示用户输
入的字符,常用于密码输入
(4) ScrollBars属性,指定在文本框中是否出现滚动条
3.5.4
(5)SelStart属性,Sellength属性和 SelText
(6)Text
设置或返回文本框中所包含的文本内容。
(7)Locked属性
2.常用事件和方法
文本框支持 Click,DblClick等鼠标事件,同时支持
Change,GotFocus,LostFocus等事件
文本框常用方法有 SetFocus方法和 Move方法
如输入 4852秒,则应输出 1小时 20分 52秒
(1)创建应用程序的用户界面和设置对象属性
(2)编写程序代码
Private Sub Command1_Click()
Dim h As Integer,m As Integer,s As Integer,t As Integer
t = Val(Text1.Text)
h = t \ 3600
t = t - h * 3600
m = t \ 60
s = t - m * 60
Text2.Text = h
Text3.Text = m
Text4.Text = s
End Sub
例 3.7 输入一个总秒数,化成小时、分钟和秒数
Private Sub Command2_Click()
End
End Sub
对话框既可以用来显示信息,也可以用于输入信息
VB中能够建立两种预制对话框:输入框和消息框
使用系统提供的函数 (InputBox和 MsgBox),而不必为
对话框另建窗体
先看以下一个例子
例 3.7a 通过输入框输入姓名,然后再消息框中显示出来
Private Sub Form_Load()
x = InputBox("输入您的姓名 ","您叫什么名?")
MsgBox (x & "先生:祝您马到功成! ")
End Sub
3.6 使用对话框
3.6.1 输入对话框
用于产生一个能接收用户输入的对话框
格式:
变量 =InputBox(提示 [,标题 ][,缺省值 ][,xpos][,ypos])
举例
filename$=InputBox(―请输入文件名 (不超过 8个字符 )‖,”文件
名”,” vbfile‖)
将产生一个如下对话框
filename$=InputBox("请输入文件名 " + Chr(13) +
"(不超过 8个字符 )","文件名 ","vbfile")
使用 MsgBox函数,可以产生一个对话框来显示消息
当用户单击某个按钮后,将返回一个数值以标明用户单击
了哪个按钮
其语法格式是:
变量 =MsgBox(提示 [,对话框类型 [,对话框标题 ]])
例,y = MsgBox(“输入文件名是否正确,,52,”请确认, )
“对话框类型, 一般有 3个参数,4+48+0
出现按钮;图标类型;默认按钮;
函数返回值 (例 3_9b)
3.6.2 消息对话框
消息框的三种格式
y = MsgBox(“输入文件名是否正确,,52,”请确
认, )
MsgBox,输入文件名是否正确,,52,”请确认,
MsgBox(“输入文件名是否正确, )
(1)创建应用程序的用户界面和设置对象属性
(2)
Private Sub Command1_Click()
Dim r As Single,k As Single,s As Single
r = Val(InputBox("请输入圆的半径 ","计算圆的周长和面积
"))
k = 2 * 3.14159 * r
s = 3.14159 * r * r
Text1.Text = k
Text2.Text = s
MsgBox "计算已完成 ",,"例 3.10"
End Sub
Private Sub Command2_Click()
End
End Sub
例 3.8 从输入框中输入圆的半径,计算圆的周长和面积
当输入的圆半径为 65时,运行结果
例 3.9 编写程序,实现两个文本框内容的交换
使用一个临时单元变量 (t)
(1)在窗体上建立两个标签、两个文本框和一个命令按钮
(2)编写程序代码
Private Sub Command1_Click() ′“交换”按钮
t = Text1.Text
Text1.Text = Text2.Text
Text2.Text = t
End Sub
3.7 程序举例
在窗体上设置三个命令按钮 (图 3.15),程序进入运行状态
后,当单击,窗体变大,命令按钮时,窗体变大,单击
,窗体变小,按钮时,窗体变小。单击,退出,按钮时,
则退出。
例 3.10 控制窗体, 变大, 和, 变小,
(1)建立应用程序的用户界面和设置对象属性
(2)编写程序代码
Private Sub Form_Load()
Form1.Height = 4000
Form1.Width = 4000
Form1.Top = 1000
Form1.Left = 1000
End Sub
Private Sub Command1_Click() '―窗体变大”按钮
Form1.Height = Form1.Height + 200 '每次增加 200点
Form1.Width = Form1.Width + 200
End Sub
Private Sub Command2_Click() '―窗体变小”按钮
Form1.Height = Form1.Height - 200 '每次减少 200点
Form1.Width = Form1.Width - 200
End Sub
在第一个文本框中输入文字时,在另外两个文本框中
显示同样相同的内容,但显示的字号和字体不同。单击
“清除”按钮时则清除三个文本框中的内容
例 3.11 在三个文本框中显示不同的文字效果
(1)建立应用程序的用户界面和设置对象属性
(2)编写程序代码
Private Sub Form_Load()
Text2.FontName = "隶书 "
Text2.FontSize = 16
Text3.FontName = "楷体 _GB2312"
Text3.FontSize = 20
End Sub
Private Sub Text1_Change()
Text2.Text = Text1.Text
Text3.Text = Text1.Text
End Sub
Private Sub Command1_Click() '―清除”按钮
Text1.Text = ―‖ '清除文本框 Text1的内容
Text2.Text = "" '清除文本框 Text2的内容
Text3.Text = "" '清除文本框 Text3的内容
Text1.SetFocus '设置焦点
End Sub
(1)在窗体上建立一个标签( Label1)和三个命
令按钮 (Command1,Command2和 Command3)
三个命令按钮分别使用访问键 Alt+C,Alt+H和
Alt+D
例 3.12 实现标签的显示和隐藏,以及改变文字的颜色
(2)
Private Sub Form_Load()
Randomize
Label1.BackColor = QBColor(15) '背景色
Label1.ForeColor = QBColor(0) '文字颜色
Label1.FontSize = 18 '字体大小
End Sub
Private Sub Command1_Click() '―改变文字颜色”按钮
Clr = Int(15 * Rnd) '产生随机颜色码
Label1.ForeColor = QBColor(Clr)
End Sub
Private Sub Command2_Click() '―隐藏标签”按钮
Label1.Visible = False '隐藏标签
End Sub
Private Sub Command3_Click() '―显示标签”按钮
Label1.Visible = True '显示标签
End Sub