📄 report.txt
字号:
//数据集 gzda_dm.ADODataSet_cx
//表单 Form_zhcx
在QuickRep1上加上如下的边:
1、page header 2、column header 3.detal 4.sub detal 5.summary 6.page footer
在page header边上放置:
(1).QRLabel1 //标题
(2).QRLabel2 //日期:
(3).QRSysData1 //页号
定义以下全局变量:
myhs:integer; //每页打印的行数
bz:boolean; //预览或打印时是否到未尾标志
dybz:boolean; //打印是否是在预览的时候时打印
first_bz:boolean; //是否第一次预览,用以在第一次以后预览或打印时清除上一次打印或预览时所创建
i:integer; //的控件
hjtext1:array[1..40] of TQRExpr;
//以下用以在第一次以后预览或打印时清除上一次打印或预览时所创建的控件
cheader1:array[1..40] of Tqrlabel;
byhj_xs:integer; //本页合计的线数;
shap1:array[1..60] of Tqrshape; //本页合计的线类型;
report_width:integer; //Extended; //保存报表的总宽度
//===================
在窗体的create事件过程在加入以下代码用以初始化全局变量:
i:=0; //当前每页打印行数初始值
myhs:=28; //打印初始每页28行
bz:=false; //预览时是否到未尾标志
dybz:=false; //在打印时是否是在预览时打印.
first_bz:=true; //是否第一次预览
//=======================
在预览按钮的单击事件中加入以下代码,用以动态创建各类控件:
creat_report; //建立动态报表
gzda_dm.ADODataSet_cx.DisableControls ;
quickrep1.preview;
first_bz:=false;
gzda_dm.ADODataSet_cx.first;
gzda_dm.ADODataSet_cx.enableControls ;
//=============
在打印按钮的单击事件中加入以下代码,用以动态创建各类控件:
creat_report; //建立动态报表
gzda_dm.ADODataSet_cx.DisableControls ;
if PrinterSetupDialog1.Execute then
begin
quickrep1.print;
first_bz:=false;
end;
gzda_dm.ADODataSet_cx.first;
gzda_dm.ADODataSet_cx.enableControls ;
//==========================
创建名为creat_report的过程(在不同的表单和数据集中要修改“表单名”和“数据集名”)
procedure TForm_zhcx.creat_report;
var
leftv,j:integer; //leftv为报表起始位置
cheader:Tqrlabel;
detailtext:Tqrdbtext;
shap:Tqrshape;
hjtext:TQRExpr;
nian,yue,ri:word;
begin
leftv:=0;
QuickRep1.DataSet:=gzda_dm.ADODataSet_cx; //定义快速报表的数据环境
QuickRep1.Bands.HasColumnHeader:=false; //清空原来的值 表头
QuickRep1.Bands.HasDetail:=false; //明细
quickrep1.Bands.HasSummary:=false; //总合计
if not first_bz then
for j:=1 to byhj_xs-1 do shap1[j].free; //清除“本页合计“线
for j:=1 to 40 do cheader1[j].free; //清除值"本页合计"值
byhj_xs:=1;
QuickRep1.Bands.HasPageFooter:=false;
QuickRep1.Bands.HasColumnHeader:=true;
QuickRep1.Bands.HasDetail:=true;
QuickRep1.Bands.HasPageFooter:=true;
quickrep1.Bands.HasSummary:=true;
DetailBand1.AfterPrint:=DetailBand1AfterPrint;
DetailBand1.BeforePrint:=DetailBand1BeforePrint;
SummaryBand1.AfterPrint:=SummaryBand1AfterPrint;
PageFooterBand1.BeforePrint:=PageFooterBand1BeforePrint;
ColumnHeaderBand1.Height:=30; //表头的字体
ColumnHeaderBand1.Font.Size:=dbgrid1.Columns[0].Title.Font.Size;
ColumnHeaderBand1.font.Name:=dbgrid1.Columns[0].Title.Font.Name;
DetailBand1.Height:=26; //明细的字体
DetailBand1.Font.Size:=dbgrid1.Columns[0].Title.Font.Size;
DetailBand1.Font.Name:=dbgrid1.Columns[0].Title.Font.name;
QRSubDetail1.Height :=26; //页合计的字体
QRSubDetail1.Font.Size:=dbgrid1.Columns[0].Title.Font.Size;
QRSubDetail1.Font.Name :=dbgrid1.Columns[0].Title.Font.name;
SummaryBand1.Height :=26; //总合计的字体
SummaryBand1.Font.Size:=dbgrid1.Columns[0].Title.Font.Size;
SummaryBand1.Font.Name :=dbgrid1.Columns[0].Title.Font.name;
report_width:=0;
for j:=0 to dbgrid1.Columns.Count-1 do begin //以窗体上的表格为摸板创建标题栏
cheader:=Tqrlabel.Create(Form_zhcx);
with cheader do begin //创建标题栏中的标题
parent:=Form_zhcx.ColumnHeaderBand1;
caption:=dbgrid1.Columns[j].Title.Caption;
width:=dbgrid1.Columns[j].Width;
Alignment :=taCenter;
height:=Form_zhcx.ColumnHeaderBand1.Height;
left:=leftv+2;
top:=12;
end; //====================
shap:=Tqrshape.Create(Form_zhcx); //创建标题栏中的竖线
with shap do begin
parent:=Form_zhcx.ColumnHeaderBand1;
shape:=qrsvertline;
width:=1;
height:=Form_zhcx.ColumnHeaderBand1.Height;
left:=leftv+1;
top:=1;
end; //=====================
leftv:=dbgrid1.Columns[j].Width+leftv; //为变量leftv累加
end; //==
//==========================
report_width:=leftv; //表格的总宽度
QRLabel1.Left:=(report_width-strtoint(floattostr(QRLabel1.Width))) div 2; //标题的开始显示位置
DecodeDate(cx_rq.date,nian,yue,ri);
QRLabel2.Caption:='日期:'+inttostr(nian)+'年'+inttostr(yue)+'月';
QRLabel2.Left:=(report_width-strtoint(floattostr(QRLabel2.Width))) div 2; //日期标题的开始显示位置
QRSysData1.Left:=(report_width-strtoint(floattostr(QRSysData1.Width)))-30; //页号的位置
//===================
shap:=Tqrshape.Create(Form_zhcx); //为标题栏画上下两条横线
with shap do begin //上横线
parent:=Form_zhcx.ColumnHeaderBand1;
shape:=qrsHorLine;
width:=leftv-2;
height:=1;
left:=1;
top:=1;
end; //======
shap:=Tqrshape.Create(Form_zhcx); //下横线
with shap do begin
parent:=Form_zhcx.ColumnHeaderBand1;
shape:=qrsHorLine;
width:=leftv-2;
height:=1;
left:=1;
top:=Form_zhcx.ColumnHeaderBand1.Height-2;
end; //======
shap:=Tqrshape.Create(Form_zhcx); //创建标题中的最左边一条竖线
with shap do begin
parent:=Form_zhcx.ColumnHeaderBand1;
shape:=qrsvertline;
width:=1;
height:=Form_zhcx.ColumnHeaderBand1.Height;
left:=leftv-1;
top:=1;
end;
leftv:=0; //清变量为O
for j:=0 to dbgrid1.Columns.Count-1 do begin //==========创建明细栏
detailtext:=Tqrdbtext.Create(Form_zhcx); //创建明细值
with detailtext do begin
parent:=Form_zhcx.DetailBand1;
dataset:=gzda_dm.ADODataSet_cx; //设定数据集
datafield:=dbgrid1.Columns[j].FieldName;
width:=dbgrid1.Columns[j].Width;
Alignment :=taCenter;
height:=Form_zhcx.DetailBand1.Height;
left:=leftv+2;
top:=8;
end;
shap:=Tqrshape.Create(Form_zhcx); //创建竖线
with shap do begin
parent:=Form_zhcx.DetailBand1;
shape:=qrsvertline;
width:=1;
height:=Form_zhcx.DetailBand1.Height;
left:=leftv+1;
top:=-2;
end; //=========
leftv:=dbgrid1.Columns[j].Width+leftv;
end;
shap:=Tqrshape.Create(Form_zhcx); //为明细栏创建一条横线
with shap do begin
parent:=Form_zhcx.DetailBand1;
shape:=qrsHorLine;
width:=leftv-2;
height:=1;
left:=1;
top:=Form_zhcx.DetailBand1.Height-2;
end;
shap:=Tqrshape.Create(Form_zhcx); //创建明细栏最左边一条竖线
with shap do begin
parent:=Form_zhcx.DetailBand1;
shape:=qrsvertline;
width:=1;
height:=Form_zhcx.DetailBand1.Height;
left:=leftv-1;
top:=-1;
end;
leftv:=0; //清变量为O
for j:=0 to dbgrid1.Columns.Count-1 do begin //=创建本页合计(不打印)
if copy(dbgrid1.Columns[j].Title.Caption,1,1)=' ' then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -