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

本文共 1379 字,大约阅读时间需要 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 or

DM_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;

 

转载地址:http://hzdzl.baihongyu.com/

你可能感兴趣的文章
vue2.0中父子,兄弟组件的传值2
查看>>
Spring Boot注解常用!!!看了就可以开发大量项目了
查看>>
音频编码 Audio Converter
查看>>
SQL - case when then else end 的用法
查看>>
web优化是http缓存(上)
查看>>
19-01-14
查看>>
媒体融合三部曲(未完待续...)
查看>>
OkHttp3-拦截器(Interceptor)
查看>>
Bootstrap在实际生产开发中的使用心得
查看>>
Google推出实时内容洞察工具 为用户提供表现最好的内容
查看>>
虚拟机故障与故障处理工具之指令篇
查看>>
iOS 基础知识学习目录索引
查看>>
My_Base_notes
查看>>
Node assert断言学习及mocha框架与travisCI初探
查看>>
大话转岗 PHP 开发小结
查看>>
React的状态管理
查看>>
寻找一种易于理解的一致性算法(扩展版)下
查看>>
MySQL - 高可用性:少宕机即高可用?
查看>>
2018电影票房分析-谁才是票房之王
查看>>
程序员可以干到多少岁?
查看>>