在程序中,如何得到默认打印机的页边距?既打印纸左侧和顶部距第一个可打印字符的最小距离。

解决方案 »

  1.   

    获取打印页边距 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;
      

  2.   

    quickrep1.left(top right bottom)