我在作一个系统时,需要打印用针式打印机打印收据,收据的纸张就是复写纸性质的。可以一次打印三联。但是我在打印的时候用的是quickReport控件,位置是可以了,但是我每次走纸过多。走了有A4纸张的长度,但是收据的大小是A4纸张的三分之一。
我该怎么办?在程序中怎么控制?
改变打印机的默认的纸张大小,怎么也不行?

解决方案 »

  1.   

    if amountprinted + LineHeight>printer.pageHeight/3 then   
    begin
      amountprinted:=0;
      if not printer.aborted then
             printer.newpage;
             //printheader;
             //printcolumnnames;
    end;
    //amountprinted    打印高度
    //LineHeight       行高
      

  2.   

    双击quickReport中设置纸张长度(用尺量一下发票长度)设置单位为mm
      

  3.   

    hunter_zxy(hunter) 兄:
    我在QuickReport中设置了大小为241×93,在针式打印机中也设置了,否则打印都不行,但是就是还在走纸?
      

  4.   

    SilveryFox(银狐)兄:
    我是直接的用的QuickReport,在打印的时候也是直接的调用的QuickReport.Print,那怎么控制打印的高度。我可没有用canvas直接的写。
      

  5.   

    njbudong(午夜游民) 兄:
    是在打印机的属性中进行设置,还是在程序中。
      

  6.   

    njbudong(午夜游民) 兄:
    我的打印机就是EPSON的LQ-1600K。在属性中怎么没有呢?大约在什么地方?
    谢谢指教!!!
      

  7.   

    不在操作系统的属性中,跟操作系统没有关系的,你把纸张设成自定义,去掉不可打印的区域在打印机本身的设置中啊.你可以看说明书啊..
    我用的就是LQ-1600K就是这样设置的.打印走纸一定问题都没有
      

  8.   

    njbudong(午夜游民) 兄:
    在程序中肯定也是可以设置的,我们用的原来的一个小的软件就可以直接的打印收据,没有什么问题,但是现在换上我的...
    我感觉十分的没有face,因此请教各位高手了,帮我想想,是什么地方没有设置吗?还是采用别的方式。
      

  9.   

    强烈关注。我也遇到同样问题,而且我试过设置打印机属性,之后在EXCEL里面打印走纸正常(严格按照属性设置走纸),但是我的程序调用同样的打印驱动就不正常,(我已经将默认打印机的属性该过了)难道我的程序没有调用默认的打印驱动?怎么选择打印驱动呢?高手请出着。
      

  10.   

    我也是此问题啊,高手请把源码列出来啊,是否要用到printer对像啊,怎么用啊,不管在qr里如何设置,但就是按A4来打印呢。程序中为何不能职到打印设置中的纸型参数啊。 
    关注啊
      

  11.   

    我发现最近问这个问题的特别多,还是塞外飞鹄来给大家解决这个问题:
    第一,在控制面板中将打印机的纸张设为自定义大小。
    第二,设计报表时,将报表设为自定义大小,且报表要以像素为单位,如果不这样打印时会跳行,且记!!!
    第三,在打印报表时用程序指定报表长度,如果记录数固定,则将长度指定为固定值,如果不固定,则用如下公式:报表长度=表头高度(Height),表体明细高度*记录数+表尾长度。
      

  12.   

    最后,给一段实在的程序:
    FrmReport.QuickRep1.Page.Length=FrmReport.QRBandTitle.Height+FrmReport.QrBandDetail.Height*Query.RecordCount+FrmReport.QRBandSummary.Height;

    FrmReport.QuickRep1.Page.Length=200; //注意,这里长度以像素为单位
    FrmReport.QuickRep1.Print;
      

  13.   

    对不起,打错了一个符号,特作更正(这里的长度是指设计报表时各Band的Height属性值):
    报表长度=标题长度+列标题长度+明细长度*记录数+页脚长度。