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;