如何在程序中控制纸张的大小(100分)

  • 主题发起人 主题发起人 l213
  • 开始时间 开始时间
L

l213

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi中打印机中纸张的设置都要用到对话框中,现想不用弹出对话框,直接在程序中指定约约纸张的大小。
望大家帮忙。
 
代码:
var
adevice,adriver,aport:array [0..255] of char;
devicehandle:thandle;
devmode:pdevicemode;
begin
printer.GetPrinter(adevice,adriver,aport,devicehandle);
if devicehandle=0 then
begin
printer.PrinterIndex:=printer.PrinterIndex;
printer.GetPrinter(adevice,adriver,aport,devicehandle);
end;

if devicehandle<>0 then
devmode:=GlobalLock(devicehandle);
printer.GetPrinter(adevice,adriver,aport,devicehandle);
if devicehandle=0 then
begin
printer.PrinterIndex:=printer.PrinterIndex;
printer.GetPrinter(adevice,adriver,aport,devicehandle);
end;

if Devicehandle=0 then
Raise Exception.Create('无法初始化设备,请检查')
else
DevMode:=GlobalLock(DeviceHandle);
with devmode^do
begin
dmFields := dmFields or DM_PAPERSIZE;
dmPaperSize := DMPAPER_USER;
dmFields := dmFields or DM_PAPERWIDTH;
dmPaperWidth := 2100;//纸宽
dmFields := dmFields or DM_PAPERLENGTH;
dmPaperlength:= 2970;//纸长
end;

IF NOT DEvicehandle=0 then
GlobalUnlock(DeviceHandle);
end;
end;
 
顺便问一下,如何在程序中设置打印方向是横向还是纵向?
 
接受答案了.
 
我原来在查DocumentProperties,看了半天没看懂,谢谢了x_coffee了。
bestxxs,你可以用类似的方法的,可以在win32api的帮助中看到相关帮助的。
 
后退
顶部