如何在程序执行中设置打印机纸张类型?(50分)

  • 主题发起人 主题发起人 浦欣
  • 开始时间 开始时间

浦欣

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在程序执行中设置打印机纸张类型?并且不用PrintDlg和PrintSetupDlg。
 
你把要设置的纸张类型先保存起来, 在设置时取出,按用printDlg时的设置不就行了.
 
可以用api,自己openprinter,设置devmode.
 
procedure ChangePaperType(value: Integer);
var
sDrv: Pchar;
sPrt: Pchar;
DevAdr: THandle;
p: PDeviceModeA;
begin
sdrv := allocmem(256);
sprt := allocmem(64);
devadr := 0;
try
printer.GetPrinter(sdrv, sdrv, sprt, devadr);
p := ptr(devadr);
p^.dmFields := DM_PAPERSIZE;
p^.dmPaperSize := value;
do
cumentProperties(0, printer.handle, sdrv, p^, p^,
DM_IN_BUFFER);
finally
freemem(sdrv, 1024);
freemem(sprt, 256);
end;
end;
 
Another_eYes:
为何我的Delphi不认DocumentProperties函数?
并且如何设置页边距?
 
我的邮箱pux@yeah.net有问题
请将邮件寄到pux@soim.net中,谢谢!
 
uses winspool, printers;
就会认DocumentProperties了.
设页边距只有你用程序实现了, 打印机不提供该功能(所有支持宽度内都可打).
 
在深度历险上发现这个控件,也许有用

PRINTSET.ZIP
TPrintSet 构件让您很容易的配置多项打印机功能,例如配置打印机连接的 Print Port、配置打
印的页宽即页高、配置引表机设备驱动过程名称、配置打印解析度等 ( 4.0 版,附源码 ),作者
: Eminentdo
main Software。
 
接受答案了.
 
后退
顶部