在C_Builder6中建立打印预览类TPreView.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在C_Builder6中建立打印预览类TPreView

在 C+ + Builder 6 中建立打印预览类 T P reView 杨 勇 摘 要: 通过应用 Windows 打印相关的 API 函数, 在 C++Builder6 中构建一个打印预览类 TPre- 将打印编程进行封装, 提供类似于打印类 TPrinter 的接口, 从而简化了 C++Builder6 中的 View, 报表打印预览编程工作。 关键词: 打印预览; 报表; C++Builder6 1 引言 对于数据库应用程序, 报表的打印和预览是必不可少的基 本 功 能 。 C++Builder 6 对打印工作提供了一套专门的控件组 Qreport[1], 对常规和比较简单的数据打印基本能够胜任 , 但是 实现要点 3 3.1 TPreView 的窗体 预览需要在窗 口 中 进 行 , 因 此 TPreView 类直接继承于窗 口类 TForm, 图 1 为打印预览的设计期窗口。 对于比较复杂的动 态 数 据 报 表 , 虽然可以用动态生成 Qreport 控件的方式完成, 但是程序的复杂度大大增加, 失去了使用组 件简化编程的初衷。 大量使用控件对系统内存和资源的消耗也 不小。 在这种情况下, 直接用 BCB 提供的打印类 TPrinter 实现 数据的动态打印反而来得简便。 遗憾的是, C++Builder 6 没有 提供与之相配套的预览类, 给打印预览的编程工作带来困难 。 设计一个打印预览类 TPreView, 与 Tprinter 类结合使用, 可以 快速实现报表的预览打印功能。 2 设计思路 TpreView 没有设计成 VCL 组 件 。 如果设计为组件 , 使 用 者在使用之前要安装到 C++Builder6 集成开发环境中 , 增加了 使用难度, 也不便于扩充修改。 因此直接设计为类的形式, 应 用时直接加入 project 中 即 可 调 用 。 使用者还可以根据程序需 要具体修改源码。 为 了 让 TPreView 类的使用者快速掌握其用法 , TPreView 类的接口基本上模仿 TPrinter 类[2], 打印和打印预览两者完成 功能的主要区别是输出设备不同, 而两个类的工作方法基本一 致, 表 1 列出两个类的主要属性和方法。 表 1 Printer 与 TPreView 的主要属性和方法对比 TPreView 的 窗 口 主 要 由 ToolBar1 ( 工 具 栏 ) 、 ScrollBox (带垂直滚动条的窗口组件 ) 、 StatusBar ( 状态栏) 3 个组 件 构 成 , 工 具 栏 ToolBar1 上主要有预览页 面 导 航 按 钮 、 打 印 按 钮 显示比例按钮等 。 展示预览图像的图元文 件以平铺的方式置 入一个 TImage 图 像 中, 为实现多页预览, Image 图 像 由 程 序 动 态 生 成 , 每个预览页对应一个 Imag e, 然 后 显 示 Image 在 ScrollBox 中。 3.2 基本原理 实现预览的基本过程是: 将输入到打印机的图形输入到内 存中以图元文件形式存放, 再把图元文件显示到电脑屏幕上 。 预 览 图 形 采 用 Windows 操作系统下的增强型元文件 (EMF) , 元文件与位图 (bitmap) 不同, 属于矢量图形, 以图形绘制命 令来描述图像, 因此可以对图像进行缩放而不失真, 而图像的 任意缩放是一个打印预览类必需的基本功能。 增强型图元文件 的生成和显示涉及以下几个 Windows API 函数[3]: HDC CreateEnhMetaFile( HDC hdcRef, // handle to a reference device context 类 属性或方法 TPrinter TPreView 输出画板 Canvas Canvas 打印/预览页面序号 PageNumber PageNumber 打印/预览工作初始化 BeginDoc (void) BeginViewDoc (void) 打印/预览输出结束 EndDoc (void) EndViewDoc (void) 打印/预览换页 NewPage (void) NewViewPage (void) 件句柄 hdcEMF 代入 ( 文中的图元文件均存于系统内 存 中 ) , 函数返回一个作图已经完成的图元文件句柄 , 并 释 放 被 Cre- ateEnhMetaFile 函数占用的设备描述表句柄。 图元文件绘图完毕 , 输出: 接 下 来 用 PlayEnhMetaFile 函 数 进 行 这是一个生成增强型图元文件的 Window

文档评论(0)

ligennv1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档