TPrinter控制票據打印機

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;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值