zoukankan      html  css  js  c++  java
  • 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;

     

  • 相关阅读:
    ros 使用命令测试topic
    python unicode
    python ros 回充demo
    python ros 回充调用demo
    flask报错No module named 'flask.ext'
    python flask 接口
    ros 安装c++编译的可执行文件
    Linux-Ubuntu14.04下mongodb安装部署
    如何在Ubuntu 14.04中安装最新版Eclipse
    ubuntu 14.04 安装redis5.0.3
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2940760.html
Copyright © 2011-2022 走看看