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

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

Fragment API将兼容Android 1.6到3.0 通过Linux Shell实现Android横竖屏切换 Android高手应该精通哪些内容? Android 2.2开始resources.arsc有改变 分析你的Android ANR错误 API Level对照表,更新至2.3.3 ProcessDialog结合Thread处理耗时操作 Fragment示例代码 DialogFragment示例代码 ActionBar示例代码 (二) Action Bar示例代码 (一) ActionBar使用方法 - Android活动栏(二) Action Bar使用方法 - Android活动栏(一) DialogFragment类介绍 Android Fragment使用详解 Fragment对比Activity - Android碎片介绍 Android 3.0新增日历控件CalendarView Android JSON写入类 - JsonWriter Android JSON解析类 - JsonReader Android获取本机电话号码 ListView自动滚动方法 自定义Android菜单背景 Android OpenGL下截图代码 查看Android应用的详细信息2.3有新方法 Android开发Java图书推荐 Android开发图书推荐 UiModeManager设置夜间模式和行车模式 Android 2.2新增的DeviceAdminInfo类 Android获取摄像头详细信息 Android流量统计TrafficStats类的使用 电子邮件解析android.net.MailTo类 什么是存储过程? 大侠们帮忙看看,简单问题 急:因出差,明天(12.20,第二期)的“微软.net高级程序员培训”转让(包括资料)!今晚6:00前联系,13910321169. 请问怎样才能在Access中选取指定行数的记录如第5-10条. 关于XML命名空间的疑问?请教各位高手帮帮忙!谢谢! 请问哪里有《情深深雨蒙蒙》下载??? ******斑竹快出来啊 看看我这个贴子啊!!!!!!!!!!!!!! 如何读取寄存器中的数据? 请问在数据库中如何操作日期型字段: Help,如何把本机加入主域服务器? 急:因出差,明天(12.20,第二期)的“微软.net高级程序员培训”转让(包括资料)!今晚6:00前联系,13910321169 怎么用vbscript定义一个函数阿。我想作一个下拉框的onchange事件,请指教 如何确定adoquery的数据是否被修改了? 有关程序调试的问题 全都转行卖大白菜。 对于各个.h和.cpp文件分工如何,我的各种函数各个变量到底该放在哪个文件中的哪个class中? 如何停止asp调用的dll文件,我调用my_dll.dll文件一次之后就不能对my_dll.dll更改了,为什么?怎样解决? 急:因出差,明天(12.20,第二期)的“微软.net高级程序员培训”转让(包括资料)!今晚6:00前联系,13910321169.. 关于附件下载过程中权限控制的问题 如何编辑LILO文件? 糊涂啦。。。看看汉字库(hzk24)吧? 请问在listbox控件中如何设置特定行的颜色? 问一个关于ODBC的问题 急:因出差,明天(12.20,第二期)的“微软.net高级程序员培训”转让(包括资料)!今晚6:00前联系,13910321169.... 各位大侠,哪有设计专家系统的c语言的源代码阿(全分奉送)? 请问:如何处理MFC提供的CList类模板产生的异常问题呢? 散分!快抢! 调用对象 阿呆,只有你能救我了~~!!!!! 100大洋~~!!! Excel报表的汇总 请问VC有像Delphi或者C++Builder那样的作报表的工具吗? delphi怎么调用CHM文件啊? win98 登陆win nt Java远程调用的合法类型(legal types for Java RMI)都有哪些? 安装盘的制作问题 如何设置多个Timer? VFP的程序怎么才能运行在任何目录下?主程序应该怎么写? 这个问题很老套,但对于一个什么想成为一个优秀程序员的菜鸟来说,很重要,谢谢!进入........... @_@ 怎么灌水? 向资深灌水工请教! 难到这个问题没人回答吗?????http://www.csdn.net/Expert/topic/430/430088.shtm StringGrid中单元格合并问题? Delphi的TMainMenu和TPopupMenu没有Font属性,请问如何修改它们的字体? like 查询小问题 紧急求救:网管程序开发! 请问那理由chm格式的javascript的帮助可以下载啊? 这是为什么!---关于TQuery, Update, Sql 在WinCE中,怎样capture screen并存于bmp文件中? rtsp是什么协议? 怎么在CDialog 中嵌入CView 问个小问题 帮俺看看好吗? 一个梯形,下底长14CM,高12CM,如果下底减少6CM,它就成为一个平行四边形.梯形的面积是多少? 153与145变速器怎样区分 长方形木框长20厘米,宽10厘米,拉成平行四边形后,面积减少了120平方厘米,拉成的这个平型四边形的高是? 根号5在4*4方格上怎么画急 从一个边数为九的的多边形的一个顶点出发,连接这点与其余各顶点,将该多条边形分割成多少个三角形? 一个长方形,长是12厘米,宽是5厘米,现在把它拉成平行四边形,面积减少了24平方厘米.求平行四边形的高.方程 10*10的方格中怎样画根号三不用尺子等辅助工具:calli159 怎么画根号2与1垂直 插入一个图片 把一个长是12cm、宽9cm的长方形,拉成一个高为10cm的平行四边形,这个平行四边形的面积是多少 如图RT三角形ABC的锐角定点A在反比例函数y=m/x的图像上,且三角形AOB的面积为3,OB=3.(1)求点A的坐标(2)求函数y=m/x的表达式(3)直线AC的函数表达式为y=2/7x+8/7,求三角形ABC的面积 利用4*4的方格画出边长为根号5的正方形只要算式,越快越好 把一个长12cm,宽6cm的长方形,拉成一个高是10cm的平行四边形,这个平行四边形的面积是( )cm2?今天就要啊 最近公司需要购买两台洒水车,3-5吨的洒水车,不知道用哪种洒水车型号好.请指教洒水车型号有哪些? 两个同样的梯形上底长23cm下底长27cm高20cm如果把这两个梯形分拼成一个平行四边形平行四边形的面积是多少是练习册上的, 把一个长15cm,宽8cm的长方形,拉成一个高是12cm的平行四边形,这个平行四边形的面积是多少?还有三角形的面积一定,底和高成正比例这是对还是错? ()水车()成语,一个就够了 一个平行四边形的一条边是27cm,高是15cm,另一条边是18cm,另一条边上的高是多少? 把一个长12cm,宽8cm的长方形,拉成高为9cm的平行四边形,这个平行四边形的面积是?把一个长12cm,宽8cm的长方形,拉成一个高为9cm的平行四边形,这个平行四边形的面积是多少 主要过程 洒水车的用途? 一个圆周上有9个点,以这9个点为顶点作3个三角形.当这3个三角形无公共顶点且边互不相交时,我们把它称为一种构图,满足这样条件的构图共有______种 东风天锦洒水车电路总开关在什么位置 如图,在直角坐标系中,一次函数y=-根号3x+根号3的图像分别与x轴、y轴相交于点A、B,△ABC是等边三角形.求[1]:点A,B,C的坐标,[2],已知二次函数的图像经过A,B,C三点,求这个二次函数的解析式[3] 将[2] 平面α外的一侧有一个三角形,三个顶点到α的距离分别是7,9,13.则这个三角形的重心到α的距离为? △ABC内一点P,过P作三边的平行线,所得的小三角形面积分别为4,9,49那么△ABC面积是多少? ,做不出已知直角坐标系中,一次函数y=-根号3/3x+2的图像分别于x轴、y轴交与点A和点B,若以AB为 腰的等腰三角形的底角为30°,试求C的坐标只需告诉我点有几个告诉过程当然更好 正八边形的中心和顶点共9个点,以其中3个点为顶点的三角形有多少个 如图,过△ABC内一点分别做三边的平行线,形成三个小三角形①·②·③,如果这三个小三角形面积分别为4·9 在直角坐标系中,一次函数y=负根号3 x+根号3的图像分别与x轴,y轴相交于点A,B,三角形ABC是等边三角形1,求点A,B,C的坐标;2,已知二次函数的图像经过A,B,C三点,求这个二次函数的解析式3,将(2)所 平面上有9个点,以这些点为顶点,能组成多少个三角形 过△ABC内一点分别作三边的平行线形成三个小三角形①②③,如果这三个小三角形面积分别为4、9、16,求△ABC 如图,平行四边形ABCD的底AB是18CM,高是6CM,M是AB的中点,求阴影部分的面积、 平行四边形的周长是78cm,以CD为底时,它的高是18cm;AC是24cm,求它的面积. 一辆洒水车,洒水时每分钟行150米洒水宽度是6米.洒水车行驶23分钟,能给多大的地面洒上水 一个平行四边形的底长18cm高是底的二分之一,他的的面积是( ),还有一个直径是4cm的半圆形,他的周长是( ),面积是( ),课本的宽是xcm,长比宽多2cm,课本的面积是( ).6个边长为2cm的正方 一个平行四边形的周长是78CM(如图),以CD为底时,它的高是18CM,BC是24CM,求它的面积. 一辆洒水车,每分钟行驶50米,洒水的宽度是8米.洒水车行驶3分钟,能给多大的地面洒上水? 平整场地,洒水车洒水怎么算平整场地单位是平方米,根据工程量套定额洒水车洒水时单位却是立方米,想问一下,洒水车洒水的工程量是怎样计算的 一个平行四边形a.b.c.d周长是78cm,c.d作底边,高是18cm,bc长24cm,求梯形的面积? 一辆洒水车,每分钟行驶48米,洒水的宽度是8米,洒水车每小时能给多大的地面洒上水? 已知点A(0,0)B(根号3,1)C(0,1)在△ABC内依次作等边三角形,使一边在在X轴上、另一个顶点在BC边上作出的等边三角形分别是第1个△A1A1B1,第二个△B1A2B2,第3个△B2A3B3,....则第n个等边三 一个平行四边形的周长是78CM,以CD为底时,它高是18CM,BC是24CM,求它的面积. 一辆洒水车每小时行驶30千米,洒水的宽度是6米,洒水车行驶了23分钟,能给多大的地面洒水上水? 如图平面直角系中等边三角形ABC的顶点A的坐标为(-2 根号3,0)BC在y轴上如图平面直角系中等边三角形ABC的顶点A的坐标为(-2 根号3,0) B,C在y轴上.〈1〉写出BC两点坐标〈2〉求三角形ABC面积周长 一个平行四边形的周长是78cm(如图),以CD做底时,它的高是18cm,又知BC是4cm,求这个梯形的面积 用四根木条钉成一个底是12cm,高是6cm的平行四边形,被拉成一个长方形后,面积增加36平方厘米,这个平行四 如图所示,已知点A(0,0),B(根号3,0),C(0,1).在△ABC内依次作等边三角形,使一边在在X轴上、另一个顶点在BC边上,作出的等边三角形分别是第1个△A1A1B1,第二个△B1A2B2,第3个△B2A3B3,.,则第n个 一个多边形从一个顶点引出的对角线将它分成9个三角形,它是几边形? 用四根木条钉成一个底是18cm,高是12cm的平行四边形,如果把它拉成一个长方形后,面积增加了45平方千米,那么四根木条一共长多少厘米 一个平行四边形的周长是78cm(如图),以CD为底时,它的高是18cm,又BD是24cm,求它的面积.图形形状是平行四边形,AD对角,BC对角.帮下忙啦~~~~ 一个梯形的下底是上底的二分之三倍,下底为18cm,高为10cm,这个梯形的面积 Rt△AOB的顶点A是一次函数y=-x+m+3的图像与反比例函数y=的图像在第二象限的交点,且S△AOB=1求点A. 已知直角坐标系内两点a(3根号3,0)和b(0,3),以线段ab为边作等腰三角形abc,求顶点c的坐标 一个梯形的下底是上底的二分之三倍,下底为18cm,高为10cm,这个梯形的面积? 已知Rt三角形ABO的顶点A是一次函数y=x+m和反比例函数y=n/x的图像在第一象限内的交点,且S三角形ABO=3如果线段AC的延长线与反比例函数的图像的另一个分支交与D点,过D作DE垂直于x轴于E,那么三角 1.在等腰三角形abc中,∠C=90,AC=BC,将一块三角板的直角顶点p放在AB中点上,两直角边补充:两直角边与AC,BC交于D,E,连接DE.(1)PD与PE有什么大小关系?三角形PDE是什么三角形?(2)若三角板两直角 水平放置的小瓶内装有水,中有气泡当瓶子突然从静止向右加速 则小气泡将如何运动 从九边形一顶点出发做对角线,可做几条对角线?,分成了几个三角形? 用两台水泵抽水,先用大水泵抽水5小时,后用小水泵抽水6小时,共抽水430吨,已知小水泵5小时的抽水量等于大水泵3小时的抽水量.小水泵每小时抽多少吨水 在上底18cm,下底30cm,高12cm的梯形中剪下一个最大的平行四边形,剩下的面积是多少平方厘米?列式计算 把一个八变形的一个顶点与其余各定点连接,可把这个八边形分割成几个三角形急! 用两台抽水机,小的抽6小时,大的抽8小时,一共抽水312立方米,小的5小时的抽水量等于大的2小时的抽水量,大的每小时抽水【 】立方米,小的每小时抽水【 】立方米.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn