本站首页    管理页面    写新日志    退出


«September 2025»
123456
78910111213
14151617181920
21222324252627
282930


公告
================

注会练习软件
http://www.cpasoft.com.cn
我的注会软件官网

http://blog.163.com/abc7105@126/

 

 


哈哈,热爱快“过气”的DELPHI


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:注册会计师(注会)练习软件
日志总数:398
评论数量:116
留言数量:27
访问次数:3269428
建立时间:2005年6月6日




[borland eco 技术]原创:我对bds2006中使用xtrareport做报表的探索
软件技术

吕向阳 发表于 2006/7/27 0:22:07

bds2006的打印控件相当难找,好容易找到一个却不能用eco,真是头痛,我用了一个土办法摸索了一套自己用起来方便的办法,当然也不简单,程序要自己适当改动. 1.在refrerence中加入几个dll引用 devexpress.xtraeditors3.dll devexpress.xtranavbar3.dll devexpress.xtraprinting3.dll devexpress.xtrareport3.dll devexpress.xtratreelist3.dll 2.新建一个windows form,进入代码编辑,将下面的代码整个覆盖windows forms的全部代码, unit report2; interface uses  System.Drawing, System.Collections, System.ComponentModel,  System.Windows.Forms, System.Data,DevExpress.XtraReports,  DevExpress.XtraReports.UI, DevExpress.XtraPrinting,Package_1Unit, hwkhEcoSpace,  Borland.Eco.Handles, Borland.Eco.Windows.Forms, Borland.Eco.WinForm,  System.Resources,Borland.Eco.ObjectRepresentation, System.Drawing.Printing ; type   TXtraReport2= class(DevExpress.XtraReports.UI.XtraReport)  {$REGION 'Designer Managed Code'}  strict private    /// <summary>    /// Required designer variable.    /// </summary>    Components: System.ComponentModel.Container;    RHRoot: Borland.Eco.Handles.ReferenceHandle;    ehkh: Borland.Eco.Handles.ExpressionHandle;    PageHeader: DevExpress.XtraReports.UI.PageHeaderBand;    Detail: DevExpress.XtraReports.UI.DetailBand;    XRLabel1: DevExpress.XtraReports.UI.XRLabel;    ReportHeader: DevExpress.XtraReports.UI.ReportHeaderBand;    XRTable1: DevExpress.XtraReports.UI.XRTable;    XRTableRow1: DevExpress.XtraReports.UI.XRTableRow;    XRTableCell1: DevExpress.XtraReports.UI.XRTableCell;    XRTableCell2: DevExpress.XtraReports.UI.XRTableCell;    XRTableCell3: DevExpress.XtraReports.UI.XRTableCell;    XRTable2: DevExpress.XtraReports.UI.XRTable;    XRTableRow2: DevExpress.XtraReports.UI.XRTableRow; //  XRTableCell4: DevExpress.XtraReports.UI.XRTableCell;    sumxj: DevExpress.XtraReports.UI.XRTableCell;    PageFooter: DevExpress.XtraReports.UI.PageFooterBand;    XRPageInfo1: DevExpress.XtraReports.UI.XRPageInfo;    pay: DevExpress.XtraReports.UI.XRTableCell;    boss: DevExpress.XtraReports.UI.XRTableCell;    XRTableCell9: DevExpress.XtraReports.UI.XRTableCell;    XRTableCell10: DevExpress.XtraReports.UI.XRTableCell;    name: DevExpress.XtraReports.UI.XRTableCell;    canpay: DevExpress.XtraReports.UI.XRTableCell;    XRLabel2: DevExpress.XtraReports.UI.XRLabel;    /// <summary>    /// Required method for Designer support - do not modify    /// the contents of this method with the code editor.    /// </summary>    procedure InitializeComponent;  {$ENDREGION}  strict private    FEcoSpace: ThwkhEcoSpace;  strict protected    /// <summary>    /// Clean up any resources being used.    /// </summary>    procedure Dispose(Disposing: Boolean); override;  public    constructor Create(anEcoSpace: ThwkhEcoSpace;oclps:expressionhandle;str:string); overload;    function get_EcoSpace: ThwkhEcoSpace;    property EcoSpace: ThwkhEcoSpace read get_EcoSpace;  end;  // [assembly: RuntimeRequired(TypeOf(TWinForm6))] implementation uses Borland.Eco.Services;{$AUTOBOX ON} {$REGION 'Windows Form Designer generated code'}/// <summary>/// Required method for Designer support - do not modify/// the contents of this method with the code editor./// </summary>procedure TXtraReport2.InitializeComponent;type  TArrayOfDevExpress_XtraReports_UI_XRControl = array of DevExpress.XtraReports.UI.XRControl;  TArrayOfDevExpress_XtraReports_UI_XRTableRow = array of DevExpress.XtraReports.UI.XRTableRow;  TArrayOfDevExpress_XtraReports_UI_XRTableCell = array of DevExpress.XtraReports.UI.XRTableCell;  TArrayOfDevExpress_XtraReports_UI_Band = array of DevExpress.XtraReports.UI.Band;var  resources: System.Resources.ResourceManager;begin  resources := System.Resources.ResourceManager.Create(TypeOf(TXtraReport2));  Self.RHRoot := Borland.Eco.Handles.ReferenceHandle.Create;  Self.PageHeader := DevExpress.XtraReports.UI.PageHeaderBand.Create;  Self.XRPageInfo1 := DevExpress.XtraReports.UI.XRPageInfo.Create;  Self.XRLabel1 := DevExpress.XtraReports.UI.XRLabel.Create;  Self.XRTable1 := DevExpress.XtraReports.UI.XRTable.Create;  Self.XRTableRow1 := DevExpress.XtraReports.UI.XRTableRow.Create;  Self.XRTableCell1 := DevExpress.XtraReports.UI.XRTableCell.Create;  Self.XRTableCell9 := DevExpress.XtraReports.UI.XRTableCell.Create;  Self.XRTableCell10 := DevExpress.XtraReports.UI.XRTableCell.Create;  Self.XRTableCell2 := DevExpress.XtraReports.UI.XRTableCell.Create;  Self.XRTableCell3 := DevExpress.XtraReports.UI.XRTableCell.Create;  Self.Detail := DevExpress.XtraReports.UI.DetailBand.Create;  Self.XRTable2 := DevExpress.XtraReports.UI.XRTable.Create;  Self.XRTableRow2 := DevExpress.XtraReports.UI.XRTableRow.Create;  Self.name := DevExpress.XtraReports.UI.XRTableCell.Create;  Self.boss := DevExpress.XtraReports.UI.XRTableCell.Create;  Self.sumxj := DevExpress.XtraReports.UI.XRTableCell.Create;  Self.canpay := DevExpress.XtraReports.UI.XRTableCell.Create;  Self.pay := DevExpress.XtraReports.UI.XRTableCell.Create;  Self.ReportHeader := DevExpress.XtraReports.UI.ReportHeaderBand.Create;  Self.PageFooter := DevExpress.XtraReports.UI.PageFooterBand.Create;  Self.ehkh := Borland.Eco.Handles.ExpressionHandle.Create;  Self.XRLabel2 := DevExpress.XtraReports.UI.XRLabel.Create;  (System.ComponentModel.ISupportInitialize(Self.XRTable1)).BeginInit;  (System.ComponentModel.ISupportInitialize(Self.XRTable2)).BeginInit;  (System.ComponentModel.ISupportInitialize(Self)).BeginInit;  //   // RHRoot  //   Self.RHRoot.EcoSpaceType := TypeOf(hwkhEcoSpace.ThwkhEcoSpace);  //   // PageHeader  //   Self.PageHeader.Controls.AddRange(TArrayOfDevExpress_XtraReports_UI_XRControl.Create(Self.XRLabel2,           Self.XRPageInfo1, Self.XRLabel1, Self.XRTable1));  Self.PageHeader.Height := 156;  Self.PageHeader.Name := 'PageHeader';  Self.PageHeader.ParentStyleUsing.UseTextAlignment := True;  //   // XRPageInfo1  //   Self.XRPageInfo1.Location := System.Drawing.Point.Create(542, 67);  Self.XRPageInfo1.Name := 'XRPageInfo1';  Self.XRPageInfo1.Size := System.Drawing.Size.Create(83, 17);  Self.XRPageInfo1.Text := resources.GetString('XRPageInfo1.Text');  //   // XRLabel1  //   Self.XRLabel1.Font := System.Drawing.Font.Create('Times New Roman', 20, System.Drawing.FontStyle.Bold);  Self.XRLabel1.Location := System.Drawing.Point.Create(150, 8);  Self.XRLabel1.Name := 'XRLabel1';  Self.XRLabel1.ParentStyleUsing.UseFont := False;  Self.XRLabel1.Size := System.Drawing.Size.Create(359, 59);  Self.XRLabel1.Text := resources.GetString('XRLabel1.Text');  //   // XRTable1  //   Self.XRTable1.Location := System.Drawing.Point.Create(33, 122);  Self.XRTable1.Name := 'XRTable1';  Self.XRTable1.ParentStyleUsing.UseBorders := False;  Self.XRTable1.Rows.AddRange(TArrayOfDevExpress_XtraReports_UI_XRTableRow.Create(Self.XRTableRow1));  Self.XRTable1.Size := System.Drawing.Size.Create(609, 34);  Self.XRTable1.Text := resources.GetString('XRTable1.Text');  //   // XRTableRow1  //   Self.XRTableRow1.BackColor := System.Drawing.Color.Gainsboro;  Self.XRTableRow1.BorderColor := System.Drawing.SystemColors.WindowFrame;  Self.XRTableRow1.Cells.AddRange(TArrayOfDevExpress_XtraReports_UI_XRTableCell.Create(Self.XRTableCell1,           Self.XRTableCell9, Self.XRTableCell10, Self.XRTableCell2, Self.XRTableCell3));  Self.XRTableRow1.Name := 'XRTableRow1';  Self.XRTableRow1.ParentStyleUsing.UseBackColor := False;  Self.XRTableRow1.ParentStyleUsing.UseBorderColor := False;  Self.XRTableRow1.ParentStyleUsing.UseBorders := False;  Self.XRTableRow1.Size := System.Drawing.Size.Create(609, 34);  Self.XRTableRow1.Text := resources.GetString('XRTableRow1.Text');  //   // XRTableCell1  //   Self.XRTableCell1.BorderColor := System.Drawing.SystemColors.MenuText;  Self.XRTableCell1.Location := System.Drawing.Point.Create(0, 0);  Self.XRTableCell1.Name := 'XRTableCell1';  Self.XRTableCell1.ParentStyleUsing.UseBorderColor := False;  Self.XRTableCell1.ParentStyleUsing.UseBorders := False;  Self.XRTableCell1.Size := System.Drawing.Size.Create(100, 34);  Self.XRTableCell1.Text := resources.GetString('XRTableCell1.Text');  //   // XRTableCell9  //   Self.XRTableCell9.BorderColor := System.Drawing.SystemColors.MenuText;  Self.XRTableCell9.Location := System.Drawing.Point.Create(100, 0);  Self.XRTableCell9.Name := 'XRTableCell9';  Self.XRTableCell9.ParentStyleUsing.UseBorderColor := False;  Self.XRTableCell9.ParentStyleUsing.UseBorders := False;  Self.XRTableCell9.Size := System.Drawing.Size.Create(150, 34);  Self.XRTableCell9.Text := resources.GetString('XRTableCell9.Text');  //   // XRTableCell10  //   Self.XRTableCell10.BorderColor := System.Drawing.SystemColors.MenuText;  Self.XRTableCell10.Location := System.Drawing.Point.Create(250, 0);  Self.XRTableCell10.Name := 'XRTableCell10';  Self.XRTableCell10.ParentStyleUsing.UseBorderColor := False;  Self.XRTableCell10.ParentStyleUsing.UseBorders := False;  Self.XRTableCell10.Size := System.Drawing.Size.Create(117, 34);  Self.XRTableCell10.Text := resources.GetString('XRTableCell10.Text');  //   // XRTableCell2  //   Self.XRTableCell2.BorderColor := System.Drawing.SystemColors.MenuText;  Self.XRTableCell2.Location := System.Drawing.Point.Create(367, 0);  Self.XRTableCell2.Name := 'XRTableCell2';  Self.XRTableCell2.ParentStyleUsing.UseBorderColor := False;  Self.XRTableCell2.ParentStyleUsing.UseBorders := False;  Self.XRTableCell2.Size := System.Drawing.Size.Create(116, 34);  Self.XRTableCell2.Text := resources.GetString('XRTableCell2.Text');  //   // XRTableCell3  //   Self.XRTableCell3.BorderColor := System.Drawing.SystemColors.MenuText;  Self.XRTableCell3.Location := System.Drawing.Point.Create(483, 0);  Self.XRTableCell3.Name := 'XRTableCell3';  Self.XRTableCell3.ParentStyleUsing.UseBorderColor := False;  Self.XRTableCell3.ParentStyleUsing.UseBorders := False;  Self.XRTableCell3.Size := System.Drawing.Size.Create(126, 34);  Self.XRTableCell3.Text := resources.GetString('XRTableCell3.Text');  //   // Detail  //   Self.Detail.Controls.AddRange(TArrayOfDevExpress_XtraReports_UI_XRControl.Create(Self.XRTable2));  Self.Detail.Height := 34;  Self.Detail.Name := 'Detail';  Self.Detail.ParentStyleUsing.UseBorders := False;  //   // XRTable2  //   Self.XRTable2.BackColor := System.Drawing.SystemColors.ActiveCaptionText;  Self.XRTable2.Location := System.Drawing.Point.Create(33, 0);  Self.XRTable2.Name := 'XRTable2';  Self.XRTable2.ParentStyleUsing.UseBackColor := False;  Self.XRTable2.ParentStyleUsing.UseBorders := False;  Self.XRTable2.Rows.AddRange(TArrayOfDevExpress_XtraReports_UI_XRTableRow.Create(Self.XRTableRow2));  Self.XRTable2.Size := System.Drawing.Size.Create(609, 34);  Self.XRTable2.Text := resources.GetString('XRTable2.Text');  //   // XRTableRow2  //   Self.XRTableRow2.BorderColor := System.Drawing.Color.Black;  Self.XRTableRow2.Cells.AddRange(TArrayOfDevExpress_XtraReports_UI_XRTableCell.Create(Self.name,           Self.boss, Self.sumxj, Self.canpay, Self.pay));  Self.XRTableRow2.Name := 'XRTableRow2';  Self.XRTableRow2.ParentStyleUsing.UseBorderColor := False;  Self.XRTableRow2.ParentStyleUsing.UseBorders := False;  Self.XRTableRow2.Size := System.Drawing.Size.Create(609, 34);  Self.XRTableRow2.Text := resources.GetString('XRTableRow2.Text');  //   // name  //   Self.name.Location := System.Drawing.Point.Create(0, 0);  Self.name.Name := 'name';  Self.name.ParentStyleUsing.UseBorders := False;  Self.name.Size := System.Drawing.Size.Create(100, 34);  Self.name.Text := resources.GetString('name.Text');  //   // boss  //   Self.boss.Location := System.Drawing.Point.Create(100, 0);  Self.boss.Name := 'boss';  Self.boss.ParentStyleUsing.UseBorders := False;  Self.boss.Size := System.Drawing.Size.Create(150, 34);  Self.boss.Text := resources.GetString('boss.Text');  //   // sumxj  //   Self.sumxj.Location := System.Drawing.Point.Create(250, 0);  Self.sumxj.Name := 'sumxj';  Self.sumxj.ParentStyleUsing.UseBorders := False;  Self.sumxj.Size := System.Drawing.Size.Create(117, 34);  Self.sumxj.Text := resources.GetString('sumxj.Text');  //   // canpay  //   Self.canpay.Location := System.Drawing.Point.Create(367, 0);  Self.canpay.Name := 'canpay';  Self.canpay.ParentStyleUsing.UseBorders := False;  Self.canpay.Size := System.Drawing.Size.Create(116, 34);  Self.canpay.Text := resources.GetString('canpay.Text');  //   // pay  //   Self.pay.Location := System.Drawing.Point.Create(483, 0);  Self.pay.Name := 'pay';  Self.pay.ParentStyleUsing.UseBorders := False;  Self.pay.Size := System.Drawing.Size.Create(126, 34);  Self.pay.Text := resources.GetString('pay.Text');  //   // ReportHeader  //   Self.ReportHeader.Height := 12;  Self.ReportHeader.Name := 'ReportHeader';  //   // PageFooter  //   Self.PageFooter.Name := 'PageFooter';  //   // ehkh  //   Self.ehkh.RootHandle := Self.RHRoot;  //   // XRLabel2  //   Self.XRLabel2.Location := System.Drawing.Point.Create(33, 75);  Self.XRLabel2.Name := 'XRLabel2';  Self.XRLabel2.Size := System.Drawing.Size.Create(242, 34);  Self.XRLabel2.Text := resources.GetString('XRLabel2.Text');  //   // TXtraReport2  //   Self.Bands.AddRange(TArrayOfDevExpress_XtraReports_UI_Band.Create(Self.PageHeader,           Self.Detail, Self.ReportHeader, Self.PageFooter));  Self.DataSource := Self.ehkh;  Self.Margins := System.Drawing.Printing.Margins.Create(100, 75, 100, 100);  Self.PageHeight := 1169;  Self.PageWidth := 827;  Self.PaperKind := System.Drawing.Printing.PaperKind.A4;  Self.ShowPreviewMarginLines := False;  (System.ComponentModel.ISupportInitialize(Self.XRTable1)).EndInit;  (System.ComponentModel.ISupportInitialize(Self.XRTable2)).EndInit;  (System.ComponentModel.ISupportInitialize(Self)).EndInit;end;{$ENDREGION} procedure TXtraReport2.Dispose(Disposing: Boolean);begin  if Disposing then  begin    if Components <> nil then      Components.Dispose();  end;  inherited Dispose(Disposing);end; constructor TXtraReport2.Create(anEcoSpace: ThwkhEcoSpace;oclps:expressionhandle;str:string);var cobject:iobjectlist;begin  inherited Create;  //  // Required for Windows Form Designer support  //  InitializeComponent;  //  // TODO: Add any constructor code after InitializeComponent call  //  FEcoSpace := anEcoSpace;  // Note that you need to set the EcoSpace property for each ReferenceHandle you add to the form.  RHRoot.EcoSpace := FEcoSpace;   if not fecospace.Active then     fecospace.Active:=true; //   rhroot.setelement(mylist);   ehkh.RootHandle:=rhroot;   ehkh:=oclps;    xrlabel2.Text:='"客户名称: 【'+str+'】';   self.DataSource:=ehkh;   self.name.DataBindings.Add('Text', DataSource, 'sj');   self.boss.DataBindings.Add('Text', DataSource, 'khname');   self.sumxj.DataBindings.Add('Text', DataSource, 'sumxj');   self.canpay.DataBindings.Add('Text', DataSource, 'canpay');   self.pay.DataBindings.Add('Text', DataSource, 'pay');//   self.leftmoney.DataBindings.Add('Text', DataSource, 'leftmoney');    //messagebox.Show(ehkh.Element.GetAsCollection.Count.tostring);//   messagebox.Show(ehkh.Expression);    Self.XRTableCell1.Borders := DevExpress.XtraPrinting.BorderSide.all;     //右上   Self.XRTableCell9.Borders := (DevExpress.XtraPrinting.BorderSide(((DevExpress.XtraPrinting.BorderSide.Top      or DevExpress.XtraPrinting.BorderSide.Right) or DevExpress.XtraPrinting.BorderSide.Bottom)));    self.XRTableCell10.Borders := (DevExpress.XtraPrinting.BorderSide(((DevExpress.XtraPrinting.BorderSide.Top     or DevExpress.XtraPrinting.BorderSide.Right) or DevExpress.XtraPrinting.BorderSide.Bottom)));   Self.XRTableCell2.Borders := (DevExpress.XtraPrinting.BorderSide(((DevExpress.XtraPrinting.BorderSide.Top     or DevExpress.XtraPrinting.BorderSide.Right) or DevExpress.XtraPrinting.BorderSide.Bottom)));   Self.XRTableCell3.Borders := (DevExpress.XtraPrinting.BorderSide(((DevExpress.XtraPrinting.BorderSide.Top     or DevExpress.XtraPrinting.BorderSide.Right) or DevExpress.XtraPrinting.BorderSide.Bottom)));  //左下   Self.name.Borders := (DevExpress.XtraPrinting.BorderSide(((DevExpress.XtraPrinting.BorderSide.left      or DevExpress.XtraPrinting.BorderSide.Right) or DevExpress.XtraPrinting.BorderSide.Bottom)));  //右下    Self.boss.Borders := (DevExpress.XtraPrinting.BorderSide((( DevExpress.XtraPrinting.BorderSide.Right) or DevExpress.XtraPrinting.BorderSide.Bottom)));    Self.sumxj.Borders := (DevExpress.XtraPrinting.BorderSide((( DevExpress.XtraPrinting.BorderSide.Right) or DevExpress.XtraPrinting.BorderSide.Bottom)));    Self.canpay.Borders := (DevExpress.XtraPrinting.BorderSide((( DevExpress.XtraPrinting.BorderSide.Right) or DevExpress.XtraPrinting.BorderSide.Bottom)));   Self.pay.Borders := (DevExpress.XtraPrinting.BorderSide(((DevExpress.XtraPrinting.BorderSide.Right) or DevExpress.XtraPrinting.BorderSide.Bottom))); end; function TXtraReport2.get_EcoSpace: ThwkhEcoSpace;begin  Result := FEcoSpace;end; end. 再进入designed视窗,这时会出现 500)this.width=500'> 这时只需按alt+tab放手一次,再按alt+tab一次就回来正常视窗,如图500)this.width=500'> 3.余下的就按自己的需求去改动了,到这里了应该就简单了,只剩下与字段对应的问题了,非常适应eco的中expressionhandle与oclpshandle对象,做熟了,也方便了.它整整花了我一晚上的时间来试验.还好,再也不用找打印控件了,算是解脱了.


阅读全文(4938) | 回复(3) | 编辑 | 精华
 


回复:原创:我对bds2006中使用xtrareport做报表的探索
软件技术

liuman2(游客)发表评论于2007/1/17 11:23:27

比如我以單號分組, 不同的單號我要重設頁次, 請問如何設置???


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


能否不用DataGrid来打印吗
软件技术

lihui(游客)发表评论于2006/12/31 11:31:10

printLink.DataGrid=this.dataGrid1; printLink.DataGrid=this.gridControl1;

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:原创:我对bds2006中使用xtrareport做报表的探索
软件技术

fenger(游客)发表评论于2006/9/12 22:05:19

我想在关闭窗体时,检测Report是否发生变化,如果变化了,我就存数据库,如果没有变化就直接关闭,不知怎么做,望指点。qifeng.wu@gmail.com

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.063 second(s), page refreshed 144758481 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号