VB的几种打印方法

Author: Date: 2001年 18期

?牐犖颐潜喑淌保绻诔绦蛑屑尤搿按蛴 惫δ芑崾钩绦蚋油晟疲幼ㄒ怠O旅妫姨峁┘钢直嘈创蛴〕绦虻姆椒ㄒ怨┐蠹也慰肌?
  #1?牐?1. 采用Visual Basic提供的简单打印函数PrintForm方法
  ?牐犛τ贸绦虼疤宓腜rintForm方法时,Visual Basic把当前窗体的位图送到打印机。该方法的优点在于它几乎不需要任何编程,但也有很大缺陷。最为突出的是当低分辨率图形在高分辨率打印机上打印时,其结果令人无法满意,会产生锯齿。
  ?牐牬肴缦拢?
  ?牐燩rivate Sub Command1_Click()?? '用PrintForm打印
  ?牐燤e.PrintForm '打印窗体的可见区域
  ?牐燛nd Sub
  #1?牐?2. 用Printer对象
  ?牐犚氩丛拥拇蛴∈涑觯喑探衔乘觥?Printer对象代表系统缺省的打印机,Printer对象支持许多由窗体和图形框所支持的属性和方法,三种对象都有画线和画方框。应用程序可用以下代码在Printer对象上画出1平方英寸的方框。注意:打印机以twips来测量距离。每英寸有1440个twips。
  ?牐燩rinter.Line?煟?2*1440,2*1440)??-Step?煟?1440,1440),,B
  ?牐牬蛴』⒋哟疤搴屯夹慰蚨加蠧ircle、PaintPicture、Print、Pset、TextHeight、TextWidth方法。使用这些方法,应用程序可以为打印机生成高分辨率输出。
  ?牐牬蛴∥谋局苯佑肞rint方法,见下列代码:
  ?牐燩rinter.Print “Hello,China ComputerWorld!” '打印字符串
  ?牐燩rinter对象还有一些窗体和图形框都没有方法??
  ?牐燦ewPage告诉打印机,程序对当前输出页的发送已经结束,Printer对象应开始新的一页。
  ?牐燛ndDoc告诉VB,程序创建文档结束,VB应将它发送到物理打印机上打印。
  ?牐燢illDoc取消当前打印作业。应用程序应该终止由EndDoc和KillDoc所设定的每个打印作业。
  ?牐燴oom属性用于定义打印输出的缩放因子。
  ?牐燙opies属性用于定义打印的副本数目。
  #1?牐?3. 如果你在编程时用到了RichTextBox控件,那么你可以使用该控件的SelPrint 方法来打印
  ?牐牬肴缦拢?
  ?牐燩rivate Sub Command3_Click()'SelPrint方法
  ?牐燙ommonDialog1.Flags=cdlPDReturnDC+
  ?牐燾dlPDNoPageNums
  ?牐營f RTF1.SelLength = 0 Then 'RTF1为窗体的RichTextBox控制
  ?牐燙ommonDialog1.Flags = CommonDialog1.Flags+ cdlPDAllPages
  ?牐燛lse
  ?牐燙ommonDialog1.Flags = CommonDialog1.Flags+ cdlPDSelection
  ?牐燛nd If
  ?牐燙ommonDialog1.CancelError = True
  ?牐燨n Error Resume Next
  ?牐燙ommonDialog1.ShowPrinter
  ?牐營f Err.Number = cdlCancel Then Exit Sub
  ?牐營f Err.Number <> 0 Then
  ?牐燘eep
  ?牐燤sgBox “Error printing file.” & vbCrLf + Err.DescriptionvbOKOnly +vbExclamation“Printing Error”
  ?牐燛xit Sub
  ?牐燛nd If
  ?牐燩rinter.Print “”
  ?牐燫TF1.SelPrint CommonDialog1.hDC '打印RTF1控件的可见区域
  ?牐燛nd Sub
  ?牐犐厦娲胂冉写蚪柚茫俳写蛴 H绻恍枰柚茫捎孟旅娲敫虻ィ害?
  ?牐燫TF1.SelPrint Printer.hDC '打印RTF1控件的可见区域
  #1?牐?4.可以在VB中调用Word 97提供的OLE自动化服务,利用Word 97强大的打印功能来完成VB打印
  ?牐牬肴缦拢?
  ?牐燩rivate Sub Command4_Click'调用Word打印
  ?牐燚im objWord As Object
  ?牐燙onst CLASSOBJECT = “Word.Application”
  ?牐燨n Error GoTo objError
  ?牐燬et objWord = CreateObject(CLASSOBJECT)??
  ?牐爋bjWord.Visible = True
  ?牐爋bjWord.Documents.Add
  ?牐燱ith objWord
  ?牐?.ActiveDocument.Paragraphs.Last.Range.Bold = False
  ?牐?.ActiveDocument.Paragraphs.Last.Range.Font.Size =20
  ?牐?.ActiveDocument.Paragraphs.Last.Range.Font.Name = “黑体”
  ?牐?.ActiveDocument.Paragraphs.Last.Range.Font.ColorIndex==4
  ?牐?.ActiveDocument.Paragraphs.Last.Range.Text = “我是电脑报读者!”
  ?牐燛nd With
  ?牐燙lipboard.Clear
  ?牐燙lipboard.SetText “通过剪切板向WORD传送数据!”
  ?牐爋bjWord.Selection.Paste
  ?牐爋bjWord.PrintPreview = True '预览方式
  ?牐牐?objWord.PrintOut'执行打印
  ?牐牐?objWord.Quit'退出Word
  ?牐燛xit Sub
  ?牐爋bjError??
  ?牐營f Err <> 429 Then
  ?牐燤sgBox Str$(Err)& Error$
  ?牐燬et objWord = Nothing '不能创建Word对象则退出
  ?牐燛xit Sub
  ?牐燛lse
  ?牐燫esume Next
  ?牐燛nd If
  ?牐燛nd Sub