一、print方法
print方法可以在窗体上显示文本字符串和表达式的值,并可在其它图形对象或打印机上输出信息。
1、语法说明
在vb中,print方法是用来输出信息的专用过程,显示的文本是作为图像来处理的,因此,print方法显示的文本字符串也往往作为图形文本。visual basic 允许在窗体、图形框和打印机用print方法显示文本字符串。
语法格式:
[对象]·Print [Spc(n)|Tab(n) expression charpos]
说明:
对象——指定文本显示的地方,可取的值:窗体名称、图片框名称或Printer(打印机),也可以是立即窗口(Debug)。如果省略“对象”,则指在当前窗体上输出。
Spc(n)——可选的,用来在输出中插入空白字符,这里n为要插入的空白字符数。
Tab(n)——可选的,用来将插入点定位在绝对列号上,这里n为列号。
Expreesion(表达式)——可选的,表示要打印的数值表达式或字符串表达式,如果省略,则打印一空行。
charpos——可选的,指定下一个字符的插入点,可以是分号、逗号,也可以省略。
例如,在不同的对象上分别打印消息“This is a testing message”。
★在名称为“MyForm”的窗体对象上显示;
MyForm. Print “This is a testing message.”
★在名称为“PicMiniMsg”的图片框对象上显示;
PicMiniMsg. Print “This is a testing message.”
★在当前窗体上显示;
Print “This is a testing message.” '省略对象
★在打印机上显示。
Printer. Print “This is a testingmessage.”
2、几种输出方法
对于Boolean数据,输出结果是:True或者False;
使用系统能识别的标准短日期格式书写Date数据。当日期或时间部件丢失或为零时,只书写已提供的部件;
如果Expressionlist(表达式)为空,则无内容书写。但如果Expressionlist值为Null,则输出Null。在输出Null关键字时,要把关键字正确翻译出来。
要把错误数据作为Error errorcode输出。在输出Error关键字时,要把关键字正确翻译出来。
如果在具有缺省显示空间的模块之外使用此方法,则需要对象。否则将导致错误。但,如果在窗体模块上进行调用,则会在窗体上显示。
注意:
- Print方法只能用于可显示文本的对象。
- 因为Print方法是按照字符比例进行打印,所以字符数与字符所占据的宽度固定的列的数目无关。如像W这样的宽字母占据的宽度超过一固定的列宽,而像i这样的窄字母占据的宽度则较小。所以,考虑到要使用比平均字符更宽的空间,表列一定要留有足够的余地。也可以使用固定间距的字体来确保每一字符均只占一列。
3、Print方法示例
被显示或被打印的项,可包括属性值、常数和变量(字符串或数字),也可以有表达式计算。Print方法可打印数字项的值。正数数值具有前导和一个尾部空格;负数数值用负数符号替代一个前导空格。
★如在窗体上显示字符串。
Private Sub Form_Paint()
Dim myvar As String myvar = "Come see me in the Immediate pane." Print myvar
End Sub
注意:
如:打印"12345678901234567890abcdefghijklmnopqrst"较长:
Private Sub Form_Paint()
Print "12345678901234567890abcdefghijklmnopqrst"
End Sub
则显示结果为:
如果要用Print方法来在单行上显示多个表达式或字符串时,可以用“;”号或“,”号分开,用分号(或空格)时,所有项目会并列显示,中间没有空格(也称紧凑输出格式)。用逗号时,则按标准输出格式(分区输出格式)显示数据项,在这种情况下,以14个字符位置为单位把一个输出行分为若干个区段,其长度由字体大小决定,逗号后面的表达式在下一个区段输出。
例1:
Private Sub Form_Paint()
Print "1234567890"; "1234567890", "1234567890"
End Sub
结果:

在缺省的情况下,每执行一次Print方法要自动换行。如果没有项,Print只是简单的跳到下一行,所以一系列的Print语句,自动使用不同的行。
例2:
Private Sub Form_Paint()
Print "这是第一行。" Print "这是第二行。"
End Sub
结果:

如果想将这两条语句放一行中,可在第一条语句后放分号或逗号。
结果:
Private Sub Form_Paint()
Print "这是第一行。",'加逗号 Print "这是第二行。"
End Sub |
Private Sub Form_Paint()
Print "这是第一行。";'加分号 Print "这是第二行。"
End Sub |

|

|
例3:
Private Sub Form_Paint()
Print "12345678901234567890" Print "姓名", "性别", "地址" Print "王成", "男", "上海" Print "李四", "男", "昆明"
End Sub
运行结果:

★Print指令中的表达式计算。
Print方法具有计算和输出双重功能,对于表达式,它先计算后输出。
例4:
Print "The answer is";10/2+3
VB输出结果:The answer is 8。
但Print方法没有赋值功能,例如:
x=5:y=10
Print z=(X+y)/3
不能打印出z=5。
二、format函数和区域识别
格式输出函数Format()可以使数值、日期按指定的格式输出。
一般格式:
Format(表达式,格式字符串)
其中表达式可以是数值型、日期型或字符型的表达式。该函数的功能是:按“格式字符串”指定的格式输出“表达式”的值。如果省略“格式字符串”,则函数的功能与Str函数基本相同。唯一的差别是,当把正数转换成字符串时,Str函数在字符串前面留有一个空格,而Format函数则不留空格。
1、日期格式化输出
Print 函数提供的命名格式,在运行时自动决定使用何种转换;命令格式输出的内容格式取决于计算机系统采用的(国家)语言格式,其真正的显示格式会因计算机上的“区域设置”(在“控制面板”的“区域和语言选项”中设置)不同而有所差异。
如:Print #11/24/1997# 在中国区域将显示为:1997-11-24。
若改变这种显示格式,可以使用Format函数。
如上例中,代码变为:
Private Sub Form_Click() x = #11/24/1997# y = Format(x, "yy,mm,dd") Print y End Sub
将显示为:97,11,24。
甚至还可以添加汉字,如上面例子,若将y = Format(x, "yy,mm,dd")变为y = Format(x, "yyyy年mm月dd日"),将显示为:1997年11月24日。
为了增加灵活性,Format函数还提供了命名格式可以在运行时自动决定使用何种转换,包括General date,long date,medium date,short date和long Time。使用命名格式产生基于用户的系统区域的输出。
例1:
Private Sub Form_paint()
Dim mydate, newdate1, newdate2, newdate3 ,newdate4 As Data mydate = #8/22/1997 5:22:20 PM# newdate1 = Format(mydate, "medium date") newdate2 = Format(mydate, "short date") newdate3 = Format(mydate, "long date") newdate4 = Format(mydate, "General date") Print newdate1, newdate2, newdate3 Debug.Print newdate1,newdate2,newdate3,newdate4
End Sub
例2:
Private Sub Form_Click()
Print Format(Time, "h点m分s秒ap/pm")
End Sub
其中Time是时间函数。功能是:返回系统的当前时间。
中国区域系统本身格式为:(hh:mm:ss)。使用Format函数后可以改变这种格式。
2、数字格式化输出
用Format函数可以使数值按“格式字符串”指定的格式输出。下面介绍这些字符(见下面的“格式说明字符”表格):
字符 |
作用 |
字符 |
作用 |
# |
数字,不在前面或后面补0 |
% |
百分比符号 |
0 |
数字,在前面或后面补0 |
$ |
美元符号 |
. |
小数点 |
+ - |
正、负号 |
, |
千位分隔逗号 |
E+ E- |
指数符号 |
说明:
(1)# 表示一个数字位。#的个数决定了显示区段的长度。如果要显示的数值的位数小于#的个数,多余的位不补0,如果要显示的数值的位数大于#的个数,则数值照原样显示。
(2)0与#功能相同,只是多余的位以0补齐。例如(在“立即”窗口中实验):
Print format$(25634,"00000000") <CR>
00025634
Print format$(25634,"########") <CR>
25634
(3).显示小数点。小数点与#或0结合使用,可以放在显示区段的任何位置。根据格式字符串的位置,小数部分多余的数字按四舍五入处理。例如:
Print format$(850.72,"###.##") <CR>
850.72
Print format$(7.876,"000.00") <CR>
007.88
(4),插入逗号。在格式字符串中插入逗号,起到“分位”作用,即从小数点开始,每3位用一个逗号分开。逗号可以放在小数点左边(不要放在头部和紧靠在小数点的尾部)的任何位置。例如:
Print format$(12345.67,"####,#.##") <CR>正确
12,345.67
Print format$(12345.67,"#,####.##") <CR>正确
12,345.67
Print format$(12345.67,",#####.##") <CR>错误
,12345.67
Print format$(12345.67,"#####,.##") <CR>错误
12.35
(5)% 输出百分号。通常放在格式字符串的尾部,用来输出百分号。例如:
Print format$(.257,"00.0%") <CR>
25.7%
(6)$ 输出美元符号。通常作为格式字符串的起始字符,在所显示的数值前加上一个“$”。例如:
Print format$(348.2,"$###0.00") <CR>
$348.20
(7)+、- 分别在所要显示的数值前强加上正号或负号。使显示的数值为正、负数。通常放在格式字符串的头部。例如:
Print format$(348.52,"-###0.00") <CR>
-348.52
Print format$(348.52,"+###0.00") <CR>
+348.52
Print format$(-348.52,"-###0.00") <CR>
- -348.52
Print format$(-348.52,"+###0.00") <CR>
- +348.52
(8)E+(E-) 用指数形式显示数值。两者作用基本相同。例如:
Print format$(3485.52,"0.00E+00") <CR>
3.49E+03
Print format$(3485.52,"0.00E-00") <CR>
3.49E03
Print format$(0.0348552,"0.00E+00") <CR>
3.49E-02
Print format$(0.0348552,"0.00E-00") <CR>
3.49E-02
例:
Private Sub Form_Click() Print Format$(12345.6, "000,000.00") Print Format$(12345.6, "###,###.##") Print Format$(12345.6, "###,##0.00") Print Format$(12345.6, "-###,##0.00") Print Format$(0.123, "0.00%") Print Format$(12345.6, "0.00E+00") Print Format$(0.1234567, "0.00E-00") End Sub
运行后,显示结果为:

三、Tab和Spc函数
使用tab和spc函数可以使用户得到整齐的输出格式。
1、Tab函数
tab函数使用语法:
Tab(column)
其中column为数值表达式。
Tab函数使currentx的值增加到column参数所定义的列位置,即输出定位到第column列的位置。使用tab函数可以在指定的位置上显示出排列整齐的输出。
例:在第1列输出“姓名”,在第10列输出“性别”,在第20列输出“地址”。
Private Sub Form_Paint()
Print "123456789012345678901234567890" Print Tab(1);"姓名"; Tab(10); "性别"; Tab(20); "地址" '注意用分号隔开
End Sub
2、Spc函数
spc函数用于显示指定数量的空格。
它的语法如下:
Spc(numspaces)
其中numspaces为0-32767之间的整数。
例1:在第一个字符串“姓名”后插入6个空格,在第二个字符串“性别”后插入6个空格并写上“地址”。
Private Sub Form_Paint()
Print "123456789012345678901234567890" Print "姓名"; Spc(6); "性别"; Spc(6); "地址"
End Sub
例2:打印“数字金字塔”(作业1-11)。
Private Sub Form_Click()
Dim i, j, k As Integer For i = 1 To 9 Print Spc(10) Print Spc(27 - 3 * i); For j = 1 To i Print j; Next For j = 1 To i - 1 Print i - j;
Next Next
End Sub
本题代码也可以为:
Private Sub Form_Click() Dim i, j As Integer For i = 1 To 9 For j = 1 To 2 * i - 1 If j <= i Then Print Tab(30 - 3 * (i - j)); j; Else Print 2 * i - j; End If Next j Print ; Next i End Sub
四、其它方法和属性
1、Cls方法
格式:[对象.]Cls
功能:清除由Print方法显示的文本或在图片框中显示的图形,并把光标移到对象的左上角。这里的“对象”是窗体或图片框,如果省略“对象”,则清除当前窗体内的显示内容。
说明:当窗体的背景是用Picture属性输入的图形时,不能用Cls方法清除,只能通过LoadPicture方法清除。
2、Move方法
格式:
[对象.]Move 左边距离 [,上边距离[,宽度[,高度]]]
功能:用来移动窗体和控件,并可改变其大小。其中“对象”是窗体及除计时器、采单之外的所有控件。如果省略“对象”,则默认为窗体。移动的单位是“twip”。
如果“对象”是窗体,则移动的标准是屏幕,如果“对象”是控件,则移动的基准是窗体。
例:在窗体上任意位置以任意大小放置一个文本框和图片框,编写程序移动它们的位置并改变大小。
Private Sub Form_Click() Move 800, 800, 3990, 2600 Text1.Move 200, 200, 1500, 1000 Picture1.Move 1800, 200, 1500, 1000 Picture1.Print "picture1" End Sub
3、TextHeight和TextWidth方法
格式:
[对象.]TextHeight(字符串)
[对象.]TextWidth(字符串)
功能:用来辅助设置坐标。其中TextHeight方法返回一个文本字符串的高度,而TextWidth方法用来返回一个文本字符串的宽度值,单位均为“twip”。当字符串的字体、大小不同时,所返回的值也不一样。
“对象”包括窗体和图片框,如果省略,则默认为当前窗体。
例:
Private Sub Form_Click() CurrentY = TextHeight("Microsoft") * 6 '下一个输出位置的Y坐标是字符串"Microsoft"高度的6倍。 CurrentX = 0 '下一个输出位置的X坐标 Print "Microsoft Visual Basic 6.0" Print Test$ = "Microsoft" Print Test Print TextHeight(Test), TextWidth(Test) '显示字符串Test$ 即"Microsoft"的高度值和宽度值。 FontSize = 18 Print Print Test Print TextHeight(Test), TextWidth(Test) '显示调整字体大小后的字符串Test$ 即 "Microsoft"的高度值和宽度值。 End Sub
运行界面:

4、CurrentX和CurrentY属性
功能:返回或设置下一次输出位置的水平(CurrentX)或垂直(CurrentY)坐标。这个属性只能在代码中使用,不能在设计时使用。坐标从对象的左上角起算(0,0)。
当字符串中含有回车Chr(13)、换行Chr(10)字符时,字符串的高度也随之增加,且有几个回车换行,其高度就增加几倍。
5、ScaleWidth和ScaleHeight 属性
ScaleWidth和ScaleHeight分别用来表示对象的宽度和高度值,把它们与CurrentX和CurrentY属性结合使用,可以使字符串居中显示。
例:
Private Sub Form_Click() FontSize = 12 Sample$ = "Microsoft Visual Basic 程序设计" x = (ScaleWidth - TextWidth(Sample)) / 2 y = (ScaleHeight - TextHeight(Sample)) / 2 CurrentX = x CurrentY = y Print Sample End Sub
运行界面:

6、Height、Width、Left和Top属性
这些属性在前面已经介绍过,它们的一般格式如下:
[窗体.][控件.]│Printer.│Screen.Height[=高度值]
[窗体.][控件.]│Printer.│Screen.Width[=宽度值]
[窗体.][控件.]Left[=距左边距离]
[窗体.][控件.]Top[=距顶边距离]
说明:
上面4个属性的格式中,等号及其右边的部分可以省略,这种情况下,将返回各自当前的属性值。
Height和Width属性可以返回和设置窗体、控件、打印机及屏幕的高度和宽度,而Left和Top属性分别用来返回或设置窗体、控件与其左边界和顶边界的距离。单位为twip。
例:编写程序,使窗体位于屏幕中心显示,文本框位于窗体中心显示。
在窗体上画一个文本框,大小、位置任意,然后输入如下代码:
Private Sub Form_Click() Width = Screen.Width * 0.5 '取屏幕宽度的一半。 Height = Screen.Height * 0.5 '取屏幕宽度的一半。 Left = (Screen.Width - Width) / 2 '使窗体居屏幕中心。 Top = (Screen.Height - Height) / 2 Print Width, Height, Left, Top Text1.Width = Width * 0.5 Text1.Height = Height * 0.5 Text1.Left = (Width - Text1.Width) / 2 '使文本框居窗体中心。 Text1.Top = (Height - Text1.Height) / 2 Print Text1.Width, Text1.Height, Text1.Left, Text1.Top End Sub
|