Delphi 中怎么用代码设置打印机的默认纸张
Delphi 中如何用代码设置打印机的默认纸张?
目前打印机的默认纸张为A4,我想在程序中改变为的自定义的纸张AAA(AAA为我自定义的纸张类型24cm*14cm)
在执行打印后,再将打印机的默认纸张还原为A4. 请教高手们如何实现,谢谢。。。。。
------解决方案--------------------
目前打印机的默认纸张为A4,我想在程序中改变为的自定义的纸张AAA(AAA为我自定义的纸张类型24cm*14cm)
在执行打印后,再将打印机的默认纸张还原为A4. 请教高手们如何实现,谢谢。。。。。
------解决方案--------------------
- Delphi(Pascal) code
{fastreport:} Procedure TForm1.Button1Click(Sender:TObject); var report:TfrxReport; page:TfrxReportPage; begin page:=TFrxReportPage(frxReport1.FindObject('Page1')); page.PaperSize:=DMPAPER_A3{指定A3} ... end; {Printer:} uses 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); if hDMode<>0 then begin pDMode:=GlobalLock(hDMode); if pDMode<> nil then begin pDMode^.dmPaperSize:=256; pDMode^.dmPaperLength:=1140; //指定長114mm pDMode^.dmPaperWidth:=1900; //指定寬190mm pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERSIZE; pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERLENGTH; pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERWIDTH; ResetDC(Printer.Handle,pDMode^); GlobalUnlock(hDMode); end; end; with Printer do{測試} begin BeginDoc; Canvas.TextOut(10,10,'Hello,Jack!'); EndDoc; end; end;
------解决方案--------------------
用API DocumentProperties打开默认的属性页改,对当前程序有效不会覆盖系统默认的参数
- Delphi(Pascal) code
var ADevice,ADriver, APort:Array[0..255] of char; DeviceHandle,hPrinter:THandle; PDMode: PDEVMODE; begin Printer.GetPrinter(ADevice,ADriver, APort, DeviceHandle); pDMode := GlobalLock(DeviceHandle); WinSpool.OpenPrinter(pDMode^.dmDeviceName,hPrinter,nil); DocumentProperties(hDialog,hPrinter,ADevice,pDMode^,pDMode^,DM_IN_PROMPT or DM_OUT_BUFFER or DM_IN_BUFFER); ClosePrinter(hPrinter); GlobalUnlock(DeviceHandle); end;
------解决方案--------------------
var
page: TfrxReportPage;
begin
page:=TFrxReportPage(frxReport1.FindObject('Page1'));
page.PaperSize:=DMPAPER_A4 //DMPAPER_A3,DMPAPER_A5,DMPAPER_LETTER ...
...
上面是直接指定纸张,或者这样指定宽和高
page.PaperWidth
page.PaperHeight
------解决方案--------------------