说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在DELPHI 文 本 和 图 形 的 打 印

HTML文档下载 WORD文档下载 PDF文档下载
在DELPHI 文 本 和 图 形 的 打 印

对 于 每 一 个WINDOWS 应 用 程 序 开 发 者 来 说, 打 印 功 能 的 实 现 都 是 极 为 棘 手 的, 因 为 要 涉 及 到 相 当 多 的 代 码 而 且 常 常 是 相 当 的 复 杂, 但 是 在DELPHI 中 实 现 文 本 和 图 象 的 打 印 功 能 却 是 非 常 容 易 的。

1、 文 本 的 打 印 功 能。DELPHI 中 文 本 的 打 印 功 能 就 如 同 在DOS 中 实 现 文 本 的 打 印 功 能 一 样 容 易, 需 要 做 的 一 切 只 是 取 得 打 印 参 数, 打 开 打 印 机, 然 后 发 送 文 本 的 每 一 行 内 容。 在DELPHI 中 提 供 了 一 个PRINTERS 程 序 单 元, 它 说 明 了 一 个TPRINTER 对 象, 封 装 了WINDOWS 打 印 工 作 和 输 出 打 印 机 之 间 的 接 口, 并 提 供 常 用 的 属 性 和 方 法, 其 中 画 布CANVAS 是 一 个 非 常 有 用 的 属 性, 它 代 表 了 当 前 打 印 文 件 的 表 面, 是 以 图 形 方 式 来 工 作 的, 整 个 的 打 印 输 出 工 作 仅 仅 是 将 你 打 印 的 内 容 输 出 到TPRINTER 的 属 性CANVAS 上, 当 全 部 的 输 出 工 作 完 成 以 后, 打 印 对 象(TPRINTER) 把CANVAS 的 属 性 值 送 到 打 印 机 上 去。

下 面 举 例 来 说 明 如 何 通 过DELPHI 实 现 文 本 内 容 的 打 印。 在DELPHI 中 提 供 了PRINTDIALOG、PRINTERSETUPDIALOG 两 个 控 件 允 许 我 们 进 行 打 印 机 以 及 其 他 影 响 打 印 输 出 的 选 择, 此 外 最 重 要 的 一 点 是 要 想 实 现 打 印 功 能 必 须 在 编 译 程 序 以 前 将PRINTERS 加 入 到INTERFACE 或 者IMPLEMENTATION 的UESE 语 句 当 中, 因 为PRINTER 单 元 包 括ASSIGNPRN 和 其 他 控 制 打 印 机 的 过 程。

首 先 在FORM 当 中 加 入MEMO、PRINTDIALOG、PRINTERSETUPDIALOG 和 两 个BUTTON 控 件, 两 个 BUTTON 的CAPTION 分 别 为“ 打 印 设 置” 和“ 打 印”。 然 后 编 写BUTTON 的 事 件 驱 动 程 序( 代 码 在 下 面), 这 个 简 单 的 例 子 中 只 要 单 击“ 打 印” 按 钮 时 便 可 以 在 打 印 机 上 输 出 文 件0S2.TXT, 打 印 事 件 的 清 单 如 下:

implementation

uses printers;

{$R *.DFM}

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

printersetupdialog1.execute; //选择输出的打印机以及其他打印控制选项

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

var

lines:integer;

prntext:system.text;

//将PRNTEXT声名为一个在SYSTEM程序单元当中定义的文本文件

begin

if printdialog1.execute then

assignprn(prntext); //将PRNTEST分配给打印机

rewrite(prntext); //调用REWRITE函数,为输出打开已分配的文件

printer.canvas.font:=memo1.font;

//把当前MEMO1的字体指定给打印对象的CANVAS的字体属性

for lines:=0 to memo1.lines.count-1 do

writeln(prntext

memo1.lines[lines]);

//把MEMO的内容写到打印机对象

system.close(prntext); //关闭打印文件

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

memo1.lines.loadfromfile('c:\dos\os2.txt');

//在FORM建立时读入C:\DOS\OS2.TXT文件

end;

end.

2、 图 形 的 打 印 功 能

简 单 的 图 形 打 印 功 能 也 如 打 印 文 本 一 样 的 容 易, 只 是 告 诉 打 印 机 对 象(TPRINTER) 开 始 打 印, 把 图 形 简 单 的 复 制 到 打 印 机 上 去, 最 后 告 诉 打 印 机 结 束 打 印 工 作。

举 例 说 明: 将 上 面 的 例 子 的MEMO 控 件 换 成IMAGE 控 件, 再 经 过 一 些 简 单 的 修 改, 图 形 打 印 的 代 码 如 下:

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

if printdialog1.execute then

begin

printer.begindoc;

printer.canvas.draw(0

0

image1.picture.graphic);

printer.enddoc;

end;

end;

在 这 种 情 况 下, 使 用 的 是 打 印 机 的 分 辨 率, 图 形 在 页 面 的 左 上 角 开 始 打 印 输 出, 打 出 的 图 形 很 小, 在 很 多 的 情 况 下 不 能 符 合 要 求, 但 是 打 印 机 画 布CANVAS 的STRETHDRAW 的 方 法, 可 以 让 我 们 对 图 形 进 行 灵 活 的 处 理, 画 布(CANVAS) 的STRETCHDRAW 方 法 声 名 为:

procedure StretchDraw(const Rect: TRect; Graphic: TGraphic);

其中的RECT参数代表图形输出区域的大小,TRECT的类型声名为:

TRect = record

case Integer of

0: (Left

Top

Right

Bottom: Integer);

1: (TopLeft

BottomRight: TPoint);

end;

因 此 我 们 只 要 调 整RECT 的 大 小 及 其 在 打 印 页 面 上 的 位 置, 进 而 达 到 自 己 满 意 的 效 果, 下 面 的 代 码 是 不 断 的 放 大 图 形, 充 满 我 们 定 义 的 矩 形 区 域, 并 将 其 定 位 在 打 印 机 画 布(CANVAS) 的 中 央 进 行 输 出。 代 码 如 下:

procedure TForm1.Button1Click(Sender: TObject);

VAR

strect:Trect; //定义打印输出矩形框的大小

temhi

temwd:integer;

begin

if printdialog1.execute then

begin

temhi:=image1.picture.height;

temwd:=image1.picture.width;

while (temhi printer.pageheight div 2)and

//将图形放大到打印页面的1/2大小

(temwd printer.pagewidth div 2) do

begin

temhi:=temhi+temhi;

temwd:=temwd+temwd;

end;

with strect do //定义图形在页面上的中心位置输出

begin

left:=(printer.pagewidth -temwd) div 2;

top:=(printer.pageheight-temhi) div 2;

right:=left+temwd;

bottom:=top+temhi;

end;

with printer do

begin

begindoc;

//将放大的图形向打印机输出

canvas.stretchdraw(strect

image1.picture.graphic);

enddoc;

end;

end;

end;

以 上 代 码 在DELPHI2.0 上 编 译 通 过, 通 过 这 些 小 小 的 例 子, 相 信 大 家 对 于 在DELPHI 中 打 印 图 形 和 文 本 有 一 定 的 了 解, 同 样 通 过 打 印 机 的 画 布(CANVAS) 属 性 也 可 以 实 现 数 据 库 表 单 的 打 印, 在 这 里 不 一 一 赘 述, 如 果 大 家 有 兴 趣 不 妨 一 试。

陈昊芝:腾讯!让我说你什么好? Top Paid与Top Grossing定价策略的差异 Android版百度云推送正式发布 为何开发者应推动公司开源? 从AppGratis被下架说起,苹果或将再次付出代价 58同城的“烦恼”——8K月薪安全工程师引发的入侵 软件开发实践的24条军规 思科 IBM 微软等巨头联合开发开源SDN项目OpenDaylight 巾帼不让须眉:2012年度云计算领域Top 10女性 中移动全力推进NFC 5月起乘公交可刷手机 支持Android与iOS,Qt 5.1 Alpha全新亮相 Google Play:劣质Android应用已无藏身之地! 360推出信用网站认证开放平台 联合百家协会围剿钓鱼网站 经验分享:百度测试架构师眼中的百度QA(一) 在线旅行服务行业开放API带来的新机遇 专访:悬疑恐怖游戏Year Walk美术及音效设计师 解密:微软都柏林数据中心的神秘“免费冷却”装置 云计算如何影响数字化营销? 榜单:十位帮我们打理数据的存储大佬 OpenStack Grizzly版发布 Comcast、CERN成为新会员 谷歌携Blink来势汹汹 WebKit将成明日黄花? 星巴克与苹果合作 顾客可免费下载付费App 微信回应信令争议 将启动2.5G网络优化计划 凤凰网CTO吴华鹏离职 先后供职长达10年 外媒:开发者每周编码时间仅19.1小时 AppGratis CEO现身说法:应用被苹果儆杀始末 一个Web设计师眼里的云计算 戴尔高管:服务器业务领先惠普五年时间 Hoodie:基于JS与CouchDB的超快速Web开发框架 设计优秀API的五大规则 盘点英特尔IDF2013第一天:技术产品新趋势 gicq玩家的间题 请taglis2002来借分。 急!Edit中输入日期的问题 急!DBGrid的栅格问题 为啥Oracle中还有近5G的表空间,当插入某表时却提示要增加数据文件,而别插入别的表却没问题(送分的) 有关中文显示的问题 谁用过CSTreeBean,有问题请教 VB里是不是没有从一个字符串中选出数字的函数? 一个关于高位低位的问题 请问用Dbexpress如何生成一个临时表 经典的“HELLO WORLD” 错在哪里? 有人在我的机器上安装了特洛依木马程序,我删不掉,怎么办啊??? 20 分:help me!!!!!!!!!! 我可以报考高程吗? 请问北京的pb程序员们,一般大家是怎么联系新工作的?上网?参加招聘会? 如何能动态地将dbf文件转为mdb文件格式? 从Sybase Sql Anywhere移植到Oracle有什么注意的事项? 一个关于mfc的疑惑 沙尘暴的原因。 win proxy的设置问题 北京和租房 如何安装JiveSofeWare下的CVS 初学者 奇怪的问题:水晶报表? 受不了了,居然能在资源管理器里面实现Flash动画预览 怎样把SQL Server中的数据库导出成*.sql文件? 如何向listctrl中添加一个控件? 关于读取文本文件中字符串的问题 怎样判断编辑框里面的内容是数字还是字母?相当急! 为什么那么多的帖子都找不到了啊!!!怎么回事!! 明知不可为,坚持不屑 是傻 或 痴 ,还是有毅力 我的这个发送邮件功能不能用吗。请看? 关于SQL2000的日期的显示问题! <<<<行者兄请赏笑话 prog_st(st) 接分: 给哥们帮大忙了. 鼠标的点击范围 Object类型不包括Value属性么?为什么我的程序会出错? MSHFlexGrid的数据显示问题.(泰山,巴顿你们谁会啊?) 用VC编译Perl 源程序的详细步骤? <<<<行者兄请看笑话 一下却提示newwnd.mydiv对象找不到,搞不懂,为什么啊! MSHFlexGrid的数据显示问题.(泰山,巴顿你们谁会啊?) <<<<<行者兄请看最后一个笑话 [转载]一篇让语文老师看了抓狂的文章! 四则新闻 急急:关于 Strconv( )****** 一下却提示newwnd.mydiv对象找不到,搞不懂,为什么啊! 为什么retrieve可以用数组作为参数,而sql语句里不能用数组? 如何在html页面中嵌入一段用xslt显示的xml文档? 如何只允许操作本应用程序窗口,不允许执行其它任何程序,并且不允许关闭本应用程序窗口 请问哪儿有关于MIS开发的书籍卖?请问哪个兄弟有看见,请告诉我书名好吗? 金属性,非金属性,为什么?1、元素的金属性可以通过置换水中或酸中的氢的难易程度或最高价氧化物对应的水化物的碱性强弱来判断;为什么和置换氢有关?为什么和最高价氧化物对应的水化 如果要增加棋子滑动的距离,你又有什么办法 怎样计算电路中通过的电荷数 布里渊区边界方程:n*(k-n/2a)=0的几何意义和物理意义 棋子如果要增加滑动距离,有什么办法 求Cl-和K+的有效核电荷数还有屏蔽常数怎么求?上网查了 看不太懂比如 Mg 网上是这样算的1*2+0.85*8+0.35*1 可是Mg不是1s2 2s2 2p6 3s2吗 不应该是0.35*2吗? 第七英语 有没有什么办法能使对讲机通讯距离增加? 怎么计算多肽的净电荷数 英语第七道? 请问用什么办法增加电磁铁吸引距离电磁铁不改变线圈匝数,不改变电压、电流,怎样改变铁芯形状增加电磁铁吸引衔铁的距离, 锗二极管的具体参数,最大正向电流,正向导通电压,反向电压等在为一个电池充放电电路寻找合适的二极管,使用其单向导通性能,因流过的电流最大时达1.2A,所以选择了1N5399硅管,但发现压降太 英语翻译 要缩短与发达国家间的差距,发展中国家应该采取哪些措施? 二极管正向电压从0.7V增大15%时,流过电流增大? 英语书第7页 求下面电路的电压和电流值,设二极管是理想的 形式电荷具体怎么算?最好多举几个例子 英语第七题 理想二极管接成如下图所示电路,求流过二极管VD1、VD2的电流各为多少?输出电压V.为多少? 【讨论】如何通过循环伏安曲线计算电荷密度Qd 倒摄抑制心理学知识 请高中物理帝帮忙解答关于电路中“通过电荷多少”的含义.假如说一个电路中“通过”了6C,是指的是“某一横截面”在一定时间内通过了6C的电子的意思?可是,电路中不是处处都有电子的流 电荷如何计算 什么是点动控制 高中物理:连通电路后,电路中定向移动产生电流的电荷是导线中的吗? 全部形状(英文)! 政府控制房名词解释名词解释 什么叫布拉格反射?最好能举例说明 造型英文怎么写 电荷量是指( )单位( ) 每一主族从上到下,金属性逐渐增强,非金属性逐渐减弱,这句话对的?,最外层电子数不是不变吗? 我真在工作英语咋说 收益性支出工商企业会计 的 为什么最外层电子数越少其元素金属性越强?谢谢~~~ 还有那个什么原子序数越大原子半径越小? 谢谢~ 反射什么意思 简单滑动平均法某公司按周记录正义的周销量周次 1 2 3 4 5 6 7 8 9 10 销售量 4232 4560 4321 4612 4624 4589 4633 4627 4668 4671试选择合适的移动步长,用简单滑动平均预测方法推算第十一周的销量. 石墨烯的光学性质有没有人知道相关文献啊?石墨烯计算的相关性质,有没有实验和计算的相关文献提供哦? 一共有七个字母第三个字母为L有关职业的英文单词? 何谓“滑动平均”? 石墨烯概念股一览 涉足石墨烯的上市公司有哪些 导线中有电荷运动就形成电流,为什么? 金属性越强越容易失去电子吗?非金属性越强,越容易得电子吗?如果以上成立的话,能否说成越容易失去电子,金属性越强 越容易得电子,非金属性越强 话说最近石墨烯那么火,为嘛没人用石墨烯的触摸屏?同上提问. 导体运动产生感应电流的问题就是第14题 请问什么是滑动平均?它是怎么计算的? 网络名词解释.LS是啥意思?LZ是楼主吧. 请问怎么样测定二极管的静态电阻和动态电阻? 金属性与非金属性哪个是失电子能力 非金属性最强的是什么元素?金属性最强的是什么元素?判断金属性和非金属性强弱的具体标准是什么? 二极管的电阻与电流想知道输入恒定和电压,多个二极管串连,每个二极管上的电流和电压是否一样?如果并连电流和电压又如何?你说的,我是想知道,窜连和并联 各二极管商的电压是否一样 怎样做数据的滑动平均滑动平均中的系数是怎么确定的?请高人指点非常感谢 zk1275722756朋友的热心帮助 可以从哪些方面比较元素的金属性?可以从哪些方面比较元素的非金属性? 二极管正向动态电阻的大小,随流过二极管电流的变化而变化,是不固定的吗? 只有金属才易失去电子?只有非金属才易得到电子么?氧化性就是非金属性?还原性就是金属性么? 元素的金属性、非金属性到底指什么? 家具的英文是什么 滑动平均法用什么程序 什么是元素的金属性?什么又是元素的非金属性? 化合物的核电荷数怎么算例如氧气,氢氧根离子,水
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘