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