在RAVE设计报表时想精确定位,因此想将单位改成熟悉的mm,在RvSystem中的(TSystemPrinter)下的units中改了,好像没有什么作用,而且我根据我的纸张中某个字段需要存放的位置用尺子量出来,然后在设计界面中根据标尺放到相应的位置,可是打印出来的时候位置居然差距较大,也不知道到它里面的度量单位到底是什么。
   就算定好位置了,换个纸型(比如A4变成A5)位置又变了,我真不知道设计时那个位置是什么位置,我根据量好的位置去设计字段位置相差这么打,它那标尺有什么用啊?我还担心换个打印机是否又会位置移动啊
   大家应该遇到过这些问题吧,说出来共享共享,帮帮忙,先谢谢了

解决方案 »

  1.   

    使用过一段时间的Rave感觉挺不符合中国人的习惯的。虽然功能很强大。如果做普通格式的报表还可以。当时我用Rave做了一个发票的套打。你碰到这个问题始终没有解决。他就两个单位要么用厘米要么用英寸,但是我调整了很久都出现乱走纸的问题。后来还是通过QuickReport解决了。RaveReport关于精确打印的资料很少。我想应该是可以解决的,你在打印服务器里把你的字定义纸张添加进去,然后设置为当前纸张看看。
      

  2.   


         to: xiaocuo_zrf(女巫手上的猫)         用过QuickReport的是吗?帮帮我吧!!!!
    http://community.csdn.net/Expert/topic/4213/4213500.xml?temp=.9690058
      

  3.   

    楼主给你以下建议:如果想让打印程序在任何打印机上都能正常地打印,你就必须改变你的度量单位。如果采用固定
    的度量,不同分辨率的打印效果是不同的。举例来讲:printerCanvasrectangle
    (0,0,360,720)在360×360的佳能4200SP上能打出一个1英寸宽、2英寸高的矩形,但在600×600的
    惠普6L上只能打出06英寸宽、12英寸高的矩形。使用打印机的点数做为度量单位是一个明智
    的选择。具体做法如下:VarPointX,PointY:integer;PointX:=GetDeviceCaps
    (printerHandle,LOGPIXELSX);PointY:=GetDeviceCaps
    (printerHandle,LOGPIXELSX);printerCanvasrectangle(0,0,PointX*1,PointY*2)这
    样,无论你使用什么样的打印机,都能得到一个1英寸宽、2英寸高的矩形。试一试应该有用。