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

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 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

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