《第3章 数据的输入与输出》由会员分享,可在线阅读,更多相关《第3章 数据的输入与输出(57页珍藏版)》请在金锄头文库上搜索。
1、第第3 3章章 数据的输入与输出数据的输入与输出第第3 3章章 数据的输入与输出数据的输入与输出 输输入入与与输输出出是是程程序序设设计计中中的的重重要要环环节节。没没有有输输出出操操作作的的程程序序不不会会有有什什么么实实用用价价值值,而而没没有有输输入入的的程程序序则则缺缺乏乏灵灵活活性性。VB提提供供了了多多种种手手段段使使输输入入输输出出操操作作灵灵活活、多多样样、方方便便和直观。和直观。 本章介绍本章介绍VB的输入、输出操作,以及与之有关的控件。的输入、输出操作,以及与之有关的控件。v3.1 数据输出数据输出 VB的的输输出出操操作作包包括括文文本本信信息息的的输输出出和和图图形形图
2、图像像的的输输出出,本章主要介绍文本信息的输出。本章主要介绍文本信息的输出。3.1.1 Print3.1.1 Print方法方法 在在早早期期版版本本的的BASIC语语言言中中,数数据据的的输输出出主主要要通通过过Print语句来实现。在语句来实现。在VB中中Print是作为对象的方法来使用的。是作为对象的方法来使用的。1. 使用使用Print方法方法 使使用用Print方方法法可可以以在在窗窗体体上上输输出出文文本本字字符符串串或或表表达达式式的的值,其语法格式为:值,其语法格式为:对象名称对象名称. Print 表达式列表表达式列表 , | ; 其其中中,对对象象名名称称可可以以是是窗窗体
3、体(Form)、图图片片框框(PictureBox)或或打打印印机机(Printer)。如如果果省省略略“对对象象名名称称”,则在窗体上直接输出。,则在窗体上直接输出。 表表达达式式列列表表是是一一个个或或多多个个表表达达式式,可可以以是是数数值值表表达达式式或或字字符符串串。对对于于数数值值表表达达式式,将将输输出出表表达达式式的的值值;对对于于字字符符串串,则则照照原原样样输输出出。如如果果省省略略“表表达达式式列列表表”,则则输输出一个空行。出一个空行。【例例3-1】使使用用Print方方法法在在窗窗体体中中直直接接输输出出字字符符串串或或数数值值表达式的值,如图表达式的值,如图3-1所
4、示。所示。图图3-1 使用使用Print方法方法 【例例3-1】使使用用Print方方法法在在窗窗体体中中直直接接输输出出字字符符串串或或数数值值表达式的值,如图表达式的值,如图3-1所示。所示。命令按钮命令按钮Command1的的Click事件代码:事件代码:Private Sub Command1_Click() Print Print 2 * 3 + 4 =; 2 * 3 + 4 使用“;”分割符 Print 输出一个空行 Print 欢迎学习 Print , Visual 使用“,”分割符 Print , , Baisc 使用两个“,”分割符 Print Print 欢迎学习, 在行末
5、使用“,”分割符 Print Visual; BaiscEnd Sub2. 与与Print方法有关的函数方法有关的函数 为为了了使使数数据据按按指指定定的的位位置置输输出出,VB提提供供了了几几个个与与Print相配合的函数。相配合的函数。 (1) Tab函数函数 在在Print方方法法中中,可可以以使使用用Tab函函数数来来对对输输出出进进行行定定位位。其格式为:其格式为:Tab( n ) 其其中中n为为数数值值表表达达式式,其其值值为为一一整整数数。Tab函函数数把把显显示示或或打打印印位位置置移移到到由由参参数数n指指定定的的列列数数,从从此此列列开开始始输输出出数数据据。要要输出的内容
6、放在输出的内容放在Tab函数后面,并用分号隔开。例如:函数后面,并用分号隔开。例如:Print Tab(10);姓名;Tab(30);年龄 (2) Spc函数函数 在在Print方方法法中中,还还可可以以使使用用Spc函函数数来来对对输输出出进进行行定定位位。与与Tab函数不同,函数不同,Spc函数提供若干空格。其格式为:函数提供若干空格。其格式为:Spc( n ) 其其中中n为为数数值值表表达达式式,其其值值为为一一整整数数,表表示示在在显显示示或或打打印印时时下下一一个个表表达达式式之之前前插插入入的的空空格格数数。Spc函函数数与与输输出出项项之之间用分号隔开。例如:间用分号隔开。例如:
7、Print ABC;Spc(5);DEF 输出:ABC DFE 当当Print方方法法与与不不同同大大小小的的字字体体一一起起使使用用时时,使使用用Spc函函数数打打印印的的空空格格字字符符的的宽宽度度总总是是等等于于选选用用字字体体内内以以磅磅数数为为单单位位的所有字符的平均宽度。的所有字符的平均宽度。【例例3-2】在在上上例例中中使使用用Tab函函数数与与Spc函函数数,只只需需改改写写命命令按钮的令按钮的Click事件代码:事件代码:Private Sub Command1_Click() Print Print Tab(5); 2 * 3 + 4 =; 2 * 3 + 4 Print
8、Print Tab(6); 欢迎学习; Tab(17); Visual Baisc Print Print Tab(7); 欢迎学习; Spc(3); Visual; Spc(2); BaiscEnd Sub3. Print方法的精确定位方法的精确定位 要要精精确确地地把把文文本本输输出出到到窗窗体体、图图片片框框或或打打印印页页上上,可可以以使使用用位位置置属属性性(CurrentX和和CurrentY)与与文文本本的的高高度度宽宽度度方法(方法(TextHeight和和TextWidth)。)。 CurrentX和和CurrentY属属性性分分别别用用来来返返回回或或设设置置当当前前输输出
9、出位位置置的的横横坐坐标标与与纵纵坐坐标标,TextHeight和和TextWidth方方法法则则分分别别可可以以返返回回一一个个字字符符串串文文本本的的高高度度值值和和宽宽度度值值。其其单单位均为位均为Twip。 TextHeight和和TextWidth方法的格式为:方法的格式为: 对象名称对象名称 . TextHeight(字符串字符串) 对象名称对象名称 .TextWidth(字符串字符串)其中,其中, 对象名称对象名称 可以是窗体、图片框或打印机对象。可以是窗体、图片框或打印机对象。【例例3-3】下下面面程程序序把把字字符符串串文文本本“计计算算机机等等级级考考试试”输输出出到窗体的
10、中间,如图到窗体的中间,如图3-3所示。所示。 只需编写窗体的只需编写窗体的Click事件代码:事件代码:Private Sub Form_Click () Dim textW As Integer, textH As Integer Print Text$ = 计算机等级考试 textW = TextWidth(Text) / 2 文本的宽度TextWidth(Text) textH = TextHeight(Text) / 2 CurrentX = ScaleWidth / 2 - textW 窗体的宽度属性ScaleWidth CurrentY = ScaleHeight / 2 - t
11、extH 设置垂直位置 Print TextEnd Sub4. 字形与字体字形与字体 如如果果要要控控制制所所显显示示或或打打印印文文本本的的大大小小和和外外观观,可可以以用用FontName、FontSize、FontItalic、FontBold、FontStrikeThru、 FontTransparent和和 FontUnderline属属性性。这这些些属属性性既既可可以以在在属属性性窗窗口口设设置置(设设置置窗窗体体的的Font属属性),也可以在代码中通过性),也可以在代码中通过“赋值赋值”语句进行设置。语句进行设置。图图3-4 使用字体属性使用字体属性【例例3-4】下下面面程程序序
12、按按指指定定尺尺寸寸、颜颜色色和和外外观观,把把文文本本输输出出到窗体的中间(图到窗体的中间(图3-4)。)。命令按钮的命令按钮的Click事件代码:事件代码:Private Sub Command1_Click() Dim a As String, textW As Integer, textH As Integer FontName = 隶书 输出文本的字体 FontSize = 60 输出字体的大小 ForeColor = QBColor(15) 输出文本的前景色,即字体的颜色 BackColor = QBColor(8) 输出文本的背景色,即窗体的颜色 text = 你好 输出文本的内
13、容 textW = TextWidth(text) / 2 文本的宽度TextWidth(text) textH = TextHeight(text) - Command1.Height / 2 CurrentX = ScaleWidth / 2 - textW 设置输出的水平位置 CurrentY = ScaleHeight / 2 - textH 设置输出的垂直位置 Print text 输出文本End Sub 说说明明:属属性性ScaleWidth与与ScaleHeight分分别别表表示示窗窗体体内内的宽度与高度。的宽度与高度。5. 清除方法清除方法CLS Cls方方法法可可以以清清除除
14、Form或或PictureBox中中由由Print方方法法和和图图形形方方法法在在运运行行时时所所生生成成的的文文本本或或图图形形,清清除除后后的的区区域域以以背背景景色色填填充充。设设计计时时使使用用Picture属属性性设设置置的的背背景景位位图图和和放放置的控件不受置的控件不受Cls影响。影响。Cls方法的语法为:方法的语法为: 对象名称对象名称 . Cls 其其中中“对对象象名名称称”可可以以是是窗窗体体(Form)或或图图片片框框(PictureBox),如如果果省省略略“对对象象名名称称”,则则清清除除窗窗体体上上由由Print方法和图形方法在运行时所生成的文本或图形。方法和图形方
15、法在运行时所生成的文本或图形。【例例3-5】在在上上例例中中使使用用Cls方方法法清清除除窗窗体体中中由由Print方方法法所所生成的文本,如图生成的文本,如图3-5所示。所示。图图3-5 使用使用Cls方法方法 只只需需在在上上例例中中增增加加命命令令按按钮钮Command2(清清除除),并并且且编写其编写其Click事件代码:事件代码:Private Sub Command2_Click() ClsEnd Sub 6. 输出文本到图片框输出文本到图片框 图图片片框框(PictureBox)控控件件可可以以输输出出图图形形、图图像像和和文文本本,还还可可以以像像窗窗体体一一样样作作容容器器包
16、包含含其其他他的的控控件件。不不仅仅如如此此,图图片片框框控控件件具具有有窗窗体体的的上上述述属属性性和和方方法法,因因此此前前面面的的例例子子完完全适用于图片框。全适用于图片框。【例例3-6】使使用用Print方方法法在在图图片片框框中中输输出出字字符符串串或或数数值值表表达式的值,如图达式的值,如图3-6所示。所示。图图3-6 在图片框中输出字符串或数值表达式的值在图片框中输出字符串或数值表达式的值 编写窗体的编写窗体的Activate事件代码:事件代码:Private Sub Form_Activate() Dim a As String, textW As Integer, textH
17、 As Integer Picture1.FontName = 隶书 Picture1.FontSize = 40 Picture1.ForeColor = QBColor(15) Picture1.BackColor = QBColor(8) a = 你好 textW = Picture1.TextWidth(a) / 2 textH = Picture1.TextHeight(a) / 2 Picture1.CurrentX = Picture1.Width / 2 - textW Picture1.CurrentY = Picture1.Height / 2 - textH Pictur
18、e1.Print aEnd Sub编写命令按钮编写命令按钮Command1的的Click事件代码:事件代码:Private Sub Command1_Click() Picture1.FontName = 宋体 Picture1.FontSize = 11 Picture1.ForeColor = QBColor(0) Picture1.BackColor = QBColor(15) Picture1.Cls Picture1.Print Picture1.Print Tab(2); 2 * 3 + 4 =; 2 * 3 + 4 Picture1.Print Picture1.Print Ta
19、b(3); 欢迎学习; Tab(17); Visual Baisc Picture1.Print Picture1.Print Tab(4); 欢迎学习; Spc(3); Visual; Spc(2); BaiscEnd Sub编写命令按钮编写命令按钮Command2的的Click事件代码:事件代码:Private Sub Command2_Click() Picture1.ClsEnd Sub 3.1.2 3.1.2 信息框函数信息框函数MsgBoxMsgBox MsgBox函函数数在在对对话话框框中中显显示示信信息息,等等待待用用户户单单击击按按钮钮,并并返返回回一一个个整整数数以以标标明
20、明用用户户单单击击了了哪哪个个按按钮钮。其其语语法法格格式式为:为:变变量量 = MsgBox(信信息息内内容容,对对话话框框类类型型,对对话话框框标标题题 )其其中中,信信息息内内容容指指定定在在对对话话框框中中出出现现的的文文本本,在在信信息息内内容容中中使使用用硬硬回回车车符符(CHR(13))可可以以使使文文本本换换行行。对对话话框框的的高高度度和和宽宽度度随随着着信信息息内内容容的的增增加加而而增增加加,最最多多可可有有1024个字符。个字符。 对对话话框框类类型型指指定定对对话话框框中中出出现现的的按按钮钮和和图图标标,一一般般有三个参数。其取值和含义见表有三个参数。其取值和含义见
21、表3-3、表、表3-4、表、表3-5。表表3-3 参数参数1出现按钮出现按钮值常量说明0vbOKOnly确定按钮1vbOKCancel确定和取消按钮2vbAbortRetryIgnore终止、重试和忽略按钮3vbYesNoCancel是、否和取消按钮4vbYesNo是和否按钮5vbRetryCancel重试和取消按钮表表3-4 参数参数2图标类型图标类型值常量说明16vbCritical停止图标32vbQuestion问号(?)图标48vbExclamation感叹号(!)图标64vbInformation信息图标表表3-5 参数参数3默认按钮默认按钮值常量说明0vbDefaultButton
22、1指定默认按钮为第一按钮256vbDefaultButton2指定默认按钮为第二按钮512vbDefaultButton3指定默认按钮为第三按钮 上述三种参数值可以相加以达到所需要的样式。上述三种参数值可以相加以达到所需要的样式。 3) 对对话话框框标标题题指指定定对对话话框框的的标标题题。下下述述代代码码将将显显示示如图如图3-8所示的对话框:所示的对话框:msg = MsgBox(请确认输入的数据是否正确!, 3 + 48 + 0, 数据检查)图图3-8 信息对话框信息对话框 4) Msgbox( )返返回回的的值值指指明明了了在在对对话话框框中中选选择择哪哪一一个个按按钮,见表钮,见表3
23、-6。表表3-6 函数的返回值函数的返回值返回值常量按钮1vbOK确定按钮2vbCancel取消按钮3vbAbort终止按钮4vbRetry重试按钮5vbIgnore忽略按钮6vbYes是7vbNo否 5) 代码中的值可以是数值,也可以是数值常量。代码中的值可以是数值,也可以是数值常量。 6) 如果省略了某些可选项,必须加入相应的逗号分隔符。如果省略了某些可选项,必须加入相应的逗号分隔符。 7) 若不需要返回值,则可以使用若不需要返回值,则可以使用MsgBox的命令形式:的命令形式:MsgBox 信息内容信息内容,对话框类型对话框类型,对话框标题对话框标题 在在程程序序运运行行的的过过程程中中
24、,有有时时需需要要显显示示一一些些简简单单的的信信息息如如警警告告或或错错误误等等,此此时时可可以以利利用用“信信息息对对话话框框”来来显显示示这这些些内内容容。当当用用户户接接收收到到信信息息后后,可可以以单单击击按按钮钮来来关关闭闭对对话话框框,并返回单击的按钮值。并返回单击的按钮值。3.1.3 3.1.3 使用标签控件使用标签控件 Label控控件件显显示示的的文文本本用用户户不不能能直直接接修修改改。有有些些没没有有自自己己的的标标题题(Caption)属属性性的的控控件件(如如TextBox)可可以以用用Label标识。标识。1. 标签的属性标签的属性 在在标标签签中中显显示示的的文
25、文本本是是由由Caption属属性性控控制制的的,该该属属性性可可以以在在设设计计时时通通过过“属属性性”窗窗口口设设置置或或在在运运行行时时用用代代码码赋赋值值。标标签签具具备备控控件件的的一一些些共共有有属属性性,如如Name、Height、Width、Top、Left、Enabled、Visible、Font等等,同同时时也也具有一些自身的特殊属性,它们分别是:具有一些自身的特殊属性,它们分别是: 1) Alignment属属性性:该该属属性性用用于于设设置置标标签签文文本本的的对对齐齐方方式。式。 2) Autosize属属性性:该该属属性性决决定定控控件件是是否否能能自自动动调调整整
26、大大小小以以显显示示所所有有的的文文本本内内容容。若若属属性性设设置置为为True,则则自自动动调调整整标标签签的的大大小小,以以适适应应标标签签文文本本;若若设设置置为为False,则则标标签签保保持设计时所绘制的大小,不会自动调整大小。持设计时所绘制的大小,不会自动调整大小。 3) Backstyle属属性性:该该属属性性用用于于设设置置标标签签的的背背景景是是透透明明还还是是不不透透明明,其其取取值值有有0和和1两两种种,分分别别是是:0 透透明明,1 不透明。不透明。 4) Borderstyle属属性性:该该属属性性用用于于设设置置标标签签的的边边框框风风格格。其取值有其取值有0和和
27、1两种,分别是:两种,分别是: 0 - None(标标签签无无边边框框) 1 - Fixed Single(标标签有单线边框)签有单线边框) 5) WordWrap属属性性:自自动动换换行行。为为使使标标签签控控件件能能够够自自动动调调整整以以适适应应内内容容多多少少,必必须须将将AutoSize属属性性设设置置为为True可可水水平平扩扩充充以以适适应应Caption属属性性内内容容。为为使使Caption属属性性的的内内容容自自动动换换行行并并垂垂直直扩扩充充,则则要要将将WordWrap属属性性设设置置为为True。2. 标签的事件与方法标签的事件与方法 虽虽然然标标签签能能响响应应绝绝
28、大大多多数数的的事事件件,但但在在实实际际编编程程中中不不常常使使用用。标标签签常常用用的的方方法法是是Move方方法法,以以便便用用代代码码实实现现标标签签的移动和缩放。其语法格式为:的移动和缩放。其语法格式为:对象名. Move left, top, width, height 其其中中对对象象名名.可可以以是是窗窗体体、或或其其他他大大多多数数的的控控件件,如如果省略果省略对象名对象名.,则表示带有焦点的窗体。,则表示带有焦点的窗体。3. 标签的使用标签的使用 标标签签可可用用于于显显示示静静态态的的、不不允允许许用用户户修修改改的的文文本本信信息息。由由于于标标签签可可很很方方便便地地
29、进进行行输输出出定定位位,设设置置文文本本字字体体及及颜颜色色等等,故故比比Print方方法法要要灵灵活活方方便便得得多多,是是Visual Basic中中显显示示文文本本信信息息的的主主要要控控件件。利利用用标标签签透透明明的的特特点点,还还可可用用来来设计动态文字。设计动态文字。【例例3-7】有有框框和和无无框框的的标标签签,可可在在运运行行时时改改变变标标签签的的尺尺寸寸和内容,如图和内容,如图3-9所示。所示。图图3-9 有框和无框的标签有框和无框的标签 编写命令按钮编写命令按钮Command1的单击(的单击(Click)事件代码:)事件代码:Private Sub Command1_
30、Click() Label1.Caption = 运行时改变标签的标题 Label2.Caption = 对于一个较长的或在运行时可能变化的标题, & _ 标签控件提供了两种属性:AutoSize和WordWrap来改变 & _ 控件尺寸以适应较长或较短的标题。End Sub 【例例3-8】利利用用标标签签制制作作阴阴影影文文字字效效果果,如如图图3-11所所示示。单单击击“效效果果1”按按钮钮后后文文字字的的阴阴影影效效果果如如图图3-12(左左)所所示示。单单击击“效效果果2”按按钮钮后后文文字字阴阴影影的的间间距距加加大大,如如图图3-12(右右)所示。所示。 图图3-11 阴影文字效果
31、阴影文字效果 编写编写Command1的的Click事件代码:事件代码:Private Sub Command1_Click() Label1.Top = Label2.Top + 20 设置阴影较文字向下偏移20 Label1.Left = Label2.Left + 20 设置阴影较文字向右偏移20End Sub 编写编写Command2的的Click事件代码:事件代码:Private Sub Command2_Click() Label1.Top = Label2.Top + 40 设置阴影较文字向下偏移40 Label1.Left = Label2.Left + 40 设置阴影较文字向
32、右偏移40End Subv3.2 数据输入数据输入 在在VB中中,允允许许用用户户输输入入文文本本信信息息的的最最直直接接的的方方法法是是使使用用文本框。另外,还可以通过输入框,来实现信息的交流。文本框。另外,还可以通过输入框,来实现信息的交流。3.2.1 3.2.1 使用使用“文本框文本框”控件控件 文文本本框框(TextBox)是是一一种种通通用用控控件件,可可以以由由用用户户输输入入或或显显示示文文本本。缺缺省省时时,文文本本框框只只能能输输入入单单行行文文本本,并并且且输输入入的的字字符符最最多多为为2048个个。若若将将控控件件的的MultiLine属属性性设设置置为为True,则则
33、可可以以输输入入多多行行文文本本,并并且且文文本本的的内内容容可可多多达达32KB。1. 文本框的属性文本框的属性 文本框的主要属性见表文本框的主要属性见表3-10。表表3-10 文本框的属性文本框的属性名称取值说明Text文本框中包含的文本内容。MultiLineTrue、False该属性值为True时可以接收多行文本。EnabledTrue、False决定控件是否可用。ScrollBars0、1、2、30 - 没有滚动条,1 - 水平,2 - 垂直,3 - 同时具有水平及垂直。PassWordChar指定显示在文本框中的替代符,如一串“*”号等。主要用于口令的输入。MaxLength指定显
34、示在文本框中的字符数,超出部分不接收,并同时发出嘟嘟声。VisibleTrue、False决定控件是否可见。LockedTrue、False决定控件是否可编辑。【例例3-9】输输入入球球体体的的半半径径,然然后后计计算算并并输输出出球球体体的的体体积积和和表面积,如图表面积,如图3-14所示。所示。图图3-14 计算球的体积和表面积计算球的体积和表面积 分分析析:设设球球的的半半径径为为r,球球体体积积和和球球表表面面积积分分别别为为:v和和f,依题义可得计算公式:,依题义可得计算公式:、 编写命令按钮编写命令按钮Command1的的Click事件代码:事件代码:Private Sub Com
35、mand1_Click() Dim r As Single, v As Single, f As Single Const pi = 3.14159 r = Val(Text1.Text) v = 4 / 3 * pi * r 3 : f = 4 * pi * r 2 Text2.Text = v : Text3.Text = fEnd Sub 编写命令按钮编写命令按钮Command2的的Click事件代码:事件代码:Private Sub Command2_Click() Unload MeEnd Sub 说说明明:代代码码r = Val(Text1.Text)中中使使用用了了转转换换函函数
36、数Val()将将文文本本框框中中的的内内容容转转换换为为数数值值型型数数据据,以以便便处处理理。如如果果不不转转换,可能出现数据类型不匹配的情况。换,可能出现数据类型不匹配的情况。2. 文本框的事件文本框的事件 文文本本框框可可以以接接受受许许多多事事件件,其其中中最最常常用用的的是是Change(改改变变)事事件件和和GotFocus(得得到到焦焦点点)事事件件。Change事事件件当当用用户户改改变变正正文文或或通通过过代代码码改改变变Text属属性性的的设设置置时时发发生生;而而当当控控件件接接收收焦焦点点时时,会会引引发发GotFocus事事件件,当当控控件件失失去去焦点时,会引发焦点
37、时,会引发LostFocus(失去焦点)事件。(失去焦点)事件。【例例3-10】单单位位发发工工资资,设设某某职职工工应应发发工工资资x元元,试试求求各各种种票额钞票总张数最少的付款方案。票额钞票总张数最少的付款方案。 分分析析:可可以以从从最最大大的的票票额额(100元元)开开始始,算算出出所所需需的的张张数数,然然后后在在剩剩下下的的部部分分算算出出较较小小票票额额的的张张数数,直直到到最最小小票额(票额(1元)。元)。图图3-15 求各种票额的付款方案求各种票额的付款方案 编写命令按钮编写命令按钮Command1的的Click事件代码:事件代码:Private Sub Command1_
38、Click() x = Val(Text1.Text) x为实发工资数 y = x 100 : Text2.Text = y 求百元票张数并显示 x = x - 100 * y 求剩余款项 y = x 50 : Text3.Text = y 求五十元票张数并显示 x = x - 50 * y 求剩余款项 y = x 10 : Text4.Text = y 求十元票张数并显示 x = x - 10 * y 求剩余款项 y = x 5 : Text5.Text = y 求五元票张数并显示 x = x - 5 * y 求剩余款项 y = x 2 : Text6.Text = y 求二元票张数并显示
39、x = x - 2 * y : Text7.Text = x 求一元票张数并显示End Sub编写文本框编写文本框Text1的的Change事件代码:事件代码:Private Sub Text1_Change() Text2.Text = Text3.Text = Text4.Text = Text5.Text = Text6.Text = Text7.Text = End Sub 说说明明:当当在在输输入入框框中中输输入入工工资资数数的的时时候候,Change事事件件发生,此时将清除其他各文本框中的内容。发生,此时将清除其他各文本框中的内容。3. 使用焦点使用焦点 焦焦点点(Focus)就就
40、是是光光标标,当当对对象象具具有有“焦焦点点”时时才才能能响响应应用用户户的的输输入入,因因此此也也是是对对象象接接收收用用户户鼠鼠标标单单击击或或键键盘盘输输入入的的能能力力。在在Windows环环境境中中,在在同同一一时时间间只只有有一一个个窗窗口口、窗窗体体或或控控件件具具有有这这种种能能力力。具具有有焦焦点点的的对对象象通通常常会会以以突出显示标题或标题栏来表示。突出显示标题或标题栏来表示。 当当文文本本框框具具有有焦焦点点时时,用用户户输输入入的的数数据据才才会会出出现现在在文文本本框中。框中。 仅仅当当控控件件的的Visible和和Enabled属属性性被被设设置置为为真真(Tru
41、e)时时,控控件件才才能能接接收收焦焦点点。某某些些控控件件不不具具有有焦焦点点,如如标标签签、框架、计时器等。框架、计时器等。 当当控控件件接接收收焦焦点点时时,会会引引发发GotFocus事事件件,当当控控件件失失去焦点时,会引发去焦点时,会引发LostFocus事件。事件。 可可以以用用SetFocus方方法法在在代代码码中中设设置置焦焦点点。如如在在例例3-10中中,编编写写窗窗体体的的Activate事事件件代代码码,其其中中调调用用SetFocus方方法法,使得程序开始时光标(焦点)位于输入框使得程序开始时光标(焦点)位于输入框Text1中:中:Private Sub Form_A
42、ctivate() Text1.SetFocusEnd Sub 另另 外外 , 在在 “计计 算算 ”按按 钮钮 的的 Click事事 件件 代代 码码 中中 调调 用用SetFocus方法,可以使光标重新回到输入框方法,可以使光标重新回到输入框Text1。 在程序运行的时候,可以按下列方法之一改变焦点:在程序运行的时候,可以按下列方法之一改变焦点:用鼠标单击对象。用鼠标单击对象。1) 按按Tab键键或或Shift+Tab在在当当前前窗窗体体的的各各对对象之间巡回移动焦点。象之间巡回移动焦点。2) 按热键选择对象。按热键选择对象。3.2.2 3.2.2 输入框函数输入框函数InputBoxIn
43、putBox InputBox函函数数显显示示一一个个能能接接受受用用户户输输入入的的对对话话框框,并并返返回用户在对话框中输入的信息。其语法格式为:回用户在对话框中输入的信息。其语法格式为:变变量量 = InputBox(信信息息内内容容,对对话话框框标标题题,默默认认内内容容 )说明:说明: 1) 信信息息内内容容指指定定在在对对话话框框中中出出现现的的文文本本。在在信信息息内内容容中中使使用用硬硬回回车车符符(CHR(13))可可以以使使文文本本换换行行。对对话话框框的的高高度度和和宽宽度度随随着着信信息息内内容容而而增增加加,最最多多可可有有1024个字符。个字符。 2) 对话框标题对
44、话框标题指定对话框的标题。指定对话框的标题。3.2.2 3.2.2 输入框函数输入框函数InputBoxInputBox InputBox函函数数显显示示一一个个能能接接受受用用户户输输入入的的对对话话框框,并并返返回用户在对话框中输入的信息。其语法格式为:回用户在对话框中输入的信息。其语法格式为:变变量量 = InputBox(信信息息内内容容,对对话话框框标标题题,默默认认内内容容 )说明:说明: 3) 默默认认内内容容可可以以指指定定输输入入框框的的文文本本框框中中显显示示的的默默认认文文本本。如如果果用用户户单单击击“确确定定”按按钮钮,文文本本框框中中的的文文本本(字字符符串串)将将
45、返返回回到到变变量量中中,若若用用户户单单击击“取取消消”按按钮钮,返返回回的将是一个零长度的字符串。的将是一个零长度的字符串。 注注意意:如如果果省省略略了了某某些些可可选选项项,必必须须加加入入相相应应的的逗逗号号分分隔符。隔符。 4) InputBox函函数数返返回回包包含含文文本本框框内内容容的的字字符符串串(String类型)。类型)。【例例3-11】华华氏氏温温度度和和摄摄氏氏温温度度相相互互转转换换的的程程序序。输输入入一一个个华华氏氏温温度度可可以以得得到到相相应应的的摄摄氏氏温温度度,而而输输入入一一个个摄摄氏氏温温度度则则可可以以得得到到相相应应的的华华氏氏温温度度,如如图
46、图3-16所所示示。利利用用输输入入框输入温度(如图框输入温度(如图3-17所示)。所示)。 图图3-16 温度的转换温度的转换 图图3-17 输入温度值输入温度值 分析:设分析:设C为摄氏温度,为摄氏温度,F为华氏温度,则有:为华氏温度,则有: 因此可以得到:因此可以得到: 编写编写“摄氏转华氏摄氏转华氏”命令按钮命令按钮Command1的的Click事件事件代码:代码:Private Sub Command1_Click() c = Val(InputBox(请输入摄氏温度值:, 摄氏转华氏, 0) f = 32 + 9 * c / 5 Label1.Caption = 摄氏 & c &
47、度 = 华氏 & Format(f, #.#) & 度End Sub 编编写写“华华氏氏转转摄摄氏氏”命命令令按按钮钮Command2的的Click事事件件代码:代码:Private Sub Command2_Click() f = Val(InputBox(请输入华氏温度值:, 华氏转摄氏, 0) c = 5 * (f - 32) / 9 Label1.Caption = 华氏 & f & 度 = 摄氏 & Format(c, #.#) & 度End Subv3.3 打印机输出打印机输出 在在基基于于Windows的的应应用用程程序序操操作作中中,打打印印是是最最复复杂杂的的任任务务之之一一
48、。VB应应用用程程序序的的打打印印输输出出有有两两种种方方式式:直直接接输输出出与与窗窗体体输输出出。所所谓谓直直接接输输出出,就就是是将将输输出出内内容容直直接接送送往往打打印印机机。而而窗窗体体输输出出则则是是先先将将内内容容输输出出在在窗窗体体中中,然然后后将将窗窗体体上所显示的内容通过打印机输出。上所显示的内容通过打印机输出。3.3.1 3.3.1 直接输出直接输出 使使用用Printer对对象象的的Print方方法法,可可以以直直接接输输出出。与与窗窗体体或或图图片片框框一一样样,Printer对对象象是是一一个个与与设设备备无无关关的的图图片片空空间间,支支持持用用Print、PS
49、et、Line、PaintPicture和和Circle方方法法来来创创建建文文本本和和图图形形。窗窗体体或或图图片片框框中中几几乎乎所所有有与与文文本本和和图图形形有关的属性、方法,有关的属性、方法,Printer对象都可以使用。对象都可以使用。【例例3-12】下述代码将在打印机中直接打印出信息:下述代码将在打印机中直接打印出信息:Private Sub Form_Click() Printer.FontName = system Printer.FontSize = 24 Printer.FontItalic = True Printer.FontUnderline = True Prin
50、ter.Print 计算机等级考试 Printer.Print Visual Basic 语言 Printer.EndDocEnd Sub 上上述述过过程程中中的的属属性性、方方法法在在前前面面大大都都已已作作介介绍绍,只只是是加加上上了了对对象象名名Printer。因因此此属属性性的的设设置置针针对对打打印印机机,而而Print方法中的字符串也是送往打印机的。方法中的字符串也是送往打印机的。 代代码码中中的的EndDoc方方法法以以及及其其他他Printer对对象象特特有有的的属属性性和方法介绍如下。和方法介绍如下。1. Printer对象的属性对象的属性 1) 刻度(刻度(Scale)属性
51、,见表)属性,见表3-13。表表3-13 刻度属性刻度属性 名称说明ScaleMode该值表示对象坐标的度量单位。ScaleLeft和ScaleTop分别定义打印页左上角的x坐标和y坐标。通过改变ScaleLeft和ScaleTop的值,可改变打印页的左边距和上边距。ScaleWidth和ScaleHeight分别定义打印页的宽度和高度1. Printer对象的属性对象的属性 2) 定定位位属属性性:就就像像为为窗窗体体和和图图形形框框设设置置属属性性一一样样,可可为为Printer对对象象设设置置CurrentX和和CurrentY属属性性。这这两两个个属属性性决定决定Printer对象当前
52、页中的输出位置。对象当前页中的输出位置。 3) Copies属属性性:返返回回或或设设置置需需要要打打印印的的份份数数。在在设设计计时时不可用。不可用。 4) Duplex属属性性:返返回回或或设设置置一一个个值值,以以决决定定是是否否要要双双面面打印(若打印机支持该功能)。在设计时不可用。打印(若打印机支持该功能)。在设计时不可用。 5) Page属属性性:返返回回当当前前页页号号。VB保保持持一一个个已已打打印印页页数数的的计计数数器器,它它从从应应用用程程序序开开始始或或从从在在Printer对对象象上上上上次次使使用用EndDoc语句起计数。语句起计数。 6) PaperSize属属性
53、性:返返回回或或设设置置一一个个值值,该该值值指指出出当当前前打印机的纸张大小。在设计时是不可用。打印机的纸张大小。在设计时是不可用。 7) PrintQuality属属性性:返返回回或或设设置置一一个个值值,该该值值指指示示打打印机的分辨率。设计时不可用。印机的分辨率。设计时不可用。 8) Zoom属属性性:该该属属性性定定义义按按原原来来的的百百分分之之多多少少输输出出。默默认认值值为为100,指指定定输输出出将将按按实实际际尺尺寸寸的的百百分分之之百百来来打打印印。可可利利用用Zoom属属性性使使打打印印页页比比实实际际纸纸页页大大一一些些或或小小一一些些。例例如如,将将Zoom属属性性
54、设设置置为为50,可可使使打打印印页页看看起起来来只只是是实实际打印纸页长和宽的一半。际打印纸页长和宽的一半。 也也可可用用TextHeight和和TextWidt方方法法在在Printer对对象象中中定定位位文本。文本。2. Printer对象的方法对象的方法 1) EndDoc方方法法:用用于于终终止止发发送送给给Printer对对象象的的打打印印操操作,将文档释放到打印设备或后台打印程序。作,将文档释放到打印设备或后台打印程序。 2) KillDoc方法:用于立即终止当前打印作业。方法:用于立即终止当前打印作业。 3) NewPage方方法法:用用以以结结束束Printer对对象象中中的
55、的当当前前页页并并前进到下一页。前进到下一页。 说说明明:调调用用NewPage时时,它它将将Printer对对象象的的Page属属性性加加1。3.3.2 3.3.2 窗体输出窗体输出 使使用用窗窗体体的的PrintForm方方法法可可以以将将窗窗体体中中的的所所有有信信息息传传送到打印机。送到打印机。 要要用用PrintForm方方法法打打印印应应用用程程序序中中的的信信息息,需需先先将将该该信信息息显显示示在在窗窗体体中中,然然后后再再用用PrintForm打打印印窗窗体体。语语法法如下:如下:窗体名窗体名.PrintForm 若若省省略略窗窗体体名名称称,则则Visual Basic打打
56、印印当当前前窗窗体体。PrintForm打打印印窗窗体体的的全全部部内内容容,即即使使窗窗体体的的某某部部分分在在屏屏幕幕上上见见不不到到。打打印印结结束束后后,PrintForm调调用用EndDoc方方法法清清空打印机。空打印机。v3.4 使用框架控件使用框架控件 如如同同图图片片框框一一样样,框框架架(Frame)控控件件是是一一种种容容器器控控件件,在在框框架架控控件件内内部部的的控控件件可可以以随随控控件件一一起起移移动动,并并且且受受到到框框架控件某些属性(架控件某些属性(Visible、Enabled)的控制。)的控制。 在在多多数数情情况况下下只只需需使使用用框框架架控控件件将将
57、其其他他控控件件分分成成可可标标识识的的控控件件组组,而而不不必必响响应应框框架架控控件件的的事事件件。需需要要修修改改的的可可能能是框架控件的是框架控件的Name、Caption或或Font属性。属性。 使使用用Frame控控件件将将其其他他控控件件分分组组时时,应应该该首首先先绘绘制制Frame控控件件,然然后后激激活活Frame控控件件,再再绘绘制制其其中中的的控控件件,这样才能使框架及其上的控件一起移动。这样才能使框架及其上的控件一起移动。 如如果果要要用用框框架架将将现现有有的的控控件件分分组组,则则可可先先选选定定所所有有控控件件,将将它它们们剪剪切切到到剪剪贴贴板板,然然后后选选
58、定定Frame控控件件并并将将剪剪贴贴板板上上的控件粘贴到的控件粘贴到Frame控件上。控件上。图图3-19 利用利用“框架框架”修饰窗体修饰窗体【例例3-14】利利用用“框框架架”修修饰饰例例3-10中中的的窗窗体体,如如图图3-19所示。所示。 下下面面在在例例3-10的的基基础础上上修修改改原原窗窗体体,首首先先将将欲欲放放入入框框架架中中的的控控件件多多重重选选定定(图图3-20左左),按按Ctrl+X组组合合键键或或常常用用工工具具栏栏中中的的“剪剪切切”按按钮钮,将将其其剪剪切切到到剪剪贴贴板板中中。然然后后在在窗窗体体中中画画出出框框架架控控件件,选选中中后后(图图3-20中中),按按Ctrl+V组组合合键键或或常常用用工工具具栏栏中中的的“粘粘贴贴”按按钮钮,将将原原有有控控件件移移回回“框框架架”中中,调调整整其其位位置置(图图3-20右右),并将并将“框架框架”的的Caption属性设为空。属性设为空。 也也可可以以先先在在空空白白窗窗体体中中画画出出框框架架控控件件后后,逐逐一一添添加加其其他他控件,但要注意,每次添加都要首先选中框架。控件,但要注意,每次添加都要首先选中框架。说明:框架控件除了能够修饰窗体外,还有一个重要的功说明:框架控件除了能够修饰窗体外,还有一个重要的功能,就是用来对选项按钮进行分组,参见能,就是用来对选项按钮进行分组,参见4.6。