资源描述:
《fastreport报表合并单元格技巧》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Fastreport报表合并单元格技巧在做企业的ERP,SCM,CRM等等的软件中,经常要做的就是报表,如财务报表,生产车间报表。很多时候企业可能对报表格式提出特别的要求,但作为软件开发公司,能设计开发出符合客户要求的报表就显得十分迫切。以下我对报表的合并技巧作一个总结,希望对后面要做类似报表的同事有些帮助。合并报表1:江苏美的春花电器股价有限公司-委外加工材料月结表在没有合并之前显示如下:在对供应商编码和材料编码进行合并后显示如下:8对于合并功能,其实fastreport是有的,但这个功能做得远远不够,不能按客户的要求进行合并,要完成上述功能,我是通过下面的方法做
2、出来的。这种要求的合并要结合Delphi与Fastreport来协作完成。首先然前台Delphi相应方法中编写有关的算法,然后在Fastreport中根据这种算法作相应的显示。操作方法如下:1.选中Fastreport的主数据项,双击OnBeforePrint方法,在beginend之间编写代码:81.MainData.Height:为每行数据显示的高度,2.[CLTAutoreporthead_AutoreportlineOfAutoreporthead."Flag"]:表示要合并的行数(Delphi算法),3.memo7.visible:是否显示单元格,[CLT
3、Autoreporthead_AutoreportlineOfAutoreporthead."Search_Flag"]=2:(Delphi算法),只要在Delphi中把要合并的行数与列用字段Flag(控制行数),Search_Flag(控制是否可见,2为可见)算出来,再在FastReport中显示出来,那么合并功能就算搞好。以下是在Delphi中的合并算法代码:functionTAutoReportProcessMonthForm.GetFastRptObj:TBizObject;varBizHead,BizLine:TBizObject;i,j,k,n,m,p:
4、Integer;Head:TAutoreporthead;Line:TAutoreportline;slItemVendor,slVendors:TStringList;strItemVendor,strItemVendor2,strVendor:String;VendorsCount:arrayofInteger;beginMyCheck;Head:=TAutoreporthead.Create(false,true);Head.UserName:=LoginUser.UserName;fori:=1todgView.RowCount-1doifdgView.Ro
5、wProps[i].Checkedand(notdgView.IsRowEmpty(i))thenbeginLine:=TAutoreportline.Create;self.SetDgDataToBizObject(i,dgView,TBizObject(line));head.AutoreportlineOfAutoreporthead.Add(line);end;//合并报表算法开始addedbywbc,2009-04-23slItemVendor:=TStringList.Create;slVendors:=TStringList.Create;fori:=
6、0tohead.AutoreportlineOfAutoreporthead.Count-1dobeginstrItemVendor:=TAutoreportline(head.AutoreportlineOfAutoreporthead.Items[i]).Item_Code+TAutoreportline(head.AutoreportlineOfAutoreporthead.Items[i]).Vendor_Code;ifPos(strItemVendor,slItemVendor.Text)=0thenslItemVendor.Add(strItemVend
7、or);8strVendor:=TAutoreportline(head.AutoreportlineOfAutoreporthead.Items[i]).Vendor_Code;ifPos(strVendor,slVendors.Text)=0thenslVendors.Add(strVendor);end;//showMessage(slVendors.Text);setLength(VendorsCount,slVendors.Count);fori:=0toslVendors.Count-1dobeginVendorsCount[i]:=0;forj:=