打印页边据

解决方案 »

  1.   

    得到页边距:
    Margin.x :=GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);{页边距X}
    Margin.y :=GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);{页边距y}
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        PrintDialog1: TPrintDialog;
        Memo1: TMemo;
    //    procedure FormCreate(Sender: TObject);
      //  procedure FormClick(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}//获取打印页边距
    uses Printers;procedure TForm1.Button1Click(Sender: TObject);
    var
    EscapeCode : integer;
    Margin : TPoint;
    begin
    if 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 then
    if Escape(Printer.Handle,
    GETPRINTINGOFFSET,
    0,
    nil,
    @Margin) < 1 then
    begin
    EscapeCode := GETPHYSPAGESIZE;
    if Escape(Printer.Handle,
    QUERYESCSUPPORT,
    sizeof(EscapeCode),
    @EscapeCode,
    nil) <> 0 then
    if Escape(Printer.Handle,
    GETPHYSPAGESIZE,
    0,
    nil,
    @Margin) > 0 then
    begin
    Margin.x := (Margin.x -
    GetDeviceCaps(Printer.Handle, HorzRes)) div 2;
    Margin.y := (Margin.y -
    GetDeviceCaps(Printer.Handle, VertRes)) div 2;
    end else begin
    Margin.x := 0;
    Margin.y := 0;
    end;
    end;
    {$ENDIF}
    Memo1.Lines.Add(IntToStr(Margin.x));
    Memo1.Lines.Add(IntToStr(Margin.y));
    end;
    end;end.