博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TPrinter控制打印机
阅读量:4975 次
发布时间:2019-06-12

本文共 1417 字,大约阅读时间需要 4 分钟。

TPrinter 类是Delphi 对Windows 打印处理系统的封装,它能够帮助程序员在开发打印程序时尽可能地减少工作量。在程序中使用TPrinter,只要在单元的Use 子句后面添加Printers 即可。当前打印机的DevMode 结构的句柄可以通过调用Tprinter 类中的GetPrinter 方法来获取。当程序获得DevMode 结构的句柄后,就调用GlobalLock 函数来得到指向该结构的指针,随后可对结构中的某些成员进行修改。下面就举一个例子来说明这一问题:假设当前打印机的默认纸张尺寸是A3 纸,现在要打印长度为114mm、宽度为190mm 的纸张。为了简单起见,我们只在Form1 上放置一个Button1 按钮,增加一个OnClick 事件,在Use 子句后添加Printers。程序的代码如下:   Procedure TForm1.Button1Click(Sender: TObject);var Device : array[0..cchDeviceName -1] of Char; Driver : array[0..(MAX_PATH -1)] of Char; Port : array[0..32]of Char; hDMode : THandle; pDMode : PDevMode;begin  Printer.GetPrinter(Device,Driver,Port,hDMode);// 获取打印机DevMode 结构的句柄值, 存放在hDMode 中  if hDMode < > 0 then begin    pDMode := GlobalLock(hDMode);// 获取指向打印机DevMode 结构的// 指针    if pDMode < > nil then begin     pDMode^.dmPaperSize := 256;// 如果要将当前打印机纸张变为自定义dmPaperSize 必须设置成256   pDMode^.dmPaperLength := 1140;   pDMode^.dmPaperWidth := 1900;   pDMode^.dmFields := pDMode^.dmFields orDM_PAPERSIZE; pDMode^.dmFields :=  pDMode^.dmFields or DM_PAPERLENGTH; pDMode^.dmFields :=  pDMode^.dmFields or DM_PAPERWIDTH;   {
 以上三条语句是对相应    的dmFields 成员进行置位。}   ResetDC(Printer.Handle,pDMode^);// 设置打印机设备环境句柄的值   GlobalUnlock(hDMode);   end;  end;{
下面的代码是为了测试打印机是否 按190 *114 纸张大小来打印}  with Printer do begin   BeginDoc;   Canvas.TextOut(10,10,'Hello, My Friend!');   EndDoc;  end;end;

 

转载于:https://www.cnblogs.com/tk-del/archive/2013/05/02/3054600.html

你可能感兴趣的文章
BZOJ 3097 Hash Killer I
查看>>
UINavigationController的视图层理关系
查看>>
html阴影效果怎么做,css 内阴影怎么做
查看>>
BZOJ1026: [SCOI2009]windy数
查看>>
样板操作数
查看>>
64位UBUNTU下安装adobe reader后无法启动
查看>>
组件:slot插槽
查看>>
Nginx配置文件nginx.conf中文详解(转)
查看>>
POJ 1308 Is It A Tree?(并查集)
查看>>
N进制到M进制的转换问题
查看>>
springIOC第一个课堂案例的实现
查看>>
求输入成绩的平均分
查看>>
php PDO (转载)
查看>>
wordpress自动截取文章摘要代码
查看>>
[置顶] 一名优秀的程序设计师是如何管理知识的?
查看>>
highcharts 图表实例
查看>>
SpringBoot 优化内嵌的Tomcat
查看>>
highcharts曲线图
查看>>
extjs动态改变样式
查看>>
宏定义
查看>>