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

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

Android平台的两大移动威胁现状与变化趋势 推荐五款优秀的PHP代码重构工具 11个值得注意的安全问题及应对,第12个高端黑 微软新举措:打通Windows和WP开发者账户,下调注册费用 合并两应用商店的前兆?微软开始合并Windows Store和WP开发者账户 最难忘的Bug调试经历 LiveCode:让每个人都能开发APP的开发平台 17173总经理赵佳:媒体移动化需抓住三大要素 Django 1.6发布 支持持久数据库链接 如何优化单页面网站搜索引擎? TechCrunch国际创新峰会将于上海举行 极路由:一场由路由器引发的概念盛宴 14nm制程:三星64bit处理器 Exynos 6/S曝光 从Oracle到MySQL,余额宝云实践分享 从南水北调东线工程看物联网,大数据的另一面 不只是技术!成为IT经理必备的十大软技能 看看传说5亿行代码的Healthcare.gov网站的架构 如何走出选择PHP还是ASP.NET的两难境地? 你的设计够档次吗?分享25个奇异的404页面 百度LBS推Openmap战略:无编程经验者可通过拖拽制作个性化地图应用 百万用户时尚分享网站feed系统扩展实践 Twitter上市首战告捷的四大因素 大幕将启!MDCC2013移动开发者大会下周召开 TUP第30期:微软资深专家论如何用Visual Studio开发iOS、Android应用 [开源推荐]Riot.js:不足1KB的MVP客户端框架 研发周报:最难忘的Bug调试经历 NSA如何侵入Google和雅虎的私有数据网络? 飞天5K:开放比开源更有意义 MDCC之移动娱乐游戏峰会:手游金玩奖即将揭晓 开源巨人火狐浏览器:9周岁生日快乐! 感受OpenStack Summit香港大会 哪位大虾在中文windows xp下安装过VS7.0,拜托告诉下怎么安装,我安装了3回了,均告失败 请问,用在java_applet中怎么实现一幅图片的旋转?怎么控制转动的速度? 天啊!救命啊!! 如何在客户端IE中执行服务器上的应用程序呢,十万火急。请各位大虾不吝赐教 :如何将包含各种数据类型的文件读入,而且要考虑文件的定位(比如从文件最后一个数据往前读) 如何响应wm_nchittest 消息? SHELL是否可以调用网络资源 在PHP中使用word COM对象的问题。 请教一个问题:如何反回一个MonthCalendar1控件上的的周期(控件上有显示,但不知道如何在程序中得到)? 老板叫我做一个界面,跟VC的界面视图一样, 能不能作一个中文编译器??? 我不要活了。。。 菜鸟:一个小问题 基于对话框的程序中,使用了Tree Control和Edit box,如何在Edit box中显示TreeControl中选中的文本文件的内容。希望提供类似的例子。 ★★★★★★★紧急求救★★★★★★★★ 寻找丢失的分区表!!! windows2000进入“等待”后,唤不醒是怎么回事,请指点! jsp数据库中的Date类型? 在vb中如何进行时间比较?例如1 / 7 / 17 10:00:00 - 1 / 7 / 17 00:00:00 得到一个值?? 请问如何获得其他机器的网卡MAC地址?非常感谢!!! 别了,最爱的BCB! 如何判断一个指向窗口的指针可用? 请教高手:怎么样破windows2000的登陆密码?其密文存放在什么地方? 急:哪里有电子文档 找到找到 网络编程、大虾有请!如何获得当前每秒的字节数? 各位高手,有人喜欢用mysql吗?谈谈这个东东吧 大富翁怎么连不上了? 各位武汉的大虾,请教武汉程序员、高级程序员、系统管理员(正规的大公司)、以及用JAVA做开发的工资一般为多少。希望大家给予帮助!!前途问题!! 网络编程大虾有请!如何获得当前每秒的字节数? 怎样在treeview中设置背景图片 to 版主:精华区太乱了,请给予分类。谢了 听说VB可以写PAD的程序,TRUE? JLabel中文本换行问题 马上要开始学BCB,请问BCB有那种类似于VC的创建类的向导吗,看到BCB的界面我就想到DELPHI中创建类的难度 我的游戏引擎BATTLEFIELD作好了,欢迎下载(这次是真的) 一个pop_up menu的问题 那位高手知道在SDK中使用ADO的方法 为普天之下正直而上进的程序员找一个温馨的家 为什么不能把JMF包打进去??? 内存泄露是指例如“为对象分配一个内存区后,未删除内存区,但删除了对象”是吗? 装pws时遇到的麻烦! to freezwy(网络自由人) 有没有限制上传图片大小的asp代码??(不是组件) 还是没有解决!!! 有关VC中数据库绑定的问题! 扔个骨头……下个“圈套”,呵呵? ^_^ 紧急情况!如何改变DataGrid控件中个别行的颜色?? 如果实现断开共享目录的连接 acces 表 SQL语句中如何转换字符型字段为整型? First-chance exception 请教directx的一个入门问题? 学校食堂运进5吨煤,计划烧80天,由于改进炉灶,每天节约5千克煤,这些煤实际能少几天? 610乘800等于多少? 无限循环小数是有理数,都是可以化成分数形式, 学校食堂运来1500千克煤,计划烧50天.由于改炉灶,每天节省5千克煤,这批煤可以烧多少天? 60乘800等于多少?60乘800等于48000 “有理数可以表示成分数的形式”对吗 学校食堂运来1500千克煤,计划烧50天.由于改炉灶,每天节省5千克煤,实际每天烧多少千克煤?要列出算式来 3吨50千克等于几分之几吨要化成最简分数 有理数都能写成分数形式,那0呢? 学校食堂运来1500千克煤,计划烧50天.由于改炉灶,每天节省5千克煤,实际可以烧多少天? ( )/( )=0.28=几分之几=( )% 任何一个有理数都可以表示成分数的形式吗?急 食堂运来10吨煤,计划烧40天.由于改进炉灶,每天节省5千克.这批煤现在可以烧多少天?列式为() 4是28的几分之几的答案是多少 凡是有理数都可以化成分数吗 食堂改进炉灶后每天烧煤69千克,比原来节省8%.原来每天烧煤多少千克? ( )÷5=几分之几=0.4=10﹕( )=( )% 小数,分数可不可以都化成有理数?在分类题当中,小数、分数可不可以互化?分母能被分子整除的算不算做整数? 食堂运来2000千克煤,计划40天烧完,由于改进炉灶,每天节省5千克,这批煤大约可以烧多少天?两种方法 6分之5 既表示1的几分之几,还表示5的几分之几 把0.017(17循环)化成有理数(分数) 食堂改进炉灶后,比原计划节约5分之1,正好节约6分之7吨,实际用煤多少吨 3/1是5/6的几分之几?3/1表示3分之13/1是5/6的几分之几?24/5是36/25的几分之几?大大大大大虾们 可以OK么?3分之1是6分之5的几分之几,24分之5是36分之25的几分之几 算式这么列? 一个最筒分数,如果把分子减1,可以约成1/2;如分子如1,可约成2/3.问这个最筒分数是几分之几? 某食堂本月改进炉灶后,比原计划节约用煤五分之一,正好节约2吨.本月实际用煤多少吨? 0.6里面有6个几分之一表示几分之几 0.48=几分之几(分数) 食堂运来3吨煤.计划可以烧20天.由于改进炉灶,每天可比计划节约30千克,这批煤现在可以烧多少天?第二个问题:甲乙两个仓库存有大米,乙仓库比甲仓库少2800千克,甲仓库大米的重量是乙仓库的 ∠A=90度,BD是△ABC的角平分线,DE是BC的垂直平分线,求∠ABC和∠CDE的度数. 百分之12.5怎样化成分数? 某食堂改造炉灶后,每天节约用煤60千克,这样原来计划用32天的煤,现在可以用48天.这堆煤共有多少千克? 已知关于x的不等式组{x-a≥0,5-3x>-1,它的整数解共有5个,求a的取值范围. 把下面的百分数化成分数 50% 75% 40% 12.5% 10% 水泥厂食堂运回3吨煤计划可以烧20天,改进炉灶后,这批煤烧了25天,实际平均每天比原计划节约用煤多少千克 已知5x-3y-2=0,则1010x ÷106y =(        ) 12.5化成分数是多少 食堂改进炉灶后,每月比计划少用煤五分之一,正好节约十分之九吨,现在每月实际用煤多少吨 某商场以50元/件的价格进来一批羊毛衫.前期市场点调查表明:如果以60元/件的价格卖出,则每周可卖出100件,在此基础上销售价格每件增加5元,则周销售量减少4件.假设该商店把销售价格定为x 将0.252525252525.化为分数 一项工程,计划10天完成,实际8天完成任务,工作时间缩短了20%,工作效率提高了25%!为什么?工作时间缩短了:(10-8)÷10=20%工作效率:原来10天完成,每天10分之1,实际8天完成,每天8分之1.提高了: 小明向一个底面为30cm*30cm的长方体玻璃容器中装满水,并将一部分水倒入一个正方体铁桶中,当这个正方体铁桶装满水时,长方体容器中的睡眠下降了20cm,则这个正方体铁桶的棱长有没有超过25cm? 分数化成小数:12分之5 学校食堂运来一堆煤,煤多少千克计划每天烧50千克,8.5天烧完,实际10天才烧完,实际每天烧煤多少千克 一件工作,原计划10天完成,实际8天完成,工作时间缩短了()%?工作效率提高了()%A12.5 B20 C25 D10(是选择题) 快急!19/78是几分之几? 食堂买来一批煤,计划每天烧250千克,可以烧20天,实际每天节约用煤20%,这样可以 一项工作,原计划十天完成,实际八天完成,工作时间缩短了百分之几,工作效率提供了百分之几工作效率是10/8-1=25%吗这道算式的思路是什么 一杯牛奶,第一次喝了全杯的2分之1,第二次喝了全杯的4分之1,还剩全杯的几分之几?快 美味食堂每天烧掉85kg,比原来节约15kg,节约了百分之几 一件工作,原计划10天完成,实际8天完成,工作时间缩短了百分之多少,工作效率提高了百分之多少? 1.22222 ×9-1.33332 ×4=(        ) 某校食堂有煤mkg,原计划每天用煤akg,实际每天节约用煤15kg,节约后可以多用多少天?(式子) 一箱工程原计划25天完成,实际提前了5天完成,工作时间缩短了几分之几? 100分之28化成最简分数是几分之几? 某食堂有煤m吨,原计划每天烧煤a吨,现在每天节约烧煤b吨,则可比原计划多烧____天 一件工作,原计划10天完成,实际8天完成,工作时间缩短了( )%,工作效率提高了( )%. 100分之304化成最简分数 学校食堂运来1吨煤计划烧40天由于改进炉灶每天可节省5千克这堆煤实际可以烧多少天?怎样计算 完成一项工程的时间由5小时缩短到4小时,工作效率提高了几分之几?要有思考过程 成绩优秀率=几分之几*100%人员的出勤率=几分之几*100%急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn