学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> VB >> Visual Basic应用程序的几种打印方法


Visual Basic应用程序的几种打印方法


  打印是编制应用程序过程中最复杂的事情之一,不同的打印机提供了各种不同的功能。编写能充分利用打印机性能的子程序与编写应用程序的其它部分一样都很困难。庆幸的微软的Windows平台使打印工作变得相对容易了。

  最近,笔者编制出一套综合试题库管理系统,完成试题的编辑、自动组卷及打印试卷等工作,在编程时,也碰到了打印问题,笔者找到了几种打印方法,现将它们整理出来,以飧读者,希望能给您的工作提供一点方便。

  一、采用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编制的打印将更具特色。

  笔者的试题库采用的是第五和第六两种方案,如果机器上没有Word ,就调用DLL打印模块。打印是编程工作中重要的一部分,总的来说,微软已经使打印变得极为简便,但还要我们做一些必须的工作。希望本文能够拓展你编程的思路,编出更好的应用程序。
技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

还没人留言,抢个先,哈哈!
对"Visual Basic应用程序的几种打印方法"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 Visual Basic应用程序的几种打印方法 相关内容
Google搜索中 Visual Basic应用程序的几种打印方法 相关内容
雅虎中 Visual Basic应用程序的几种打印方法 相关内容
Sogou搜索中 Visual Basic应用程序的几种打印方法 相关内容

相关软件 最新回复帖子:

·Windows Vista 中卸载软件的不同方式
·没有mysql支持时的替代方案
·一个可以发送附件及HTML格式邮件的PHP类
·AutoCAD打造精致三维鸟笼实例详解
·Photoshop自定义水晶字特效样式
·AutoCAD三维基础实例教程
·PS为黑背景长发美女照片抠图换背
·用Photoshop自制个性摩托车贴花小经验
·轻松几步将美女照片处理为手工素描
·巧用Photoshop画笔轻松绘制创意特效


  相关软件 Visual Basic应用程序的几种打印方法相关文章
用VB建立字符界面的控制台程序 通信控件MSComm使用详解
VB实现动态调用含DateTime类型存储过程 VB+Access设计图书管理系统
如何用Visual Basic编写病毒 用VB6.0在Vista下实现全磨砂玻璃窗口
VB中调用MSN 6.2 API函数 Visual Basic中实现带预览的对话框
VB访问SQL Server数据库技术全揭密 用Visual Basic实现点对点通讯
Visual baisc中Byval与Byref的区别 VB6.0中Dir()函数的使用方法
VB中使用WinSock控件编写网络程序 VB程序中用ADO对象动态创建数据库和表
掌握VB中的ADO数据对象编程 用VB6.0实现网络实时监控系统
Visual Basic6.0事件机制分析 好文回顾:Visual Basic 十年风云
对VB6的后期绑定和前期绑定的一点看法 用VB设计“投票评选”程序的简单方法