- 零基础学Visual Basic第2版
- 李俊民 赵东等编著
- 1658字
- 2024-12-20 23:53:23
4.3 输入输出函数
输入输出对于每一个编程语言都是至关重要的。它们就像人的耳朵、眼睛和嘴巴,担任着与外界交流的重要任务。Visual Basic的输入输出有着十分丰富的内容和形式,它提供了多种手段,例如前面用过的Print方法,文本框输入输出等。本节为了方便在后面章节中使用,在此将讲述Visual Basic编程中经常用到的InputBox和MsgBox输入输出函数。
4.3.1 InputBox 函数
InputBox函数用来弹出一个输入对话框,通过该对话框用户可以输入数据,并返回输入的数据。InputBox函数的通用格式为:
InputBox (prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
说明
InputBox函数的后面有对圆括号,圆括号内用逗号分隔的每一项都叫做参数。该函数一共有7个参数。方阔号括住的参数为可选参数,可以不写。
InputBox函数的每一个参数的含义如下所示。
(1)prompt:是一个字符串,其长度不得超过1024个字符,它是在对话框内显示的信息,用来提示用户输入。在对话框内显示prompt时,可以自动换行。如果想按自己的要求换行,则须插入回车换行操作,即:
Chr$(13) & Chr$(10) 或vbCrLf
(2)title:字符串,它是对话框的标题,显现在对话框顶部的标题区。
(3)default:字符串,用来显示输入缓冲区的默认信息。也就是说,在执行InputBox函数后,如果用户没有输入任何信息,则可用此默认字符串作为输入值;如果用户不想用这个默认字符串作为输入值,则可在输入区直接键入数据,以取代默认值;如果省略该参数,则对话框的输入区为空白,等待用户键入信息。
(4)xpos,ypos:是两个整数值,分别用来确定对话框与屏幕左边的距离(xpos)和上边距离(ypos),它们的单位均为twip。这两个参数必须全部给出,或者全部省略。如果省略这一对位置参数,则对话框显示在屏幕中心线向下约三分之一处。
(5)helpfile,context:helpfile是一个字符串变量或字符串表达式,用来表示帮助文件的名字;context是一个数值变量或表达式,用来表示相关帮助主题的帮助目录号。这两个参数必须同时提供或同时省略。当带有这两个参数时,将在对话框中出现一个“帮助”按钮,单击该按钮或按F1键,可以得到有关的帮助信息。
【实例4.1】编写程序,试验InputBox函数的功能。
01 Private Sub Form_Click() 02 Dim str1 As String 03 Dim str2 As String 04 Dim str3 As String 05 Dim msg As String 06 Dim stuname As String 07 str1 = "输入学生姓名" 08 str2 = "输入后按回车键" 09 str3 = "或单击'确定'按钮" 10 msg = str1 & vbCrLf & str2 & vbCrLf & str3 11 stuname = InputBox(msg, "InputBox 函数试验 ", "张三") 12 Print stuname 13 End Sub
【运行程序】上述过程用来建立一个输入对话框,并把InputBox函数返回的字符串赋值给变量stuname$,然后在窗体上显示该字符串。程序运行后,单击窗体,所显示的对话框如图4.2所示。
图4.2 实例4.1的输入对话框
【代码说明】在上面的过程中,代码第11行的InputBox函数使用了3个参数。第一个参数msg用来显示3行信息,通过vbCrLf常量换行。第二个参数“InputBox函数试验”用来显示对话框的标题。第三个参数“张三”是默认输入值,在输入区显示出来。在函数中省略了xpos、ypos、helpfile和context等4个参数。在使用InputBox函数时,应注意以下几点。
❑执行InputBox函数后,会产生一个对话框,提示用户输入数据,光标位于对话框底部的输入区中。如果第三个参数(default)不省略,则在输入区中显示该参数的值,此时如果按回车键或单击对话框中的“确定”按钮,则输入该默认值,并把它赋给一个变量;如果不想输入默认值,则可直接键入所需要的数据,然后按回车键或单击“确定”按钮输入。
❑在默认情况下,InputBox的返回值是一个字符串(不是变体类型)。也就是说,如果没有事先声明返回值变量的类型(或声明为变体类型),则当把该函数的返回值赋给这个变量时,Visual Basic总是把它作为字符串来处理。因此,当需要用InputBox函数输入数值,并且需要输入的数值参加运算时,必须在进行运算前用Val函数(或其他转换函数)把它转换为相应类型的数值,否则有可能会得到不正确的结果。如果正确地声明了返回值的变量类型(或者加了类型说明符),则可不必进行类型转换。
❑在执行InputBox函数所产生的对话框中,有两个按钮,一个是“确定”,另一个是“取消”。在输入区输入数据后,单击“确定”按钮(或按回车键)表示确认,并返回在输入区中输入的数据;而如果单击“取消”按钮(或按Esc键),则使当前的输入作废,在这种情况下,将返回一个空字符串。
❑每执行一次InputBox函数只能输入一个值,如果需要输入多个值,则必须多次调用InputBox函数。输入数据并按返回键或单击“确定”后,对话框消失,输入数据必须作为函数的返回值赋给一个变量,否则输入的数据不能保留。在实际应用中,函数InputBox通常与循环语句和数组结合使用,这样可以连续输入多个值,并把输入的数据赋给数组中各元素。
❑和其他返回字符串的函数一样,InputBox函数也可以写成InputBox$的形式,这两种形式完全等价。
4.3.2 MsgBox 函数
在Windows操作中,经常会遇到一种小对话框,例如,关闭程序时会跳出一个类似于“是否真的退出程序”提示对话框,并根据用户的选择确定其后的操作。MsgBox函数就是实现这一功能的函数。通常称MsgBox函数调用的对话框为消息框。该函数的格式如下。
MsgBox(prompt[, buttons][, title][, helpfile, context])
1. MsgBox函数的参数
该函数有5个参数,除第一个以外,其他都是可选参数。各参数的含义如下。
(1)prompt:作为消息显示在对话框中的字符串表达式。prompt的最大长度大约是1024个字符。如果prompt中包含多个行,则可在各行之间用回车符 (Chr(13))、换行符 (Chr(10)) 或回车换行符的组合(Chr(13) & Chr(10)) 分隔。
(2)buttons:是一个数值表达式或常量表达式,用来控制显示按钮的数目和类型以及使用的图标样式,该参数的值由4类数值相加产生,这4类数值或符号常量分别表示按钮的类型、显示图标的种类、默认按钮的位置及强制返回,有关数值,请参阅表4.2。如果省略,则buttons的默认值为0,即对话框内只显示一个“确定”命令按钮,并把该按钮设置为默认按钮,不显示任何图标。
表4.2 buttons参数的取值
上述表中的数值分为4类,其作用如下。
❑数值0~5:对话框内按钮的类型和数量。按钮共有7种,即确认、取消、终止、重试、忽略、是、否。每个数值表示一种组合方式。
❑数值16、32、48、64:指定对话框所显示的图标。共有4种,其中16指定暂停;32表示疑问;48表示警告;64用于忽略。
❑数值0、256、512、768:指定默认按钮。
❑数值0、4096:分别用于应用程序和系统强制返回。
buttons参数由上面4类数值组成,其组成原则是:从每一类中选择一个值,把这几个值加在一起就是buttons参数的值(通常只使用前3类数值)。不同的组合会得到不同的结果。例如:
49=1+48+0显示“确定”、“取消”两个按钮,“警告”图标,默认按钮为第一个按钮,即“确定”按钮。
35=3+32+0显示“是”、“否”、“取消”3个按钮,“疑问”图标,默认按钮为第一个按钮。
buttons参数也可以写成常量累加的样式,类似于下面的表达式:
vbQuestion + vbYesNo + vbDefaultButton1显示“疑问”图标,“是”、“否”两个按钮,并设置第一个按钮为默认按钮。
(3)title:是一个字符串,用来显示对话框的标题。如果省略该参数,则对话框的标题为当前工程的名称。
(4)helpfile、context两个参数的含义同Input函数一样。
2. MsgBox函数的返回值
MsgBox函数的返回值与所选择的按钮有关。具体选择哪个按钮返回什么值,见表4.3。
表4.3 MsgBox函数的返回值
3. MsgBox函数应用
【实例4.2】下面的程序用来试验MsgBox函数的功能。
01 Private Sub Form_Click() 02 Dim x As Integer 03 x = MsgBox("您确认删除么?", vbQuestion + vbYesNo + vbDefaultButton1) 04 Print x 05 End Sub
【运行效果】程序运行后,单击窗体,运行结果如图4.3所示。
【代码说明】在上面的程序中,代码第03行的MsgBox函数有两个参数,第一个参数用来显示对话框内的信息,第二个参数是个常量累加表达式,具体意义为:第一个常量显示“疑问”图标,第二个常量显示“是”、“否”两个按钮,第三个常量的作用是让第一个按钮成为默认按钮。
说明
默认按钮是内部文字的周围有虚线框的按钮,如图4.3中的“是”按钮。这种按钮可以响应回车键,即回车就等于用鼠标单击它。
选择了MsgBox函数消息框内的按钮后,该函数会返回一个整数给变量x。如果选了“是”按钮,x就被赋值为6(见表4.3所示);如果选了“否”按钮,x就被赋值为7。最后一条语句用于在窗体上打印变量x中的值。
在编写实用的应用程序时,通常使用MsgBox函数的返回值来决定程序往下该怎么执行。例如上面的例子,可以根据x的值来决定是执行删除操作的代码,还是执行取消删除的代码。格式类似于:
图4.3 实例4.2的消息框
x = MsgBox("您确认删除么?", vbQuestion + vbYesNo + vbDefaultButton1) If x = 6 Then '添加删除代码 Else '添加取消删除的代码 End If
其中,If⋯Else⋯End if语句是程序设计语言里的一种语句结构,将其称为选择结构。If后面要写条件表达式。执行的过程是先判断If后面的条件是否为真,如果是真则执行If下面的语句块,如果为假则执行Else下面的语句块。在这段程序的执行过程中,这两块语句绝对不能同时执行,只能执行其中的一块,因为变量x只有两种值,要么是6,要么不是6,绝对不可能出现既是6又不是6的情况。具体选择结构的详细内容在本书第5章中讲述。
上面程序运行后先执行第一条语句右面的MsgBox函数,从而会出现一个消息框(参考图4.3),根据选择的按钮不同,赋予x的值也会不一样。如上所述,选择了“是”按钮x就会被赋值为6,条件表达式x=6的值就会为真,从而执行If语句下面的删除语句块;如果选择了“否”按钮x的值为7,条件表达式x=6的值就会为假,从而会执行Else语句下面的取消删除语句块。
4.3.3 MsgBox 语句
MsgBox函数也可以写成语句的形式,即:
MsgBox prompt[, buttons][, title][, helpfile, context]
各参数的含义及作用与MsgBox函数相同,只是不返回值,所以不必放到赋值表达式中。因而常用于较简单的信息显示。例如:
MsgBox "Hello World!"
说明
MsgBox函数和语句的区别在形式上是函数后面带括号,语句后面不带括号。函数因为有返回值所以只能写在表达式内,而语句没有返回值所以可以独立作为一个表达式。
由MsgBox函数和MsgBox语句所显示的消息框有一个共同特点,就是当出现消息框后,必须对其作出选择操作(单击某个按钮等),否则不能执行其他任何操作。这样的窗口成为“模态窗口”(模式窗口)。