📄 qd_rep.pas
字号:
unit qd_rep;
interface
uses
Windows, Messages, Variants, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Db, ADODB, ImgList, StdCtrls, Buttons, ComCtrls, dbctrls, menus,
Math,ComObj,Gauges,grids,DBGrids,pubunit,Contnrs,printers, FR_Class,DBGridEh,
hu_pub,Types,OleCtrls,ExtCtrls,pub_rep;
{取得清单字体}
function getqdzt(str:string):string;
{取得清单字号}
function getqdzh(str:string):integer;
{取得清单字体颜色}
function getqdys(str:string):integer;
{取得框的高度}
function getqdh(fontname,str:string;fontsize:integer):integer;
{取得框的宽度}
function getqdw(fontname,str:string;fontsize:integer):integer;
{创建清单报表标题部分}
procedure creatqdbt(frrep:TfrReport;npage:integer;mygrid:Tstringgrid);
{创建清单表注下}
procedure createqdbzx(frrep:TfrReport;npage:integer;nup:integer;mygrid:TStringgrid);
{创建清单报表表头标题部分}
procedure createqdbtbb(frrep:TfrReport;npage:integer;mygrid:TStringGrid);
{创建工程量清单封面}
procedure rep_qdfm(frrep:TfrReport;dmrepmode:TRepMode;npage:integer); ///创建报表
{取得分部分项工程量清单数据}
procedure getgcqdlist(mygrid:TStringGrid);
{创建分部分项工程量清单}
procedure creatgcqd(frrep:TfrReport;mygrid:TStringGrid;dmDocMode:TDocMode;dmrepmode:TRepMode;npage:integer;strselectid:string); //创建报表
{给分部分项工程量数祖值}
procedure setqdlist;
{计算分部分项工程量清单}
function calgclqd(i:integer;mygrid:TStringGrid;ncol:integer):string;
{取得分部工程清单项目费汇总表数据}
procedure getxmqdlist(mygrid:TStringGrid);
{取得分部分项工程量清单计价表数据}
procedure getjjbqdlist(mygrid:TStringGrid);
{取得分部分项工程量清单计算表数据}
procedure getjsbqdlist(mygrid:TStringGrid);
{创建分部分项工程量清单综合单价计算表表头部分}
procedure creatqddjbt(frrep:TfrReport;npage,ntop:integer;mygrid:TStringgrid);
{给数组}
procedure setqdjsblist(i:integer);
{取得清单表注部分字符(相对于分部分项工程量单价计算表而言的)}
function getqdstr(str:string):string;
{创建分部分项工程量清单综合单价计算表报表表头标题部分}
procedure createqdjsbbtbb(frrep:TfrReport;npage:integer;mygrid:TStringGrid;nt:integer);
{创建分部分项工程量清单综合单价计算表}
procedure creatgcqdjsb(frrep:TfrReport;mygrid:TStringGrid;b_falg:boolean); //分两种格式来处理
procedure creatgcqdjsb1(frrep:TfrReport;mygrid:TStringGrid;dmrepmode:TRepMode;npage:integer); //创建报表
{取得其他项目清单的数据}
procedure getqtxmqd;
{取得零星工作项目数据}
procedure getlxgzxm;
{计算其他项目清单数据}
function calqtxmqd(i:integer;mygrid:TStringGrid;ncol:integer):string;
{计算零星工作项目清单数据}
function callxxm(i:integer;mygrid:TStringGrid;ncol:integer):string;
{创建其他项目工程量清单}
procedure createqtxmqd(frrep:TfrReport;mygrid:TStringGrid;dmDocMode:TDocMode;dmrepmode:TRepMode;npage:integer;strselectid:string); //创建报表
{取得分部分项工程量清单综合单价计算表数据}
procedure getzhdjqdlist(mygrid:TStringGrid);
{创建零星工作项目工作表报表}
procedure createlxxm(frrep:TfrReport;mygrid:TStringGrid;dmDocMode:TDocMode;dmrepmode:TRepMode;npage:integer;strselectid:string); //创建报表
{创建人才机综合报表}
procedure cretercjzh(frrep:TfrReport;mygrid:TStringGrid;dmDocMode:TDocMode;IsAllrcj:TdmAllrcj;dmrepmode:TRepMode;npage:integer;strselectid,strselectbh:string); //创建报表
//---------------------------------------------提取数据部分
{提取分部分项工程量清单数据到万用表中}
procedure getfbfxgclqd(mygrid,mygrid1:TStringgrid);
{提取其他项目或零星工作项目数据}
procedure getqtxmlxxm(str:string;mygrid:TStringGrid);
//end 提取数据
{创建清单万用表表格}
procedure createqdwyb(frrep:TfrReport;mygrid:TStringGrid;dmDocMode:TDocMode;dmrepmode:TRepMode;npage:integer;strselectid:string); //创建报表
{取得三个数中最大的数}
function getmax(n1,n2,n3:integer):integer;
{取得取费表的数据}
procedure getqdqf(strtemp:string);
{计算清单取费数据}
function calqdqf(i:integer;mygrid:TStringGrid;ncol:integer):string;
{创建取费汇总报表}
procedure creteqdhz(frrep:TfrReport;mygrid:TStringGrid;dmDocMode:TDocMode;dmrepmode:TRepMode;npage:integer;strselectid,strselectbh:string); //创建报表
{取得清单或措施项目数据}
procedure getqd_xmlist(mygrid:TStringGrid);
{取得清单所有人材机数据}
procedure getqd_allrcj;
{取得万用表总页数}
function getwybpagecount(str:string;mygrid:TStringGrid):integer;
{取得计算表报表总页数}
function getjsbpagecount(str1:string;mygrid:TStringgrid):integer;
{取得计算表竖排表报表总页数}
function gethjsbjpagecount:integer;
{取得单价分析总页数}
function getdjfxpagetcount(str1:string;mygrid:TStringgrid):integer;
{取得动态费率报表总页数}
function getdtflpagecount(str:string;mygrid:TStringgrid):integer;
{取得人材机,价差报表总页数}
function getrcjpagecount(strselectid,str:string;mygrid:TStringgrid;IsAllrcj:TdmAllrcj):integer;
{取得取费报表总页数}
function getqfpagecount(strselectid,str:string;mygrid:TStringgrid):integer;
{取得清单封面设计数据}
function getqdfmsjpage(str:string;mygrid:TStringgrid):integer;
{取得分部分项工程量清单,措施项目清单报表总页数}
function getgclqdpage(str:string;mygrid:TStringgrid):integer;
{取得工程量清单报表总页数}
function getgclqdjsbpage(mygrid:TStringGrid):integer;
{取得其他项目报表总页数}
function getqtxmpage(str:String;mygrid:TStringgrid):integer;
{取得零星项目报表总页数}
function getlxxmpage(str:string;mygrid:Tstringgrid):integer;
{取得清单人材机报表总页数}
function getqdrcjpage(strselectid,str:string;mygrid:TStringGrid;IsAllrcj:TdmAllrcj):integer;
{取得清单取费报表总页数}
function getqdqfpage(str:string;mygrid:TStringGrid;strselectbh:string):integer;
{创建所有报表即报表连继预览,可以连继打印}
procedure Allreplist(frrep:TfrReport;mygrid:TStringGrid;mytree:TTreeview);
var
gcqdlist:Tobjectlist;
qtxmqdlist:Tobjectlist;
array_hj:array[1..40] of real;
array_dj:array[1..6] of string;
array_qd:array[1..26] of string;
implementation
uses MAIN,ys,F_qdfm,Hu_jsfy;
{取得清单字体}
function getqdzt(str:string):string;
begin
if Trim(str)<>'' then
Result:=Trim(str)
else
result:='宋体';
end;
{取得清单字号}
function getqdzh(str:string):integer;
begin
if Trim(str)<>'' then
Result:=strtoint(str)
else
Result:=9;
end;
{取得清单字体颜色}
function getqdys(str:string):integer;
begin
if Trim(str)<>'' then
Result:=strtoint(str)
else
Result:=-2147483640;
end;
{取得框的高度}
function getqdh(fontname,str:string;fontsize:integer):integer;
begin
mainform.l_label.Canvas.Font.Name:=fontname;
mainform.l_label.Canvas.Font.Size:=fontsize;
Result:=mainform.l_label.Canvas.TextHeight(str)+7;
end;
{取得框的宽度}
function getqdw(fontname,str:string;fontsize:integer):integer;
begin
mainform.l_label.Canvas.Font.Name:=fontname;
mainform.l_label.Canvas.Font.Size:=fontsize;
Result:=mainform.l_label.Canvas.TextWidth(str)+10;
end;
{创建报表标题表头部分}
procedure creatqdbt(frrep:TfrReport;npage:integer;mygrid:Tstringgrid);
var
v:TfrMemoView;
line:TfrLineView;
page:TfrPage;
ntopdis,nleftdis,nbottomdis:integer;//报表上,下,左,右边距的值
dx,dy:integer; //报表纸张的宽度和高度 ntop:integer; //表头离纸的高度
nwidth:integer; //报表实际宽度
nw,nh:integer;
nl:integer;
ntemp:integer;
nmax_width:array[1..3] of integer;
nmax,i:integer;
begin
page:=frrep.Pages.Pages[npage];
nleftdis:=strtoint(array_jbxx[4])*3;
ntopdis:=strtoint(array_jbxx[5])*3;
nbottomdis:=strtoint(array_jbxx[7])*3;
if Trim(array_jbxx[8])='1' then
begin
dx:=getpagew(0,True);
dy:=getpageh(0,True);
end
else
begin
dx:=getpagew(0,False);
dy:=getpageh(0,False);
end;
ntemp:=0;
for i:=0 to mygrid.ColCount-1 do
ntemp:=ntemp+mygrid.ColWidths[i];
if Trim(array_jbxx[1])='1' then //表头框架的宽度
nwidth:=ntemp
else
nwidth:=ntemp-mygrid.ColWidths[0];
//创建报表的页眉和页脚是否有下划线
if Trim(array_jbxx[2])='1' then
begin
line:=TfrLineView.Create;
line.SetBounds(nleftdis,ntopdis,nwidth,20);
page.Objects.Add(line);
end;
if Trim(array_jbxx[3])='1' then
begin
line:=TfrLineView.Create;
line.SetBounds(nleftdis,dy-nbottomdis,nwidth,20);
page.Objects.Add(line);
end;
//end************************************************
//创建报表页眉和页脚文字
//页眉
if Trim(array_jbxx[20])<>'' then
begin
v:=TfrMemoView.Create;
nw:=getqdw(getqdzt(array_dyxx[2]),getstr(array_jbxx[20]),getqdzh(array_dyxx[3]));
nh:=getqdh(getqdzt(array_dyxx[2]),getstr(array_jbxx[20]),getqdzh(array_dyxx[3]));
v.SetBounds(nleftdis,ntopdis-18,nw,nh);
v.Font.Name:=getqdzt(array_dyxx[2]);
v.Font.Size:=getqdzh(array_dyxx[3]);
v.Font.Color:=getqdys(array_dyxx[4]);
v.Memo.Add(getstr(array_jbxx[20]));
page.Objects.Add(v);
end;
if Trim(array_jbxx[21])<>'' then
begin
v:=TfrMemoView.Create;
nw:=getqdw(getqdzt(array_dyxx[2]),getstr(array_jbxx[21]),getqdzh(array_dyxx[3]));
nh:=getqdh(getqdzt(array_dyxx[2]),getstr(array_jbxx[21]),getqdzh(array_dyxx[3]));
v.SetBounds(Round(nwidth/2)-60,ntopdis-18,nw,nh);
v.Font.Name:=getqdzt(array_dyxx[2]);
v.Font.Size:=getqdzh(array_dyxx[3]);
v.Font.Color:=getqdys(array_dyxx[4]);
v.Memo.Add(getstr(array_jbxx[21]));
page.Objects.Add(v);
end;
if Trim(array_jbxx[22])<>'' then
begin
v:=TfrMemoView.Create;
nw:=getqdw(getqdzt(array_dyxx[2]),getstr(array_jbxx[22]),getqdzh(array_dyxx[3]));
nh:=getqdh(getqdzt(array_dyxx[2]),getstr(array_jbxx[22]),getqdzh(array_dyxx[3]));
v.SetBounds(nwidth-nh+nleftdis,ntopdis-18,nw,nh);
v.Font.Name:=getqdzt(array_dyxx[2]);
v.Font.Size:=getqdzh(array_dyxx[3]);
v.Font.Color:=getqdys(array_dyxx[4]);
v.Alignment:=9;
v.Memo.Add(getstr(array_jbxx[22]));
page.Objects.Add(v);
end;
//页脚
if Trim(array_jbxx[23])<>'' then
begin
v:=TfrMemoView.Create;
nw:=getqdw(getqdzt(array_dyxx[5]),getstr(array_jbxx[23]),getqdzh(array_dyxx[6]));
nh:=getqdh(getqdzt(array_dyxx[5]),getstr(array_jbxx[23]),getqdzh(array_dyxx[6]));
v.SetBounds(nleftdis,dy-nbottomdis,nw,nh);
v.Font.Name:=getqdzt(array_dyxx[5]);
v.Font.Size:=getqdzh(array_dyxx[6]);
v.Font.Color:=getqdys(array_dyxx[7]);
v.Memo.Add(getstr(array_jbxx[23]));
page.Objects.Add(v);
end;
if Trim(array_jbxx[24])<>'' then
begin
v:=TfrMemoView.Create;
nw:=getqdw(getqdzt(array_dyxx[5]),getstr(array_jbxx[24]),getqdzh(array_dyxx[6]));
nh:=getqdh(getqdzt(array_dyxx[5]),getstr(array_jbxx[24]),getqdzh(array_dyxx[6]));
v.SetBounds(Round(nwidth/2)-60,dy-nbottomdis,nw,nh);
v.Font.Name:=getqdzt(array_dyxx[5]);
v.Font.Size:=getqdzh(array_dyxx[6]);
v.Font.Color:=getqdys(array_dyxx[7]);
v.Memo.Add(getstr(array_jbxx[24]));
page.Objects.Add(v)
end;
if Trim(array_jbxx[25])<>'' then
begin
v:=TfrMemoView.Create;
nw:=getqdw(getqdzt(array_dyxx[5]),getstr(array_jbxx[25]),getqdzh(array_dyxx[6]));
nh:=getqdh(getqdzt(array_dyxx[5]),getstr(array_jbxx[25]),getqdzh(array_dyxx[6]));
v.SetBounds(nwidth-nh+nleftdis,dy-nbottomdis,nw,nh);
v.Font.Name:=getqdzt(array_dyxx[5]);
v.Font.Size:=getqdzh(array_dyxx[6]);
v.Font.Color:=getqdys(array_dyxx[7]);
v.Alignment:=9;
v.Memo.Add(getstr(array_jbxx[25]));
page.Objects.Add(v);
end;
//end***********************************************结束
//创建报表的标题部分
//题注左
if Trim(array_jbxx[9])<>'' then
begin
v:=TfrMemoView.Create;
nw:=getqdw(getqdzt(array_dyxx[8]),getstr(array_jbxx[9]),getqdzh(array_dyxx[9]));
nh:=getqdh(getqdzt(array_dyxx[8]),getstr(array_jbxx[9]),getqdzh(array_dyxx[9]));
v.SetBounds(nleftdis,ntopdis,nw,nh);
v.Font.Name:=getqdzt(array_dyxx[8]);
v.Font.Size:=getqdzh(array_dyxx[9]);
v.Font.Color:=getqdys(array_dyxx[10]);
v.Memo.Add(getstr(array_jbxx[9]));
page.Objects.Add(v);
end;
if Trim(array_jbxx[10])<>'' then
begin
v:=TfrMemoView.Create;
nw:=getqdw(getqdzt(array_dyxx[8]),getstr(array_jbxx[10]),getqdzh(array_dyxx[9]));
nh:=getqdh(getqdzt(array_dyxx[8]),getstr(array_jbxx[10]),getqdzh(array_dyxx[9]));
v.SetBounds(nleftdis,ntopdis+20,nw,nh);
v.Font.Name:=getqdzt(array_dyxx[8]);
v.Font.Size:=getqdzh(array_dyxx[9]);
v.Font.Color:=getqdys(array_dyxx[10]);
v.Memo.Add(getstr(array_jbxx[10]));
page.Objects.Add(v);
end;
if Trim(array_jbxx[11])<>'' then
begin
v:=TfrMemoView.Create;
nw:=getqdw(getqdzt(array_dyxx[8]),getstr(array_jbxx[11]),getqdzh(array_dyxx[9]));
nh:=getqdh(getqdzt(array_dyxx[8]),getstr(array_jbxx[11]),getqdzh(array_dyxx[9]));
v.SetBounds(nleftdis,ntopdis+40,nw,nh);
v.Font.Name:=getqdzt(array_dyxx[8]);
v.Font.Size:=getqdzh(array_dyxx[9]);
v.Font.Color:=getqdys(array_dyxx[10]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -