100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > delphi 获取打印机默认纸张_Delphi 动态调整打印机纸张大小

delphi 获取打印机默认纸张_Delphi 动态调整打印机纸张大小

时间:2022-07-31 08:59:53

相关推荐

delphi 获取打印机默认纸张_Delphi 动态调整打印机纸张大小

改与当前打印机相关的DevMode 结构中的成员。DocumentProperties 函数申明如下:

Delphi代码

LONG DocumentProperties

(

HWND hWnd,

HANDLE hPrinter,

LPTSTRpDeviceName,

PDEVMODEpDevModeOutput,

PDEVMODEpDevModeInput,

DWORD fMode

);

LONG DocumentProperties

(

HWND hWnd,

HANDLE hPrinter,

LPTSTRpDeviceName,

PDEVMODEpDevModeOutput,

PDEVMODEpDevModeInput,

DWORD fMode

);

六个参数中只有pDevModeOutput 是输出变量,其余五个参数必须由程序给出具体值。其中,hWnd 表征当前窗口的句柄值;hPrinter 表示当前打印机的句柄;pDeviceName 是对打印机设备的描述;pDevModeOutput 是指向句柄值为hPrinter 的打印机DevMode 结构的指针;pDevModeInput 是指向一个修改后的DevMode 结构的指针,该结构有待于被句柄值为hPrinter 的打印机接受;fMode 定义了该函数的具体功能,如果取值DM_IN_BUFFER 那么表示打印机接受由参数pDevModeInput 表示的由程序修改了的DevMode 值,如果取值DM_OUT_BUFFER 那么程序可以通过参数pDevModeOutput 来获取打印机的DevMode 值,如果fMode 为零,则函数返回的值表示结构DevMode 所需的字节数。承接上述例子,现在将190 *114 大小的纸张设成A4 纸。再往Form1 上放置按钮Button2,增加OnClick 事件,在Use 子句后面添加WinSpool。代码如下:

delphi 代码:

Procedure TForm1.Button2Click(Sender: TObject);

var

PrnHd:THandle;

PrnInfo : PPrinterInfo1;

pcbNeeded : DWORD;

PDevModeBytes : DWORD;

DevMode: PDeviceMode;

PrnHdc : HDC;

DocInfo : PDocInfo;

begin

OpenPrinter('Epson LQ -1600K',PrnHd,nil);

// 获得打印机句柄PrnHd

GetMem(PrnInfo,1024);

GetPrinter(PrnHd,1,PrnInfo,1024,@pcbNeeded);

PDevModeBytes:= DocumentProperties

( Handle,PrnHd,prninfo^.

pDescription,DevMode^,DevMode^,0 );

{获取DevMode 结构所需的字节数}

GetMem(DevMode,PDevModeBytes);

// 给结构DevMode 分配空间

DocumentProperties( Handle,PrnHd,PrnInfo^.p

Description,DevMode^,DevMode^,DM_OUT_BUFFER );

// 获取打印机的DevMode 结构

With DevMode^ do begin

dmPaperSize := DMPAPER_A4 ;

// 将纸张设置成A4 纸

dmFields := dmFields or DM_PAPERSIZE;

end;

DocumentProperties( Handle,PrnHd,PrnInfo^.p

Description,DevMode^,DevMode^,

DM_OUT_BUFFER or DM_IN_BUFFER);

// 修改DevMode 结构。

{ 下面的代码是为了测试打印机

是否按A4 纸大小来打印}

PrnHdc := CreateDC

( nil, 'Epson LQ -1600K',nil,DevMode );

GetMem( DocInfo, 100 );

With DocInfo^ do begin

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。