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

在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) 属 性 也 可 以 实 现 数 据 库 表 单 的 打 印, 在 这 里 不 一 一 赘 述, 如 果 大 家 有 兴 趣 不 妨 一 试。

华为应用市场助力开发者 软硬结合造就强大生态系统 【CTO俱乐部看板研修班北京站现场速递】看板方法:渐进变革的过程 《近匠》不背单词,用“沉浸”征服英语学习 ETpl——强复用、灵活、高性能的JavaScript模板引擎 MDCC 2014大会日程概览发布 最新嘉宾议题揭秘 终于来了,微信企业号正式开启公测! 【问底】王帅:深入PHP内核(一)——弱类型变量原理探究 谷歌Kubernetes专访:未来BigTable开发只是课后习题 首届“最具价值CTO”评选来啦!我们在找你! 【CTO俱乐部走进顺丰总部】活动图文直播进行中 中国第一个云主机评测发布:天翼云性价比第一、青云质量第一 Ruby 2.1.3发布,降低内存消耗、修复众多Bug! OpenHW2014开源硬件总决赛鏖战西安 AMD力推异构计算 《坦克世界:闪电战》:PC转手游,不止免费! 【讲师】道里云毛文波:网络虚拟化与SDN实现Docker连通 性能测试:SequoiaDB vs. MongoDB vs. Cassandra vs. HBase 华云数据推运营型PaaS Plus平台,联合Tmax走出“去IOE”的云化之路 聚焦移动新势力 MDCC 2014免费展位团队名单公布 详解Google Authenticator工作原理 云计算的乐高玩具,Docker从根本上改变应用程序开发 【先锋】eSage缔造异构虚拟化管理技术,做数据中心核心思想执行者 Uplinq2014:亲身体验Vuforia与智能眼镜设备 MDCC 2014 移动开发者大会议程全面揭晓! 顺丰模式:物流行业“互联网化”的科技之路 移动应用云服务工具APICloud宣布完美适配iPhone6 从应用分发到能力开放 华为开发者联盟沙龙上的共赢理念 SOOMLA框架:移动游戏分分钟创建个虚拟商店 Facebook:如何让应用适合所有系统、带宽以及屏幕 Docker实践者不能错过2014 Container技术大会的九大理由!(讲师议题全面揭晓) 2014全球云计算大会中国站(CC China)精彩集锦 腾讯X5浏览服务正式开放 30多款APP成为首批受益者 用JS实现在ListBox1双击后在ListBox2中增加值后,为什么一提交后ListBox2的值清空了?请问如何在提交后保存保存ListBox2的值呢? 大家有没有遇到过第一次执行的时候那个OnInit过程没有执行的情况? 菜鸟问题: 问什么我把工程另存到其他目录编译错误 如何才能把数据指针指向物理位置的最后一条记录!? 如何在delphi中截获com中的错误信息 《Windows95程序设计》哪有下载? 在AdoQuery中in的参数该怎么写 熟悉组件的朋友帮忙看看!! 数据库引擎问题 (亟待解决) 来者有分!!!! 请问大哥们如何在ASP中实现在线对WORD文件进行修改 。。。。。急。。。。 请问 gmp 是什么东西 局域网视音频合成传输!!! DELPHI 调用过程ADOStoredProc1的问题?? 如何在多页面浏览器里面设置“前进”,“后退”的按扭的状态?? 使用CppWebBrowser控件显示WEB页面,如何以流的方式读入web页面数据 javabean的一个问题 vc的远程调试 请教一个局域网视音频合成传输的问题!!! 用SQL如何更新数据表的图片? 一个30多岁的人,他刚开始学VC,请问他有前途吗? 关于Cookie的问题,不知道在哪里问合适 谁有用ASP做用MSchart控件生成的饼图源程序给我一份,给他30分! 为什么我的显卡驱动程序安装不上???主板是815Ep的! 请教一个局域网视音频合成传输的问题!!! 不好!出现错误!请帮忙! 有谁对java3d熟悉阿,急需探讨 暴笑中国队连环画 谁能帮帮新手啊!!!!! 如何通过一个网卡用adsl将整个局域带上网 程序中的消息对话框怎么不直接蹦出来,而是要按一下Alt才行? 程序中的消息对话框怎么不直接蹦出来,而是要按一下Alt才行? ListBox->Items->Add()的问题! 为什么我们的局域网内客户机不自动得到dns server 和默认网关??? 请推荐几款多系统启动控制软件 问各位高手一个很菜的问题! 数据窗口中的检索数据问题 毕业设计要交了!急啊!请问fastreport预览时,怎么没有“页面设置”菜单?? SetCellTextColor 的问题 ===读取时如何成比例的改变一张图片的尺寸及大小=== 毕业设计要交了!急啊!请问fastreport预览时,怎么没有“页面设置”菜单?? 意大利终于出线了 QuickRep1.PrinterSettings.duplex中duplex(双重,双向)是怎样用? 怎样使FORM上默认的最大,最小按钮变小一点,比如象OICQ的FORM上按钮? 关于servlet的问题 数组使用的问题,两种下标为什么只一种可以? 关于C语言编写数值计算的,事关人命啊~~~~ 关于组件问题? 急!急!急!一个宽带的问题? 做了个网站,希望大家看看!!!www.gz111.net 谁有window blinds的注册码 把生鸡蛋放入盛清水的玻璃杯中会浮起来吗? 高一物理乒乓球题让一个乒乓球从某一高度自由落下,测出它的质量、下落的高度和下落的时间,算出在它下落的全过程中重力做功的平均功率和落地时重力做功的瞬时功率.在乒乓球下落的过 欧恩净水器过滤后的水做电解实验为什么呈淡茶色? 鸡蛋为什么放了盐后会先沉后浮? 怎样测量一个乒乓球的直径? 氮气在点燃条件下到底会不会反应啊?无 玻璃杯中的生鸡蛋加入食盐以后为什么会浮起来? 怎么判断水 氯化氢 溴化氢 一氧化碳的分子极性大小 铁与稀硝酸反应 生成氮气Fe+ HNO3 (很稀)—— N2↑+Fe(NO3)3+H2O怎麼配平?在线等 描写建筑物的词语有哪些 向水里撒盐后,水面是上升还是下降?为什么?因为没这答案另外:盐是完全溶解在水里的那么应该是不饱和 可以再溶此乃《联合对抗》出的题 它的答案是下降它给的答案与我物理老师给的答案 新建鸡舍与羊舍用什么消毒水消毒好?鸡舍是半放养状态的,地不大就十来只鸡.最好能说明下能用消毒水哪里有售. 习作七 食盐溶解在水里后,水面会升高吗 食盐溶解在水里后,水面会升高吗 在完全溶解的情况下盐水和糖水哪个质量大?水都是1L,盐和糖都是20g,水温都是35摄氏度,将它们混合后,哪个会在上面? 磷酸的第三级电离常数Ka3可以从滴定曲线上求得吗? 为什么在水里加盐水面反而降低? 84消毒液可以用于鸡舍消毒吗 利用下列热力学数据求算磷酸的分布电离常数抱歉没有到2级请看下面链接http://hi.baidu.com/%BB%F0%D0%C7%CC%E0/album/item/525f983ca2c4d32bbaa167b8.html#imgShowPre 食盐溶解在水里后水面会升高吗?请你来研究一下这个问题,并记录你的研究发现和结果. 扩句:今天的天气真冷啊! H3PO4的三级电离常数和总电离平衡常数之间的关系,Ka=Ka1*Ka2*Ka3成立么?如果成立的话,磷酸是分步电离,不可以写总得电离方程式啊?那总电离平衡常数怎么能用总方程式计算呢?难道按强、是强电 食盐溶解在水里后,水面会升高吗? 天气真冷.扩句 描写建筑的句子 生成的新盐+新酸 正盐是什么?实验正盐+碱 现象?结论 天气太热了(扩句) 描写建筑物高大的句子,答对还有悬赏分:25 怎样理解弱酸(碱)的正盐的碱(酸)性比酸(碱)式盐强? 求苏教版六年级语文下册第二单元的作文提纲,就是老师不在场的 0.1mol/LNH4Cl和0.1mol/LNH3.H2O等体积混合溶液中离子浓度大小比较 氮气会不会与碳发生反应 石块扔到水中引起水的____而发声,这时鱼会被吓跑,主要是因为____能传播声音. 2010年的冬天会特冷吗?今年冬天比去年冬天会更加冷吗? (2/4)HSO4::::::(D)0.1mol/LNH3.H2O :::::(1)D溶液( )性 原因?(2)以上溶液ph值最小的是? 弱碱性水有哪些品牌 济南2010年冬天会很冷吗? 11.将0.5L0.1mol/LFe2(SO4)3溶液与1L0.6mol/LNH3•H2O溶液混合,充分反应后过滤,滤液的PH值( )(A)小于0.3mol/LNH3•H2O溶液的PH值 (B)等于0.2mol/LNH3•H2O溶液的PH值(C)大于0.3mol/LNH3•H2O溶液的PH值 ( 如图:阴影甲比阴影乙的面积大28平方米,AB长40米,BC长多少米? 磷酸的电离平衡常数磷酸在纯水中,不同温度下的电离平衡常数是多少?0到50度之间起几个点. 0.1mol/LNH4CL溶液和 0.01mol/LNH4CL的PH哪个大?0.1mol/LNH4CL溶液的PH小于 0.01mol/LNH4CL的PH,为什么? 六年级下册语文第三单元习作 苏教版六年级下册语文习作5怎么写《我的烦恼》,教我怎么写就行了,最好有范文,然后要快,速度速度 求描写西方建筑的句子,急用!类似于教堂之类的高大建筑物,白色的建筑物,不要古堡这样阴森森的描写. 在常温下,有体积为m升、pH值为a的稀硫酸和pH值为b,体积为n升的烧碱溶液混和后,溶液呈中性.(1)如果a+b=14,则m/n= (填数字)(2)如果a+b=13,则m/n= (填数字)(3)如果a+b>14,则m/n 苏教版小学语文六年级下册习作五成长的烦恼,开头怎么写啊? 描写白色建筑的句子描写白色建筑物的句子!最好是描写白色校园的句子!考试要用! 是六年级下册人教版语文第三单元习作 苏教版小学语文六年级下册习作六的格式. 求描写古欧洲的建筑物的句子或段子我要的不是资料,是一些优美的句子!越华丽越好 求人教版语文六年级下册第三单元习作!今天之内要!主题是人与人之间的关爱! 写家乡产品的 我家乡在南京 ,要写南京的产品 翻译【英语】南京的冬天很冷他没有算出他自己的建康得分他不再吃甜食了【两种】我爷爷一点儿也不喜欢看足球赛孩子们正在谈论关于他们的寒假计划 六年级下册语文第三单元习作,急需 磷酸的电离度是多少? 在粗细均匀的装水容器中,圆柱体A漂浮在水中,A有1\5的体积露出水面,此时容器内某点压强增强了58.8PA~求圆柱体A密度 镁在氮气中反应的条件到底是高温还是点燃?氮气不是没有助燃性吗?可是有些人说要点燃,怎么可能啊。 磷酸根的电离~RT- - 问错了,要问的是磷酸根的水解,分步的那个/ 在日常生活中,我们采取哪些措施有助于防止水体富营养化 如下图所示,梯形面积为28平方米.求阴影部分面积
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘