QuickRep打印

 打印的字段多,用QRCompositeReport1实现联合,

1.一个QRCompositeReport1,三个QuickRep,每个QuickRep上有rbTitle,rbDetail和基本字段;第一个QuickRep还有rbColumnHeader,

相关:uses   QuickRpt,   QRExport,   QRCtrls,   QrPrntr;  
  rbSubDetail声明在上面四个Unit之中。

后面的QuickRep显示caption要设置rbTitle,不能用rbColumnHeader

代码:

var
  iLeft,i,tleft,mleft,jleft,hleft,nleft : integer;
begin
  if not Assigned(dbGrid1.DataSource) then Exit;
  if not Assigned(dbGrid1.DataSource.DataSet) then Exit;

  iLeft := 0;
  tleft := 0;
  jLeft := 150;
  mleft := 0;
  hLeft := 150;
  nleft := 0;

  for I := 0 to dbgrid1.Columns.Count-1 do
  begin
  if dbgrid1.Columns.Items[I].Visible then
  begin
    tLeft := iLeft + dbgrid1.Columns.Items[I].Width;
    if tLeft <= ColumnHeaderBand2.ClientWidth then      //1
    begin
      with TQRLabel.Create(ColumnHeaderBand2) do
      begin
        Parent := ColumnHeaderBand2;
        Left := iLeft;
        Width := dbgrid1.Columns.Items[I].Width;
        Caption := dbgrid1.Columns.Items[I].Title.Caption;
        Alignment := dbgrid1.Columns.Items[I].Title.Alignment;
        Top := ColumnHeaderBand2.Height - 2 - height;
      end;

      //TQRDBText--------------------
      with TQRDBText.Create(DetailBand2) do
      begin
        Parent := DetailBand2;
        Left := ileft;
        Width := dbgrid1.Columns.Items[I].Width;

        iLeft := iLeft + Width;  //

        DataSet := dbgrid1.DataSource.DataSet;
        DataField := dbgrid1.Columns.Items[i].FieldName;
        Alignment := dbgrid1.Columns.Items[I].Title.Alignment;
        Top := DetailBand2.Height - 2 - height;
      end;
    end
    else begin                    //1
      mLeft := jLeft + dbgrid1.Columns.Items[I].Width;
      if mLeft <= ColumnHeaderBand3.ClientWidth then //2
      begin
        with TQRLabel.Create(ColumnHeaderBand3) do
        begin
          Parent := ColumnHeaderBand3;
          Left := jLeft;
          Width := dbgrid1.Columns.Items[I].Width;
          Caption := dbgrid1.Columns.Items[I].Title.Caption;
          Alignment := dbgrid1.Columns.Items[I].Title.Alignment;
          Top := ColumnHeaderBand3.Height - 2 - height;
        end;

        //TQRDBText--------------------
        with TQRDBText.Create(DetailBand3) do
        begin
          Parent := DetailBand3;
          Left := jleft;
          Width := dbgrid1.Columns.Items[I].Width;

          jLeft := jLeft + Width;  //

          DataSet := dbgrid1.DataSource.DataSet;
          DataField := dbgrid1.Columns.Items[i].FieldName;
          Alignment := dbgrid1.Columns.Items[I].Title.Alignment;
          Top := DetailBand3.Height - 2 - height;
        end;
      end
      else begin
         nLeft := hLeft + dbgrid1.Columns.Items[I].Width;
      if nLeft <= ColumnHeaderBand4.ClientWidth then
      begin
        with TQRLabel.Create(ColumnHeaderBand4) do
        begin
          Parent := ColumnHeaderBand4;
          Left := hLeft;
          Width := dbgrid1.Columns.Items[I].Width;
          Caption := dbgrid1.Columns.Items[I].Title.Caption;
          Alignment := dbgrid1.Columns.Items[I].Title.Alignment;
          Top := ColumnHeaderBand4.Height - 2 - height;
        end;

        //TQRDBText--------------------
        with TQRDBText.Create(DetailBand4) do
        begin
          Parent := DetailBand4;
          Left := hleft;
          Width := dbgrid1.Columns.Items[I].Width;

          hLeft := hLeft + Width;  //

          DataSet := dbgrid1.DataSource.DataSet;
          DataField := dbgrid1.Columns.Items[i].FieldName;
          Alignment := dbgrid1.Columns.Items[I].Title.Alignment;
          Top := DetailBand4.Height - 2 - height;
        end;
      end
      else break;
      end;
    end;
    end
    else continue;

  end;

      QRCompositeReport1.Prepare;
      QRCompositeReport1.Preview;
  //QuickRep2.Preview;

end;


在QuickRep1.SummaryBand1.AfterPrint中加上NewPage,第二份Preview的報表才會換頁.

procedure TFrm_gzgl_jsgz.QRCompositeReport1AddReports(Sender: TObject);
begin
      QRCompositeReport1.Reports.Add(QuickRep2);
      QRCompositeReport1.Reports.Add(QuickRep3);
      QRCompositeReport1.Reports.Add(QuickRep4);
end;

procedure TFrm_gzgl_jsgz.SummaryBand3AfterPrint(Sender: TQRCustomBand;
  BandPrinted: Boolean);
begin
 QuickRep3.NewPage;
end;

procedure TFrm_gzgl_jsgz.SummaryBand2AfterPrint(Sender: TQRCustomBand;
  BandPrinted: Boolean);
begin
  QuickRep2.NewPage;
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值