首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

Delphi 中怎么用代码设置打印机的默认纸张

2012-03-27 
Delphi 中如何用代码设置打印机的默认纸张?目前打印机的默认纸张为A4,我想在程序中改变为的自定义的纸张AA

Delphi 中如何用代码设置打印机的默认纸张?
目前打印机的默认纸张为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 PrintersProcedure 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

[解决办法]
探讨
1.在程序在用代码创建一种自定义纸张“AAA(24*14CM)”;
2.打印时用代码设置打印机默认纸张为这种自宝义纸张;
3.打印后还原打印机的默认纸张;

热点排行