一个完整的 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 常用基本语句语法格式,Load 对象名功能:把对象名代表的窗体对象、控件数组元素等加载说明:使用 Load语句可以加载窗体,但不显示窗体。当
VB加载窗体对象时,先把窗体属性设置为初始值,再执行
Load
Load Forml ′加载窗体 Forml
Load Option(2) ′加载控件数组中的一个元素
3.2.2 加载对象语句 Load
格式,Unload 对象名如果卸载的对象是程序惟一的窗体,则将终止程序的执行例如
Private Sub Command1_Click()
Unload Me ′ 卸载当前窗体
End Sub
Me是系统关键字,用来代表当前窗体
3.2.3 卸载语句 Unload
格式,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 特殊打印格式函数格式,Tab(n)
功能:把输出位置移到第 n
例如:
Print Tab(2);"学号 "; Tab(11);"姓名 "; Tab(21);"成绩 "
输出结果是 (1个汉字占 2个位置 ):
└┘ 学号 └┘└┘└┘└┘└┘ 姓名 └┘└┘└┘└┘└┘└┘ 成绩
2,Tab函数程序代码如下:
Private Sub Form_Click()
Print
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 = "幼圆 "
Print
FontSize = 13
Print Spc(6); "床前明月光,疑是地上霜 "
Print
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
Private Sub Command2_Click()
End
End Sub
例 3.7 输入一个总秒数,化成小时、分钟和秒数对话框既可以用来显示信息,也可以用于输入信息
VB中能够建立两种预制对话框:输入框和消息框使用系统提供的函数 (InputBox和 MsgBox),而不必为对话框另建窗体先看以下一个例子例 3.7a 通过输入框输入姓名,然后再消息框中显示出来
Private Sub Form_Load()
x = InputBox("输入您的姓名 ","您叫什么名?")
MsgBox (x & "先生:祝您马到功成! ")
End Sub
3.6 使用对话框用于产生一个能接收用户输入的对话框格式:
变量 =InputBox(提示 [,标题 ][,缺省值 ][,xpos][,ypos])
举例
filename$=InputBox(―请输入文件名 (不超过 8个字符 )‖,”文件名”,” vbfile‖)
将产生一个如下对话框
3.6.1 输入对话框
filename$=InputBox("请输入文件名 " + Chr(13) +
"(不超过 8个字符 )","文件名 ","vbfile")
使用 MsgBox函数,可以产生一个对话框来显示消息当用户单击某个按钮后,将返回一个数值以标明用户单击了哪个按钮其语法格式是:
变量 =MsgBox(提示 [,对话框类型 [,对话框标题 ]])
例,y = MsgBox(“输入文件名是否正确,,52,”请确认,)
“对话框类型,一般有 3个参数,4+48+0
出现按钮;图标类型;默认按钮;
函数返回值 (例 3_9b)
3.6.2 消息对话框
1,返回一个值。从返回值中可以知道用户按下的是哪个按钮(表 3.5)。例如
y = MsgBox(“输入文件名是否正确,,52,”请确认,)
若 y为 1,表示用户按下的是“确定”按钮,依此类推。
程序通过判断 y值 (如采用条件语句 IF-THEN),再根据用户按下的是什么按钮,再做不同的处理。
2,不返回值。例如
MsgBox,输入文件名是否正确,,52,”请确认,
MsgBox,输入文件名是否正确,
采用这种格式时,不知道用户按下的是什么按钮。这种格式可以使用在不需要知道用户按钮情况的场合。
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.7 程序举例例 3.9 编写程序,实现两个文本框内容的交换
(1)在窗体上建立两个标签、两个文本框和一个命令按钮
(2)编写程序代码
Private Sub Command1_Click() ′―交换”按钮
Dim t As String,a As String,b As String
a = Text1.Text
b = Text2.Text
t = a
a = b
b = t
Text1.Text = a
Text2.Text = b
End Sub
输出把处理后的数据传送给控件处理使用临时单元变量 t
输入从控件中取输入数据
Text1
Text2
Private Sub Command1_Click() ′―交换”按钮
t = Text1.Text
Text1.Text = Text2.Text
Text2.Text = t
End Sub
另一解法,采用变体型变量和直接在控件中交换数据,编写的程序代码如下,(例 3.9a)
说明,对于初学者来说,为了节省时间,有时可以不采用 Dim等语句声明就直接使用变量 (默认为变体型,如 t)。但在规范的软件开发中,通常都要求程序中使用的变量必须预先声明。
Private Sub Command1_Click()
Dim t As String,a As String,b As String
t = a
a = b
b = t
Text1.Text = a
Text2.Text = b
End Sub
缺少“输入”。即没有从文本框中取到要处理的数据错例一,(例 3.9b)
奇怪! 在两个文本框中显示都是空白!
想一想错在哪?
Private Sub Command1_Click()
Dim t As String,a As String,b As String
a = Text1.Text
b = Text2.Text
t = a
a = b
b = t
End Sub
错例二,(例 3.9c)
好像在窗体上没有看到处理结果!
缺少“输出”。即没有把处理后的内存变量内容传送给文本框
Private Sub Command1_Click()
Dim t As String,a As String,b As String
a = Val(Text1.Text)
b = Val(Text2.Text)
t = a
a = b
b = t
Text1.Text = a
Text2.Text = b
End Sub
错例三,(例 3.9d) 想一想错在哪?
如果输入的是非数字文本,结果会怎样呢在窗体上设置三个命令按钮 (图 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