FastReport4(Delphi)动态生成报表

合集下载

快速报表系统FastReport4用户使用手册_修改版

快速报表系统FastReport4用户使用手册_修改版

“Reprint headers on new page”决定在多个页面打印时,是否在每个页面当打印输出标题栏。

“Side by side cell”:是否允许合并单元格“Join equal cells”选项,当数值相等时是否可以合并单元格。

使用对象查看器的属性设置也可以设置这些内容。

第八章FastReport允许用户插入chart制表组件到报表中,这样,在FastReport面板上的“TfrxCharObject”组件就必须应用上。

这个组件基于“TeeChart”动态库,在delphi 中需要将它包含在工程中。

我们通过以下示例先进行简单说明,连接DBDemos中的countory表,数据内容如下:在delphi环境中创建一个新的工程,添加“TTable”,“TfrxChartObject”,“TfrxDBData”,“TfrxReport”组件,并设置属性值:Table1:DatabaseName = 'DBDEMOS'TableName = ''frxDBDataSet1:DataSet = Table1UserName = 'Country'进入到报表设计器页面,并连结设置数据源。

在报表的设计页上放置一个“chart”组件,并调整其大小(18X8cm)。

双击组件,打开组件的编辑器窗口。

char编辑器区域说明:1:chart结构,一个chart包含有几个制表系统。

2:组件监视器,显示所选组件的属性。

3:连结chart的series的数据属性。

开始的界面显示如上,首先添加一个或几个series,在1区点击按钮,添加一个Pie。

有许多可用的不同的类型的series。

添加一个系列之后,3区被激活。

首先选择数据源,设置Label和pie字段。

点击确定按钮,关闭编辑器窗口,然后预览。

还如何改良以下报表呢?首先,将数据按升序方式进行排序。

再次进入编辑器,选择要设置的series,在3区设置选项。

FastReport--打印报表操作手册

FastReport--打印报表操作手册

安易信息系统FastReport报表打印格式操作手册目录FastReport对象 (2)“Text”对象 (3)“Band”对象 (7)“Image”对象 (9)“SubReport”对象 (10)“Line”对象 (12)“CheckBox”对象 (12)“RichText”对象 (12)“OLE”对象 (13)“Chart”对象 (14)“Shape”对象 (16)“Barcode”对象 (17)“R ichText 2.0”对象 (18)设计器 (18)使用控制键 (19)使用鼠标 (20)报表选项 (20)页面选项 (20)设计器选项 (24)对象观测器 (26)“插入数据字段”窗口 (26)数据字典 (28)体现式编辑器 (33)工具栏 (36)“原则”工具栏 (36)“格式”工具栏 (37)“边框”工具栏 (38)“对齐”工具栏 (38)对象旳属性和措施 (39)解释器旳使用 (46)创立ANYIHIS旳FastReport报表 (47)FastReport对象图标名称描述Text 提供里面涉及多行文本旳矩形框。

文本容许涉及变量。

Band 条状区域。

定义区域涉及旳最后报表旳位置。

Picture 显示BMP, ICO, WMF, EMF和JPG图像格式。

来源可以是BLOB 字段。

不连接到FR.inc就不能在FastReport中使用JPG格式。

SubReport 用于创立子报表。

当你插入这个对象到一种报表时, 你将看到在你旳报表中增长一种新页面。

Line 在报表上画垂直或水平线条。

Shadowed text 提供涉及在一种矩形边框中旳多行文本, 并可设立阴影和(或者)渐变色填充。

用于打印标签。

Barcode 用条形码显示数据。

Shape 容许在报表中插入几何图形(矩形, 圆角矩形, 椭圆, 三角形)。

CheckBox 用检查框或X来显示逻辑数据。

RichText 用于在报表中插入RTF文档。

DELPHI报表的动态生成

DELPHI报表的动态生成

DELPHI报表的动态生成(Create Delphi Dynamic Report)摘要:本文主要介绍如何在DELPHI开发环境下动态生成报表,给出公用模块,并结合具体示例分析了实现的主要技术问题,给出解决这些问题的技术细节。

关键词:DELPHI报表、动态创建一、引言报表是数据库应用程序的重要部分,可是报表的生成也是数据库开发中最麻烦的一项工作。

报表格式复杂多样,一直是使程序员头疼的事。

DELPHI 在其3.0以后版本中加入了QUICKREPORT,使这种情形有所改变。

它的全部可视化编程以及设计和运行过程中都可以进行预览等特性给程序开发带来了很大的方便。

我们可以通过在应用程序设计阶段往窗体中添加报表控件,再与数据库表组件Ttable,查询组件Tquery等数据访问组件相关联,从而实现报表的预览与报表的输出。

但在许多应用程序中,程序员往往期望从静态或者动态生成的数据库表中动态提取所需数据,进而生成报表输出。

本文介绍的就是如何动态选择所需数据,动态生成报表的公用模块。

这种动态方式生成的报表更加灵活,也更加容易做到报表的格式统一。

动态报表主要是在程序运行阶段利用Creat方法动态创建控件,设置其Parent属性来设置其容器控件。

然后,在程序中根据所选择的数据库表中的数据字段的长度和数目,通过修改控件的大小和位置属性,来控制控件的大小和外观,如果该控件有事件,可直接把函数或过程名赋给它的相应事件名。

二、动态报表的实现下面结合一个具体实例来说明如何其实现的方法和技术。

1、基本思路数据来源,我们以DELPHI自带的DBDEMOS中的employee.db表为例,它共有6个字段。

在F_main主窗体中(如图一),可以自由选择所需要打印的字段。

它的主要控件及属性设置如下:①.Table1:Databasename设置为DEDEMOS,Tablename设置为employee.db②.Listbox1:显示所连数据库表中的全部字段③.Listbox2:用于选择所需报表输出的字段④.AddBitBtn:用于把所选择的字段名添加到Listbox2中⑤.DeleteBitBtn:用于把Listbox2中的字段名去掉⑥.PreviewBitBtn:用于报表的预览⑦.PrintBitBtn:用于报表的输出⑧.CloseBitBtn:用于关闭应用程序在F_report窗体中,放置了以下主要控件,并设置属性,以减少程序的篇幅:①.Table1:Databasename设置为DEDEMOS,Tablename设置为employee.db②.QuickRep1:papesize属性为A4,dataset属性为Table1,bands 属性中的hascolumnheader、hasdetail、hastitle设置为True显示数据库表中的全部字段在F_report的Oncreate事件中加入了如下代码:Table1.Open;if Table1.Active thenTable1.GetFieldNames(Listbox1.Items);// 获得数据库表中的全部字段名DeleteBitBtn.Enabled:=False; //在Listbox2中无字段时,DeleteBitBtn变灰2、从Listbox1中选择字段添加到Listbox2中为AddBitBtn的Onclick事件加入如下代码:if listbox1.Items.Count=0 then exit; //如Listbox1中无可供选择的字段,则执行空操作if listbox1.Selected[listbox1.ItemIndex] then //在Listbox1中选择字段beginListbox2.Items.Add(Listbox1.Items[Listbox1.ItemIndex]);//往Listbox2中增加选中的字段Listbox1.Items.Delete(Listbox1.ItemIndex);//从Listbox1中删除此字段if Listbox2.Items.Count>=1 then //在Listbox2中有字段才允许执行删DeleteBitBtn.Enabled:=True;end;3、从Listbox2中删除不需要的字段为DeleteBitBtn的Oncreate事件添加如下代码:if Listbox2.Items.Count=0 then exit; // 如果Listbox2中无字段,则执行空操作if listbox2.Selected[Listbox2.ItemIndex] then //在Listbox2中选择字段beginListbox1.Items.Add(Listbox2.items[Listbox2.itemindex]); //添加到Listbox1中Listbox2.Items.Delete(Listbox2.itemindex); //从Listbox2中删除此字段end;if Listbox2.Items.Count=0 then //如果Listbox2中无字段,则DeleteBitBtn变灰DeleteBitBtn.Enabled:=False;4、在报表中动态添加一列的步骤:①.TitleBand1中打印的是报表的名称,这里假设为:动态报表生成示例。

快速报表系统FastReport4用户使用手册_修改版

快速报表系统FastReport4用户使用手册_修改版

“Reprint headers on new page”决定在多个页面打印时,是否在每个页面当打印输出标题栏。

“Side by side cell”:是否允许合并单元格“Join equal cells”选项,当数值相等时是否可以合并单元格。

使用对象查看器的属性设置也可以设置这些内容。

第八章FastReport允许用户插入chart制表组件到报表中,这样,在FastReport面板上的“TfrxCharObject”组件就必须应用上。

这个组件基于“TeeChart”动态库,在delphi 中需要将它包含在工程中。

我们通过以下示例先进行简单说明,连接DBDemos中的countory表,数据内容如下:在delphi环境中创建一个新的工程,添加“TTable”,“TfrxChartObject”,“TfrxDBData”,“TfrxReport”组件,并设置属性值:Table1:DatabaseName = 'DBDEMOS'TableName = ''frxDBDataSet1:DataSet = Table1UserName = 'Country'进入到报表设计器页面,并连结设置数据源。

在报表的设计页上放置一个“chart”组件,并调整其大小(18X8cm)。

双击组件,打开组件的编辑器窗口。

char编辑器区域说明:1:chart结构,一个chart包含有几个制表系统。

2:组件监视器,显示所选组件的属性。

3:连结chart的series的数据属性。

开始的界面显示如上,首先添加一个或几个series,在1区点击按钮,添加一个Pie。

有许多可用的不同的类型的series。

添加一个系列之后,3区被激活。

首先选择数据源,设置Label和pie字段。

点击确定按钮,关闭编辑器窗口,然后预览。

还如何改良以下报表呢?首先,将数据按升序方式进行排序。

再次进入编辑器,选择要设置的series,在3区设置选项。

Fastreport使用经验(转)在Delphi程序中访问报表对象

Fastreport使用经验(转)在Delphi程序中访问报表对象

文字错位,而且表格会打印得很小。而且原文中打印坐标的确定,必须靠反复的试验才能达到比较满意的效果。
针对原目标,笔者设计了一段程序。首先在窗体上添加一个DBGrid来显示我们所要打印的数据,在这里,DBGrid不只是起到显示数据的作
用,而且用户对DBGrid作的调整,例如改变了各字段的排列顺序,各字段的显示宽度等,都将直接反映到打印结果中去,也就是说,我们实际
******共用TFrxreport及TfrxDBDataSet
一个程序中,不管多么大的程序,只要打印或预览时是模式的,则完全可以共用一个TFrxreport变量及几个TfrxDBDataSet。只不过,要注意完
成一个报表程序的步骤,主要是下面几步
1)清除报表,得到一个全新的报表内容。
Frxreport1.clear。
可能需要传递很多参数,效率低下。
2)把不同报表的控制放到脚本中,可以实现报表的模块化,程序只是简单的设置数据集的关系,并加载硬盘上的报表文件,不同报表的不同实
现方式,显示方式,均放到报表文件中,程序简洁,易维护,易升级。
当然,这样的缺点就是程序中加载报表时的数据集别名必须与设计报表时的别名一致。
TopBlank=1;
BottomBlank=1;
var
PointX,PointY:integer;
PointScale,PrintStep:integer;
function PelsTomm(Pels:Extended):Extended;
begin
Result:=Pels/Screen.PixelsPerInch*25.4;
end;
procedure PrintSerial(Frx:TFrxReport;SequencePage:Byte=0);

在Delphi编程中利用Excel实现动态报表

在Delphi编程中利用Excel实现动态报表

在Delphi编程中利用Excel实现动态报表0 引言随着计算机技术的不断普及, 办公的数字化程度越来越高, 出现了大量的计算机系统, 如固定资产管理系统、人事工资管理系统等等。

这其中存在大量的MIS系统。

MIS系统的一个重要特点是需要处理大量数据并形成报表。

由于行业或者其他一些原因, 这些报表的格式种类繁多, 而且还有一些复杂报表。

这些报表的格式在开发期间可能都无法设定。

为了解决这些问题, 本文采用了表格功能强大的Excel作为报表模板, 用户可以按照自己的要求设置报表格式, 程序运行时再根据用户的设置动态填入数据, 从而实现动态报表功能。

1 实现原理先由用户按照自己的格式生成Excel报表模板, 系统读取模板文件, 并把模板文件存入数据库, 保存用户输入的报表信息, 如某一字段填入第几行第几列。

报表打印时, 提取相应的Excel文件, 利用Delphi的Excel控件填入数据库的数据, 实现动态报表功能。

2 实现过程2. 1 定义数据表系统使用MsSql Server2000数据库,定义两个表,一个是MB,用来存储报表基本信息和Excel文件,一个是MB_Detail存放报表的详细信息,如对应字段的行号和列号。

表结构如下:图1 MB 表结构图2 MB _Detail表结构MB表中,“模板内容”字段为image类型, 用来存储Excel模板文件,“记录类型”字段用来表示是单张表格(只打印一条记录)还是列表(打印多条记录); MB Detail表中的列号数据类型为char, 对应Excel中的列号如A、B、C等。

2. 2 保存和读取Excel模板2. 2. 1 保存Excel模板本系统将用户设置好的Excel报表模板存入数据库“模板内容”字段。

由于本字段存储的是Excel文件内容, 需要采用特殊的存储方式。

本系统使用Delph i的TO leContainer控件, 与Excel文件建立连接, 最后存入数据库。

用Delphi_FastReport解决ERP系统开发中单据打印的实例探索

用Delphi_FastReport解决ERP系统开发中单据打印的实例探索

图1:单据管理示意图摘要:本文用Delphi+Fastreport 为例介绍了用数据库后台存储单据文件前台进行调用很好的解决了后台存储与用户本地自定义设置之间的矛 盾,还介绍了通过编写通用式主从结构的单据打印程序快速解决各种单据的打印输出以及用cross-tab 技术解决交叉表样式报表的输出。

这些方法的 实现很好的解决了ER P 系统中单据输出和报表打印问题,同时较方便的实现了用户对单据和报表样式自定义的需求。

关键词:ER P 系统;后台;套打;交叉表;单据 中图分类号:T P302.1 文献标识码:A 文章编号:1003-9767(2011)05-0054-03下载:将存于后台表中的单据字段通过流文件方式保存至本地相 1. 单据文件的存储与用户自定义FastReport 中报表默认是以文件形式存储于各客户端本地系统 中,以其调用速度快而获得程序的首选,但这种方式更新时必须在各 客户端站点之间进行手动同步操作,给后期的报表维护带来了极大的不便,因此往往适用于站点数量较少的系统应用场合,在ER P 系统应用中,一般采用将FastReport 报表文件以image 字段的形式存储于后台数据库中,再通过相应的下载和上传操作实现对数据库内image 字段(即相应报表文件)的修改。

应的报表文件。

try SetStream := TFileStream.Create(ReportFileName, fmC reate orfmShareExclusive);// 保存相应字段内容到文件流中 TBlobField(ADOQueryBill.FieldByName('xt_bill_attach')). SaveToStream(SetStream);MessageDlg('报表文件下载成功!', mtInformation, [mbOk], 0);exceptMessageDlg('报表文件下载过程中遇到了错误!', mtError,[mbOk], 0);end; 上传至服务器:将重新设置的本地报表文件上传至后台表xt_bill 相应记录。

FastReport4(Delphi)动态生成报表

FastReport4(Delphi)动态生成报表

字段名、字段数不确定时,用FastReport4 动态生成报表Delphi xe3 + FastReport4.14.1ADOConnection,ADOQuery,DatasetProvider,ClientDataSet,DataSource,FrxDBDataset1,FrxReport屬性設置,不在這裡詳述。

效果圖:unit Unit1;interfaceusesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids, Vcl.DBGrids, Datasnap.Provider, Data.Win.ADODB, Data.DB, Datasnap.DBClient, frxClass, frxPreview, frxDesgn, frxDBSet;typeTForm1 = class(TForm)ADOConnection1: TADOConnection;DataSource1: TDataSource;ClientDataSet1: TClientDataSet;ADOQuery1: TADOQuery;DataSetProvider1: TDataSetProvider;DBGrid1: TDBGrid;Button1: TButton;Button2: TButton;frxDBDataset1: TfrxDBDataset;frxDesigner1: TfrxDesigner;frxPreview1: TfrxPreview;frxReport1: TfrxReport;Button3: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);beginclientdataset1.Close;mandText:= 'select user_id,user_name ,sal_no from t_user '; clientdataset1.Open;end;procedure TForm1.Button2Click(Sender: TObject);varpDataPage :TfrxDataPage;pPage :TfrxReportPage ;pBand :TfrxBand;pDataBand :TfrxMasterData ;pMemo :TfrxMemoView ;i:integer;x,y,z,width:extended;begin// 清除原报表内容frxReport1.Clear;// 设置Report 的DataSetfrxReport1.DataSets.Add(frxDBdataset1);// 添加Report 的Data 页pDataPage := TfrxDatapage.Create(frxReport1);// 增加报表显示内容pPage := TfrxReportPage.Create(frxReport1);ppage.CreateUniqueName();// 设置Fields 的默认尺寸pPage.SetDefaults;// 页面方向// pPage.Orientation := poLandscape;// 页面边距pPage.TopMargin := 20;pPage.LeftMargin := 20;pPage.RightMargin := 20;pPage.BottomMargin := 20;// 创建报表Title BandpBand := TfrxReportTitle.Create(pPage);pBand.CreateUniqueName();pBand.Top := 0;pBand.Height := 20;// 创建显示Field 的MemopMemo := TfrxMemoView.Create(pBand);pMemo.CreateUniqueName();pMemo.Text := 'Hello FastReport!';pMemo.Height := 20;// 风格pMemo.Align := baWidth;// 创建DataBandpDataBand := TfrxMasterData.Create(pPage);pDataBand.CreateUniqueName();pDataBand.DataSet := frxDBDataset1;pDataBand.Top := 100;pDataBand.Height := 20;// 将Memo 添加到DataBand 上pMemo := TfrxMemoView.Create(pDataBand);pMemo.CreateUniqueName();// 连接数据pMemo.DataSet := frxDBDataset1;// 显示username 字段pMemo.DataField := 'user_name';pMemo.SetBounds(0, 0, 100, 20);// memo 带边框pMemo.Frame.Typ := [ftLeft , ftRight , ftTop , ftBottom];// 风格pMemo.HAlign := haRight;// 报表显示frxReport1.ShowReport(true);end;procedure TForm1.Button3Click(Sender: TObject);varpDataPage :TfrxDataPage;pPage :TfrxReportPage ;pBand :TfrxBand;pDataBand :TfrxMasterData ;pMemo :TfrxMemoView ;pTitle :TfrxReportTitle;pPageHeader :TfrxPageHeader;pPagetFooter :TfrxPageFooter;i:integer;x,y,z,width:extended;poPortrait, poLandscape: TPrinterOrientation ;beginwidth:= 80 ; // 字段宽度x:= 0 ;y:= 0 ;z:= 0 ;frxReport1.Clear;frxReport1.DataSets.Add(frxDBdataset1);pDataPage := TfrxDatapage.Create(frxReport1);pPage := TfrxReportPage.Create(frxReport1);ppage.CreateUniqueName();pPage.SetDefaults;pPage.Orientation := poLandscape; // 橫印,poPortrait: 直印(默認),pPage.TopMargin := 10; // 上邊距(mm)pPage.LeftMargin := 20; // 左邊距(mm)pPage.RightMargin := 20; //右邊距(mm)pPage.BottomMargin := 15; // 下邊距(mm){pBand := TfrxReportTitle.Create(pPage);pBand.CreateUniqueName();pBand.Top := 0;pBand.Height := 20;}pTitle := TfrxReportTitle.Create(pPage);pTitle.CreateUniqueName();pTitle.Top := 0;pTitle.Height := 30;// 標題頭pMemo := TfrxMemoView.Create(pTitle);pMemo.CreateUniqueName();pMemo.Text :='AutoReport for FastReport4.14';pMemo.SetBounds(0,0,300,30); //MemoView :長、寬、高;pMemo.Font.Size := 14 ; // 14號字pMemo.Font.Style :=[fsBold]; // 粗體pMemo.Height := 30;pMemo.Align := baCenter; // MemoView:居中;// 創建表頭欄pPageHeader := TfrxPageHeader.Create(pPage); pPageHeader.CreateUniqueName;pPageHeader.Top := 50;pPageHeader.Height:= 20;for i := 0 to clientDataset1.FieldCount -1 dobegin// 表頭欄位pMemo := TfrxMemoView.Create(pPageHeader);pMemo.CreateUniqueName();pMemo.Text := clientDataset1.Fields[i].FieldName; pMemo.SetBounds( i * width, 0, width, 20);pMemo.Frame.Typ:=[ftLeft , ftRight , ftTop , ftBottom]; pMemo.Height := 20;// 风格// pMemo.Align := baWidth;pMemo.Align := baLeft;end; // end for ;// 创建DataBandpDataBand := TfrxMasterData.Create(pPage);pDataBand.CreateUniqueName();pDataBand.DataSet := frxDBDataset1;pDataBand.Top := 100;pDataBand.Height := 20;for i := 0 to clientdataset1.FieldCount-1 dobegin// 将Memo 添加到DataBand 上pMemo := TfrxMemoView.Create(pDataBand);pMemo.CreateUniqueName();// 连接数据pMemo.DataSet := frxDBDataset1;// 显示username 字段pMemo.DataField := clientDataset1.Fields[i].FieldName;pMemo.SetBounds( i * width, 0, width, 20); // setBountds(X横行起点,Y起点,字段宽度,字段高度)// memo 带边框pMemo.Frame.Typ:=[ftLeft , ftRight , ftTop , ftBottom];// 风格// pMemo.HAlign := haRight; // 字右對齊;pMemo.HAlign := haLeft;end; // end for ;// 报表显示frxReport1.ShowReport(true);end;end.。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

字段名、字段数不确定时,用FastReport4 动态生成报表Delphi xe3 + FastReport4.14.1ADOConnection,ADOQuery,DatasetProvider,ClientDataSet,DataSource,FrxDBDataset1,FrxReport屬性設置,不在這裡詳述。

效果圖:unit Unit1;interfaceusesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids, Vcl.DBGrids, Datasnap.Provider, Data.Win.ADODB, Data.DB, Datasnap.DBClient, frxClass, frxPreview, frxDesgn, frxDBSet;typeTForm1 = class(TForm)ADOConnection1: TADOConnection;DataSource1: TDataSource;ClientDataSet1: TClientDataSet;ADOQuery1: TADOQuery;DataSetProvider1: TDataSetProvider;DBGrid1: TDBGrid;Button1: TButton;Button2: TButton;frxDBDataset1: TfrxDBDataset;frxDesigner1: TfrxDesigner;frxPreview1: TfrxPreview;frxReport1: TfrxReport;Button3: TButton;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Button3Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);beginclientdataset1.Close;mandText:= 'select user_id,user_name ,sal_no from t_user '; clientdataset1.Open;end;procedure TForm1.Button2Click(Sender: TObject);varpDataPage :TfrxDataPage;pPage :TfrxReportPage ;pBand :TfrxBand;pDataBand :TfrxMasterData ;pMemo :TfrxMemoView ;i:integer;x,y,z,width:extended;begin// 清除原报表内容frxReport1.Clear;// 设置Report 的DataSetfrxReport1.DataSets.Add(frxDBdataset1);// 添加Report 的Data 页pDataPage := TfrxDatapage.Create(frxReport1);// 增加报表显示内容pPage := TfrxReportPage.Create(frxReport1);ppage.CreateUniqueName();// 设置Fields 的默认尺寸pPage.SetDefaults;// 页面方向// pPage.Orientation := poLandscape;// 页面边距pPage.TopMargin := 20;pPage.LeftMargin := 20;pPage.RightMargin := 20;pPage.BottomMargin := 20;// 创建报表Title BandpBand := TfrxReportTitle.Create(pPage);pBand.CreateUniqueName();pBand.Top := 0;pBand.Height := 20;// 创建显示Field 的MemopMemo := TfrxMemoView.Create(pBand);pMemo.CreateUniqueName();pMemo.Text := 'Hello FastReport!';pMemo.Height := 20;// 风格pMemo.Align := baWidth;// 创建DataBandpDataBand := TfrxMasterData.Create(pPage);pDataBand.CreateUniqueName();pDataBand.DataSet := frxDBDataset1;pDataBand.Top := 100;pDataBand.Height := 20;// 将Memo 添加到DataBand 上pMemo := TfrxMemoView.Create(pDataBand);pMemo.CreateUniqueName();// 连接数据pMemo.DataSet := frxDBDataset1;// 显示username 字段pMemo.DataField := 'user_name';pMemo.SetBounds(0, 0, 100, 20);// memo 带边框pMemo.Frame.Typ := [ftLeft , ftRight , ftTop , ftBottom];// 风格pMemo.HAlign := haRight;// 报表显示frxReport1.ShowReport(true);end;procedure TForm1.Button3Click(Sender: TObject);varpDataPage :TfrxDataPage;pPage :TfrxReportPage ;pBand :TfrxBand;pDataBand :TfrxMasterData ;pMemo :TfrxMemoView ;pTitle :TfrxReportTitle;pPageHeader :TfrxPageHeader;pPagetFooter :TfrxPageFooter;i:integer;x,y,z,width:extended;poPortrait, poLandscape: TPrinterOrientation ;beginwidth:= 80 ; // 字段宽度x:= 0 ;y:= 0 ;z:= 0 ;frxReport1.Clear;frxReport1.DataSets.Add(frxDBdataset1);pDataPage := TfrxDatapage.Create(frxReport1);pPage := TfrxReportPage.Create(frxReport1);ppage.CreateUniqueName();pPage.SetDefaults;pPage.Orientation := poLandscape; // 橫印,poPortrait: 直印(默認),pPage.TopMargin := 10; // 上邊距(mm)pPage.LeftMargin := 20; // 左邊距(mm)pPage.RightMargin := 20; //右邊距(mm)pPage.BottomMargin := 15; // 下邊距(mm){pBand := TfrxReportTitle.Create(pPage);pBand.CreateUniqueName();pBand.Top := 0;pBand.Height := 20;}pTitle := TfrxReportTitle.Create(pPage);pTitle.CreateUniqueName();pTitle.Top := 0;pTitle.Height := 30;// 標題頭pMemo := TfrxMemoView.Create(pTitle);pMemo.CreateUniqueName();pMemo.Text :='AutoReport for FastReport4.14';pMemo.SetBounds(0,0,300,30); //MemoView :長、寬、高;pMemo.Font.Size := 14 ; // 14號字pMemo.Font.Style :=[fsBold]; // 粗體pMemo.Height := 30;pMemo.Align := baCenter; // MemoView:居中;// 創建表頭欄pPageHeader := TfrxPageHeader.Create(pPage); pPageHeader.CreateUniqueName;pPageHeader.Top := 50;pPageHeader.Height:= 20;for i := 0 to clientDataset1.FieldCount -1 dobegin// 表頭欄位pMemo := TfrxMemoView.Create(pPageHeader);pMemo.CreateUniqueName();pMemo.Text := clientDataset1.Fields[i].FieldName; pMemo.SetBounds( i * width, 0, width, 20);pMemo.Frame.Typ:=[ftLeft , ftRight , ftTop , ftBottom]; pMemo.Height := 20;// 风格// pMemo.Align := baWidth;pMemo.Align := baLeft;end; // end for ;// 创建DataBandpDataBand := TfrxMasterData.Create(pPage);pDataBand.CreateUniqueName();pDataBand.DataSet := frxDBDataset1;pDataBand.Top := 100;pDataBand.Height := 20;for i := 0 to clientdataset1.FieldCount-1 dobegin// 将Memo 添加到DataBand 上pMemo := TfrxMemoView.Create(pDataBand);pMemo.CreateUniqueName();// 连接数据pMemo.DataSet := frxDBDataset1;// 显示username 字段pMemo.DataField := clientDataset1.Fields[i].FieldName;pMemo.SetBounds( i * width, 0, width, 20); // setBountds(X横行起点,Y起点,字段宽度,字段高度)// memo 带边框pMemo.Frame.Typ:=[ftLeft , ftRight , ftTop , ftBottom];// 风格// pMemo.HAlign := haRight; // 字右對齊;pMemo.HAlign := haLeft;end; // end for ;// 报表显示frxReport1.ShowReport(true);end;end.。

相关文档
最新文档