我是这样实现的:
先判断纸张的大小公用几行?然后在printer方法里加入追加空行的代码,当然这是一个临时表
:)

解决方案 »

  1.   

    printer方法是什么對象的方法? copy代碼給我如何﹖
      

  2.   

    本人刚刚做过类似的打印程序,采用方法如下:
    数据部份用QRSubDetail而非QRBand控件,尔后在QRSubDetail的OnNeedData事件中判断数据库Eof属性和报表有没有满页时,若不满页仍然使MoreData:=True,直到满页。 
    (注:判断报表是否满页用QuickReport的属性RecordNumber和RecordCount.)
    若有不明之处,请Email联系。
    Email:[email protected]
      

  3.   

    To IUPRG:
    说得对,临时表确实是个好方法,但若类似报表比较多,临时表岂非太麻烦了?
      

  4.   

    procedure Taaa.QuickRep1BeforePrint(Sender: TCustomQuickRep;
      var PrintReport: Boolean);
    begin
    Compensate(QRStringsBand1,jtkjfzxmDM.pswyCD,12);
    PrintReport:=true;
    end;
    procedure Compensate(ABand:TQRStringsBand;Adataset:Tdataset;Num:integer);
    var i:integer;
    begin
      i:=Num-Adataset.RecordCount;
    //  showmessage(inttostr(i));
      if i<=1 then Exit;   //不必做补足
      DupBand(ABand,i);
    end;
    procedure DupBand(ABand:TQRStringsBand;BandsNum:integer);
    var sl:TStringList;
        i:integer;
    begin
       sl:=TStringList.Create;
       for i:=1 to BandsNum do
        sl.Add(' ');
        ABand.Items:=sl;
    end;
    这样做最好,你记得要在TQRStringsBand上画好线。TQRStringsBand要接在QRSubDetail1后面。
      

  5.   

    Compensate(QRStringsBand1,jtkjfzxmDM.pswyCD,12);
    指的是全部打算打12行,如果jtkjfzxmDM.pswyCD(这是从我的代码里抄出来的table)里的记录不足12条就用TQRStringsBand来补足。
    可以把下面两个过程单独拿出来,因此每次只需写上面第一个过程就行了。
    给我分吧!!!!!