Quickreport万能打印程序

原创 2004年07月14日 16:07:00

作程序经常使用报表打印,使用delphi编程最长用的是使用quickreport做报表打印,rave是在delphi7中才出现的,我用quickreport做了一个万能打印程序,由于时间紧迫,没有时间优化和美化,欢迎网友修改。

他的基本思想是:动态的取dataset中的列,动态的生成报表,程序如下:

unit unit_QReport_lxr;

interface

uses Windows, SysUtils, Messages, Classes, Graphics, Controls,
  StdCtrls, ExtCtrls, Forms, QuickRpt, QRCtrls, DB, ADODB,Dialogs;

type
  TQReport_lxr = class(TQuickRep)
    DetailBand1: TQRBand;
    TitleBand1: TQRBand;
    bb_title: TQRLabel;
    ColumnHeaderBand1: TQRBand;
  private

  public
    function bb_prepare(objAdoQuery:TDataSet;haveFirstCol:boolean):boolean;
  end;

var
  QReport_lxr: TQReport_lxr;

implementation

{$R *.DFM}
function TQReport_lxr.bb_prepare(objAdoQuery:TDataSet;haveFirstCol:boolean):boolean;
file://haveFirstCol:boolean;是否打印dataset中的第一列,true打印,false 不打印
var
     la:TQRLabel ;
     te:TQRDBText;
     row_la:integer;
     row_te:integer;
     re_width:integer;
     left_bj:integer;
     i:integer;
     j:integer;
     m:integer;
     hafn:integer;
begin

        if  (objAdoQuery.Fields.Count<=0)then
        begin
             messagedlg('请您先做查询,再打印报表!',mtInformation,[mbyes],0);
             result:=false;
             exit;
        end;
        self.DataSet:=objAdoQuery;
        if objAdoQuery.RecordCount<>0 then
        begin
             row_la:=0;
             row_te:=0;
             left_bj:=0;
             j:=0;
             re_width:=DetailBand1.Width;
             m:=re_width div 100;

             file://注意:是否放弃objAdoquery中的第一列
            if haveFirstCol
            then hafn:=0
            else hafn:=1;

             for i:=hafn  to objAdoQuery.FieldCount-1 do
             begin
                  if j=m then
                  begin
                       left_bj:=0;
                       row_la:=row_la+1;
                       row_te:=row_te+1;
                       j:=0;
                       ColumnHeaderBand1.Height:=ColumnHeaderBand1.Height+27;
                       DetailBand1.Height:=DetailBand1.Height+27;
                  end;
                  la:=TQRLabel.Create(self);
                  la.Caption:=objAdoQuery.Fields[i].FieldName;
                  la.Width:=100;
                  la.Height:=17;
                  la.Left:=left_bj;
                  la.Top:=30+(la.Height+10)*row_la;
                  la.Parent:=ColumnHeaderBand1 ;


                  te:=TQRDBText.Create(self);
                  te.DataSet:=objAdoQuery;
                  te.DataField:=objAdoQuery.Fields[i].FieldName;
                  te.Width:=100;
                  te.Height:=17;
                  te.Left:=left_bj;
                  te.Top:=30+(te.Height+10)*row_te;
                  te.Parent:=DetailBand1;
                  te.AutoStretch:=true;

                  left_bj:=(j+1)*105;
                  j:=j+1;
             end;
        end;
      result:=true;
    end;
end.

调用程序如下:

procedure TFrm_sbcx_yin.BitBtn_xxxx_dyClick(Sender: TObject);
var
  qp:TQReport_lxr;
begin
  qp:=TQReport_lxr.Create(self);
  qp.bb_title.Caption:='设备类别查询';
  if qp.bb_prepare(ADOQuery_xxxx,false)
  then begin
    qp.Prepare;
    qp.Preview;
    qp.hide;
  end;
  qp.free;
end;

delphi开发学习五:QuickReoprt报表控件使用实例

报表是数据库应用程序设计中非常重要的一部分,数据库应用程序通常都要生成报表,并且打印出来。      在Delphi7.0中,默认情况下没有直接使用的QuickReport组件,使用时需先进行手工安装...
  • u011846249
  • u011846249
  • 2015年08月20日 21:46
  • 2352

DELPHI 7.0软件 自带有报表 Quick Report组件(TQRShape等所有组件 说明)

DELPHI7.0软件自带有报表Quick Report组件,但是默认的情况下,工具栏中是没有的,需要手动添加,步骤:   component->install packages->add->\bo...
  • u011704389
  • u011704389
  • 2014年02月26日 15:41
  • 1514

关于java编写简易版 控制台输出万年历

在控制台输出万年历 结果图如下: 代码`package com.exercise;import java.util.Scanner;public class Demo2 { ...
  • sxj159753
  • sxj159753
  • 2016年03月08日 20:10
  • 2614

用QuickReport实现Delphi多栏打印

原帖地址 : http://old.uplook.cn/biancheng/7/76090/   在很多有关Delphi的书籍中,都没有讲解如何实现一个打印项的多栏打印,而现实生活中往往有许多报表...
  • piaoyao424
  • piaoyao424
  • 2013年02月25日 09:18
  • 644

QuickReport 打印预览汉化

  • 2006年01月13日 09:51
  • 0B
  • 下载

QuickReport 分页打印演示

  • 2006年01月13日 09:51
  • 445KB
  • 下载

codergear/c++builder/delphi 报表打印控件 quickreport v4.07

  • 2008年09月10日 20:13
  • 9.08MB
  • 下载

QuickReport打印DBGrid中的数据

  • 2008年10月27日 16:19
  • 445KB
  • 下载

C#实现万能打印程序

  • 2013年07月31日 21:24
  • 253KB
  • 下载

QuickReport打印预览汉化

  • 2006年02月23日 09:05
  • 352KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Quickreport万能打印程序
举报原因:
原因补充:

(最多只允许输入30个字)