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对象,做熟了,也方便了.它整整花了我一晚上的时间来试验.还好,再也不用找打印控件了,算是解脱了. |
|
回复:原创:我对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 »
|