如何获得当前打印机设置的纸张边距

解决方案 »

  1.   

    获取打印页边距uses Printers;procedure TForm1.Button1Click(Sender: TObject);varEscapeCode : integer;Margin : TPoint;beginif PrintDialog1.Execute then begin{$IFDEF WIN32}Margin.x :=GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);Margin.y :=GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);{$ELSE}EscapeCode := GETPRINTINGOFFSET;if Escape(Printer.Handle,QUERYESCSUPPORT,sizeof(EscapeCode),@EscapeCode,nil) <> 0 thenif Escape(Printer.Handle,GETPRINTINGOFFSET,0,nil,@Margin) < 1 then beginEscapeCode := GETPHYSPAGESIZE;if Escape(Printer.Handle,QUERYESCSUPPORT,sizeof(EscapeCode),@EscapeCode,nil) <> 0 thenif Escape(Printer.Handle,GETPHYSPAGESIZE,0,nil,@Margin) > 0 then beginMargin.x := (Margin.x -GetDeviceCaps(Printer.Handle, HorzRes)) div 2;Margin.y := (Margin.y -GetDeviceCaps(Printer.Handle, VertRes)) div 2;end else beginMargin.x := 0;Margin.y := 0;end;end;{$ENDIF}Memo1.Lines.Add(IntToStr(Margin.x));Memo1.Lines.Add(IntToStr(Margin.y));end;end;