我用QuickReport做了个打印的小程序,动态创建QRLabel控件,放在QRband内,QRLabel是个数组类型的,当QRLabel显示的个数超过一页的时候,怎样实现报表的换页继续显示呢?请大家帮忙,先谢了。

解决方案 »

  1.   

    很简单,利用rbdetail,将数组放在其中,自动换页了
      

  2.   

    请问freemandad:你说的rbdetail指的是QRSubDetail控件吗,如果是它的话,那我用QRSubDetail代替QRBand了,好像还是不能自动换页呀?
      

  3.   

    你要自己计算纸张的大小换页。quickrep1.NewColumn
      

  4.   

    QRBand有个forcenewpage属性,你跟据自己的条件动态设置为true就能换页了
      

  5.   

    我用上面的方发试过了,换页是实现了,可是QRLabel的位置好像不对,分两页显示时第一页总是为空,第二页显示的内容有一部分被第一页的内容给覆盖了,请问各位大侠这是怎么回事?能帮我看一下程序吗,下面是我的一段代码如下:
    procedure Buttomn1click();
    begin
        linecount:=(j div 8);
        for i:=0 to j-1 do
        begin
          IDLabel[i]:=TQRLabel.Create(self);
          IDLabel[i].ParentReport:=FormRep.QuickRep1;
          IDLabel[i].Parent:=FormRep.QRSubDetail1;
          IDLabel[i].AutoStretch:=true;
          IDLabel[i].WordWrap:=true;
          IDLabel[i].Frame.DrawTop:=true;
          IDLabel[i].Frame.DrawBottom:=true;
          IDLabel[i].Frame.DrawLeft:=true;
          IDLabel[i].Frame.DrawRight:=true;
          IDstr:=inttostr(IDbeg+8*LineCount+k);
          case length(IDstr) of
          1:strID[i]:=Format('000000%d',[IDbeg+i]);
          2:strID[i]:=Format('00000%d',[IDbeg+i]);
          3:strID[i]:=Format('0000%d',[IDbeg+i]);
          4:strID[i]:=Format('000%d',[IDbeg+i]);
          5:strID[i]:=Format('00%d',[IDbeg+i]);
          6:strID[i]:=Format('0%d',[IDbeg+i]);
          7:strID[i]:=Format('%d',[IDbeg+i]);
          end;      IDLabel[i].Caption:=chr(13)+'  产品序号:'+chr(13)+'  '+CboType.Text+strID[i]+' '+chr(13)+'  (撕毁不保修) ';      if (i=0) or ((i mod 8)=0) then
            IDLabel[i].Left:=0
          else
            IDLabel[i].Left:=IDLabel[i-1].Left+92;
          IDLabel[i].Font.Size:=9;
          IDLabel[i].Font.Name:='宋体';      if i>159 then
          begin
            FormRep.QRSubDetail1.ForceNewPage:=true;
            IDLabel[i].Top:=52*((i-159) div 8);      end
          else
            IDLabel[i].Top:=52*(i div 8);
          IDLabel[i].Height:=52;
          IDLabel[i].Width:=100;      IDLabel[i].Visible:=true;
        end;
      end