加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

VB几种打印方法(引用)

(2009-03-26 11:53:19)
标签:

vb

it

分类: VB
  一、采用Visual Basic提供简单的打印函数PrintForm方法

  应用程序窗体的PrintForm方法时,Visual Basic把窗体的位图送到当前打印机。该方法的优点在于它几乎不需要任何编程,但也有很大缺陷。最为突出的是当低分辨率图形在高分辨率打印机上打印时,其结果令人无法满意,会产生锯齿。下面代码将在打印机上打印窗体。

Private Sub Command1_Click() '用PrintForm打印
Me.PrintForm '打印窗体的可见区域
End Sub

  二、用Printer对象

  用Printer对象可以进行高分辨率输出,但要想产生复杂的打印输出,编程较为繁琐。Printer对象代表系统确省的打印机。Printer对象支持许多由窗体和图形框所支持的属性和方法,三种对象都有画线和画方框。应用程序可用以下列代码在Printer对象上画出一平方英寸的方框。它离左上角二英寸。注意:打印机以twips来测量距离。每英寸有1440个twips。

Printer.Line(2*1440,2*1440)-Step(1440,1440), ,B

  打印机、从窗体和图形框都有Circle、PaintPicture、Print、Pset、TextHeight、TextWidth方法。使用这些方法,应用程序可以为打印机生成高分辨率输出。

  打印文本直接用Print方法,见下列代码:

Printer.Print “Hello,China ComputerWorld!” ‘打印字符串


  Printer对象还有一些窗体和图形框都没有方法:

  ·NewPage告诉打印机,程序对当前输出页的发送已经结束。Printer对象应开始新的一页。

  ·EndDoc告诉Visual Basic,程序创建文档结束。VISUAL BASIC应将它发送到物理打印机上打印。

  ·KillDoc取消当前打印作业。应用程序应该终止由EndDoc和KillDoc所设定的每个打印作业。

  ·Zoom属性用于定义打印输出的缩放因子。

  ·Copies属性用于定义打印的副本数目。


  三、采用直接将数据传送打印机的方法进行打印输出

  该方法也不太实用。有两种方法将数据送往打印机。第一种是用Print # 方法,就象将数据写入一个文件一样写数据。另一种方法写端口,但不是送文本,而是送特定的PCL语言,PCL表示打印控制语言(Print Control Language)。它是一种特殊语言,用转义代码来控制打印机的具体动作。因为此方法太繁琐,本文不做太多介绍,见谅。

  四、使用RichTextBox控件的SelPrint方法


  如果你在编程时用到了RichTextBox控制,那么你可以使用该控件的SelPrint 方法来打印,使用非常简单。下面一段代码即用RichTextBox控件的SelPrint 方法来完成打印。

Private Sub Command3_Click() 'SelPrint方法
CommonDialog1.Flags = cdlPDReturnDC + cdlPDNoPageNums
If RTF1.SelLength = 0 Then 'RTF1为窗体的RichTextBox控制
CommonDialog1.Flags = CommonDialog1.Flags + cdlPDAllPages
Else
CommonDialog1.Flags = CommonDialog1.Flags + cdlPDSelection
End If
CommonDialog1.CancelError = True
On Error Resume Next
CommonDialog1.ShowPrinter
If Err.Number = cdlCancel Then Exit Sub
If Err.Number < > 0 Then
Beep
MsgBox "Error printing file.
" & vbCrLf + Err.Description, vbOKOnly + vbExclamation,
"Printing Error!"
Exit Sub
End If
Printer.Print ""
RTF1.SelPrint CommonDialog1.hDC '
打印RTF1控件的可见区域
End Sub

  上面代码先进行打进设置,再进行打印。如果不需要设置,采用下面代码更为简单。

RTF1.SelPrint Printer.hDC '打印RTF1控件的可见区域

  五、可以在VB中调用Word 97提供的OLE自动化服务

  利用Word 97强大的打印功能来完成VISUAL BASIC打印,笔者认为这是最令人满意的方法。下面代码说明VB如何与Word集成。
 
Private Sub Command4_Click() '调用Word打印
Dim objWord As Object
Const CLASSOBJECT = "Word.Application"
On Error GoTo objError
Set objWord = CreateObject(CLASSOBJECT)
objWord.Visible = True
objWord.Documents.Add
With 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 =
"我是计算机世界读者!"
End With
Clipboard.Clear
Clipboard.SetText "通过剪切板向WORD传送数据!"
objWord.Selection.Paste
objWord.PrintPreview = True '预览方式
'objWord.PrintOut'执行打印
'objWord.Quit'退出Word
Exit Sub
objError:
If Err < > 429 Then
MsgBox Str$(Err) & Error$
Set objWord = Nothing '不能创建Word对象则退出
Exit Sub
Else
Resume Next
End If
End Sub

  六、用VC编制DLL模块完成打印

  在Visual Basic中调用该模块的混合编程的方法进行打印输出。因涉及VC编程比较繁琐,因篇幅问题这里不再讨论,但可以肯定用VC编制的打印将更具特色。

0

阅读 收藏 喜欢 打印举报/Report
前一篇:vsprinter控件
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有