第四章 基本的控制结构
主要内容
● 顺序结构
● 输入函数(过程)InputBOX
● 输出函数(过程)MsgBox
● 选择结构(If、Select Case、Iif、Shoose、Switch)
● 循环结构(For … Next、Do … Loop、While … Wend)
● 其他辅助控制语句(Goto 、Exit、End、With)
● 常用算法(累加 连乘 特殊数类 穷举法 递推法 最大和最小值)
4.1 顺序结构
一. 赋值语句
形式: [LET]变量名=表达式
作用: 将表达式的值赋值给变量名。
一般用于给变量赋值或对控件设定属性值.
[例] sRate!=0.1
Text1.Text = "欢迎使用Visual Basic 6.0”
说明:
(1)当表达式结果为数值类型而与变量的精度不同时,强制转换成左边变量的精度。如:
iA% = 10/3 iA中的结果为3,而表达式为3.33333
n%=11/2 结果n的值为6(四舍五入), 而表达式为5.5
(2)当表达式是数字字符串,左边变量是数值类型,自动转换成数值类型,再赋值。但如有非数字字符或空串,则出错。如:X% = "9/2"(出错)
(3)当逻辑型赋值给数值变量时,False 转成0,True转成-1后再赋给数值变量。
(4)当数值型表达式赋给逻辑型变量时,非0数值转成True,0值转成False后再赋给逻辑变量
(5)任何非字符类型表达式赋给字符变量一律转成字符类型赋给字符变量
[例] s$=True 结果s的值为 True
str$=1.23E+3 结果string的值为 ”1230”。
s$=5>11 结果s的值为 False
注意:
● 虽然赋值号与关系运算符等于号都用“=”表示,VB系统会根据所处的置自动判断是何种意义的符号。
● 赋值语句的左边只能是变量,不能是表达式,符号常量。
● 不能在同一个语句中同时给各个变量赋值。
● 正确理解类似 sum=sum+k 赋值语句的含义。
二、 与用户实现交互的函数和过程
Visual Basic与用户之间直接交互是通过InputBox函数、MsgBox函数和MsgBox过程进行的。
1. InputBox函数
格式:InputBox(提示[,标题][,缺省][,x 坐标位置][,y坐标位置])
其中:
“提示”:字符串表达式。表示在对话框中作为的提示信息;若要使提示信息在对话框中多行显示,必须在每行末加上chr(13)+chr(10)控制符或VB常数vbCrLf。
如:InputBox("一行" & vbCrLf & "二行" & vbCrLf & "三行", "标题", 1, 1000, 2000)
“标题”: 字符串表达式,对话框标题栏的标题,若缺省,则标题栏标题为应用程序名称。“缺省”:用户不在输入区输入数据,则函数返回这个输入区中的缺省值。函数返回的数据类型是字符类型。
“x 坐标位置,y坐标位置”:整型表达式,表示对话框出现在屏幕中的位置。
例要在屏幕上显示如下的对话框:
注意:
各参数位置次数必须一一对应,除了提示一项不可省,其余各项均可省略。处于中间的省略要用逗号占位符。
如果你在对话框中按下了取消按钮,那么函数将返回一个空字符串""(即使有默认值也是如此,这时如果直接赋给数值变量就会出现类型错误)。
InputBox也可以过程的形式使用,但此时它起不了输入的作用了。
[例4.1] 在mymb\vb4\ex4_1\lbc4_01.vbp
程序代码(form2):
Option Explicit
Dim strName As String
Private Sub MySub()
Dim strS1 As String
strS1 = "请输入你要借的的参考书名" + Chr(13) + Chr(10) _
& "然后单击确定"
strName = InputBox(strS1, "借书请求单", "学用 Visual Basic 6.0", 2000, 3000)
End Sub
Private Sub Command1_Click() '返回
Unload Me '删除窗体Form2
Form1.Show
End Sub
Private Sub Form_Load()
Form2.Caption = "借书通知单"
Call MySub
Label1.BorderStyle = 1
Label1.WordWrap = True
Label1.AutoSize = True
If (strName = "") Then ‘按下了取消按钮或Esc键
Label1.Caption = " 请你务必填好借书请求单,再来借书!"
Else '按下了确定按钮或回车键
Label1.Caption = "你要借的书“" & Trim(strName) + "”书库中还有,请到602书架去取。"
End If
End Sub
2. MsgBox函数和MsgBox过程
函数形式: 变量[%] = MsgBox(提示[,按钮][,标题])
过程形式: MsgBox 提示[,按钮][,标题]
“提示”:字符串表达式。表示字符串函数title作用在MsgBox对话框中的作为提示的信息;若要使提示信息在对话框中多行显示,必须在每行末加上chr(13)+chr(10)控制符。
“标题”: 字符串表达式,对话框标题栏的标题,若缺省,则标题栏标题为应用程序名称。
“按钮”:表示在对话框中显示的按钮个数和按钮形式,按钮设置值见下表。
按钮设置值及意义一览表
分组 | 内部常数 | 按钮值 | 描述 |
按钮数目 | vbOkOnly | 0 | 只显示“确定”按钮 |
vbOkCancel | 1 | 显示“确定”、“取消”按钮 | |
vbAbortRetryIgnore | 2 | 显示“终止”、“重试”、“忽略”按钮 | |
vbYesNoCancel | 3 | 显示“是”、“否”、“取消”按钮 | |
vbYesNo | 4 | 显示“是”、“否”按钮 | |
vbRetryCancel | 5 | 显示“重试”、“取消”按钮 | |
图 标 类 型 | vbCritical | 16 | 关键信息图标、红STOP标志 |
vbQuestion | 32 | 询问信息图标 ? | |
vbExclamation | 48 | 警告信息图标 ! | |
vbInformation | 64 | 信息图标 i | |
默 认 按 钮 | vbDefaultButton1 | 0 | 第1个按钮为默认(焦点按钮) |
vbDefaultButton2 | 256 | 第2个按钮为默认(焦点按钮) | |
vbDefaultButton3 | 512 | 第3个按钮为默认(焦点按钮) | |
vbDefaultButton4 | 768 | 第4个按钮为默认(焦点按钮) | |
模式 | vbApplicationModal | 0 | 应用模式 |
vbSystemModal | 4096 | 系统模式 | |
注意:
(1)四组按钮形式可以组合使用(可用内部常数形式或按钮值形式表示)。
(2)以应用模式建立的对话框,则必须响应对话框才能继续当前的应用程序;若以系统模式建立的对话框时,所有应用程序将被挂起,直到用户响应了对话框。
(3)MsgBox函数返回的是用户所选按钮的整数值;如果不需要MsgBox返回值,则可把MsgBox当作过程使用。
(4)各参数位置次数必须一一对应,处于中间的省略要用逗号占位符。
MsgBox函数返回所选按钮整数值的意义
内部常数 | 返回值 | 被单击的按钮 |
vbOk | 1 | 确定 |
vbCancel | 2 | 取消 |
vbAbort | 3 | 终止 |
vbRetry | 4 | 重试 |
vbIgnore | 5 | 忽略 |
vbYes | 6 | 是 |
vbNo | 7 | 否 |
[例4.2] 编一帐号和密码检验程序。
要求:
帐号不超过6位数字,有错,清除原内容再输入。
密码输入时在屏幕上以 “*”代替; 若密码错,显示有关信息,选择“重试”按钮,清除原内容再输入,选择“取消”按钮,停止运行。
分析:
帐号6位,MaxLength为6 , LostFocus判断数字IsNumeric函数
密码PassWordChar为“*”,MsgBox函数设置密码错对话框.
[例4.2] 在mymb\vb4\ex4_2\lbc4_02.vbp
程序代码:
Private Sub Form_Load()
Label1.BorderStyle = 1
Label1.Caption = "帐号"
Label2.BorderStyle = 1
Label2.Caption = "密码"
Command1.Caption = "确定"
Text1.Text = ""
Text1.MaxLength = 6 '帐号文本框允许输入文字的个数
Text1.TabIndex = 0 '启动焦点在帐号文本框
Text2.Text = ""
Text2.MaxLength = 4 '口令文本框允许输入文字的个数
Text2.PasswordChar = "*" '设置口令保密字符属性
End Sub
Private Sub Text1_LostFocus() ‘丢焦事件
If Not IsNumeric(Text1.Text) Then ‘IsNumber 是一个判断函数
MsgBox "帐号中有非数字字符", , "重新输入" 'MsgBox作为过程使用
Text1.Text = ""
Text1.SetFocus '焦点仍回到Text1上
End If
End Sub
Private Sub Command1_Click()
Dim i As Integer
If Text2.Text <> "gong" Then
i = MsgBox("密码输入错误", vbRetryCancel + vbExclamation, "输入密码")
If i <> vbRetry Then '如果没有按下重试键,则结束程序运行
End
Else
Text2.Text = ""
Text2.SetFocus
End If
Else
MsgBox "输入正确,可以进行下一步程序", vbOKOnly, "继续"
Form2.Hide
End If
End Sub
重要提示
为了方便使用InputBox和MsgBox函数,可以在分别在它们的相应参数之前加上关键字Prompt:=、Title:=、Buttons:=、Xpos:=、Ypos:=、Default:=,这样使用起来就直观明了了,同时也不要顾及参数顺序和使用“,”号占位符。另外,在MsgBox中的按钮值和返回值的判断上尽量使用VB内部常数,不要使用数值(不直观且难记)。
例如:
MsgBox Title:="密码输入", buttons:=vbYesNo, prompt:="输入错误!"
Book = InputBox(Title:="借书请求", ypos:=4000, xpos:=2000, prompt:="请你输入要借的书名", Default:="VB6.0程序设计")
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论