打印本文 打印本文  关闭窗口 关闭窗口  
VB考试教程:print方法及相关的format函数、Tab和Spc函数
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 14:46:38  文章录入:杜斌  责任编辑:杜斌

一、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——可选的,指定下一个字符的插入点,可以是分号、逗号,也可以省略。

  • 使用分号(;)则直接将插入点定位在上一个被显示字符之后;

  • 使用逗号(,)则将下一个输出字符的插入点定位在制表符上;

  • 如果省略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

注意:

  • 当文本出现在窗体时,文本成为窗体背景的一部分,将在所有的控件之下出现。所以,很少在应用程序的主窗体中用Print显示文本。

  • 如果输出的字符串比窗体或图片框的宽度还要长,超出的部分会自动被截断,而不会自动换行,也不会自动向下滚动(如可在上例中加长字符串,看一看效果)。要在“绘图模式”下得到自动换行或滚动的效果,必须在程序中处理。这是“绘图模式”与“文字模式”的根本差异。

如:打印"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

打印本文 打印本文  关闭窗口 关闭窗口