为了解决不同的计算机,打印时所出现的偏差问题(用的是A3纸,FASTREPORT控件)
用如下程序
var Margin: TPoint;
begin
    Margin.x := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
    Margin.y := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
    showMessage('x:' + IntToStr(Margin.x) + '  ' + 'y:' + IntToStr(Margin.y));
end;
查出相同的一台打印机,在2000下,得到的是x:23 y:60,可在98下面,我看到的是x:0  y:0
所以打印出来的东西位置相差太大,请问有什么办法可以设置系统当前的打印机边距?

解决方案 »

  1.   

    你的理解有错误!PHYSICALOFFSETX得到的并不是真正的页边距,而是可打印区与纸张边缘的距离。这个值是逻辑单位,而且往往很小。不只在不同的操作系统,在不同的打印机设置下这个值是有可能不同的。我们往往在打印大幅图片的时候,无论怎么设置,打印出来总会有一道白边(当然有些打印机支持无边缘打印),就是这个原因。一般打印程序所说的页边距,是指文档的边缘与可打印区边缘的距离。是需要通过你自己来控制和定位的。
      

  2.   

    那么如何解决98下面打印和WIN2000下面打印时,总是对不准指定的位置的问题?不是边距那是什么呢?
      

  3.   

    哎搞了半天还是没解决,现在我拿出去的方案是98和WIN2000下各做一套打印模版,完成的难看了点.