FastReport 4程序员手册

合集下载

快速报表系统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区设置选项。

快速报表系统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用户手册1.0.0设计器报表组件提供了一个内置的设计器,此设计器可以在报表设计期间通过双击TfrxReport 组件进行访问。

它为用户提供了设计报表的所有工具,并能同步预览。

设计器当前版本是V4.6.8。

它提供了一些工具栏,可以根据个人爱好停放在任意位置。

工具栏的位置以及设计器的设置信息(任何一个改变后)会被保存在ini文件或注册表中,以后启动报表设计器后会根据这些信息恢复当前的设计界面。

要给终端用户提供报表设计器,你要么从fastreport组件面板中加入“TfrxDesigner”组件,要么在单元文件Uses列表中加入“frxDesgn”单元,这样才能在运行时期设计或修改报表。

注意:应该在Delphi窗体中添加其它Tfrx系列的组件,这样才能在报表设计期间使用。

看一下报表设计器,在上图中用数字进行了指示:1 –报表设计器工作区;2 –菜单栏;3 –工具栏;4 –对象工具栏;5 –报表页标签;6 –“报表树”窗体;;7 –“对象查看器”窗体;8 –“数据树”窗体,可以从此窗体中拖到一个数据元素到工作区;9 –标尺。

当往工作区拖动标尺时,将会出现一根引导线;10 –状态栏。

1.1.0控制键1.2.0鼠标控制Ctrl + 左键(原文是右键,有误)按住左键拖动,将出现虚线框,释放左键时所有被虚线框捕获的对象将被选中。

该操作也可以由点击空白页面,并移动鼠标光标到所需的位置。

Alt + 左键如果选中的对象是文本对象, 可直接编辑对象的文本。

1.3.0工具栏1.3.1设计栏与对象工具栏是一体的,有下列基本的按钮:图标名称描述选取工具一个标准的操作方法,显示一个鼠标指针,用来选择对象,修改大小等等。

徒手工具点击该图标后可以拖动报表。

显示比率工具点击鼠标左键放大报表显示(每次增加100%),点击右键缩小显示(每次减少100%)。

当按住左键拖动时,指定区域会被缩放。

文本工具点击“文本”的对象后可以在报表内直接编辑文本内容。

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.。

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

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

快速报表系统FastReport4用户使用手册簿_修改版(3)实用标准文档互式报表,意思是在预览窗口用户可用通过鼠标在组的标题上单击,以实现展开和关闭详细信息内容。

这里有一个示例:你在第一次生成报表时可以控制全部组内容是展开还是缩回。

默认情况全部组不展开。

如果想展开,可以设置ExpandDrillDown属性为True,或者通过右键上下文菜单进行操作。

3.5、行数让我们的示例显示每个组的行数,在没有band上添加一个text 组件,并设置系统变量[line]。

如图:浏览结果,可以看到每个组分别显示序列号。

如果想让第二个band的页码成顺序号延续,可以在band中将[line]改为[line#]。

显示结果如下图:3.6、函数集在分组报表中,一般情况下需要显示一些结论性的内容,如分组数,组内行数等。

为了这个目的,FastReport提供了一些函数集。

Sum 返回公式的和Min 返回公式的最小值Avg 返回公式的平均值Count 返回数据行数除count函数外的其他函数的语法如下,以sum为例:sum(公式,band,标记)sum(公式,band)sum(公式)参数解释:公式——要显示数据的公式band——数据Band的名称标记——一个字节,可以是以下数据之一或他们的和1:计算时包含不可见Band2:对计算值进行累计公式是必需的参数,其他是可选的,不过,有歧义时,应该使用band这个参数。

Count函数的语法:Count(band,标记)Count(band)参数说明和上面类似。

对所有的函数有一个规定,就是只适用于数据Band或数据Band 的Footer Band.集合函数是怎么工作的呢?让我们做一个示例:数据Band的“ItemTotal”字段显示当前表单的总计,在groupfooter中添加一个text 组件,输入[sum(,masterdata1)]。

显示结果如下图:函数中“标记”参数的目的就是为了有些报表部分数据Band可能隐藏不可见,不管是否可见都应该计算在范围内。

FastReport用户手册译文

FastReport用户手册译文

FastReport用户手册译文FastReport用户手册1.0.0 设计器报表组件提供了一个内置的设计器,此设计器可以在报表设计期间通过双击TfrxReport组件进行访问。

它为用户提供了设计报表的所有工具,并能同步预览。

设计器当前版本是V4.6.8。

它提供了一些工具栏,可以根据个人爱好停放在任意位置。

工具栏的位置以及设计器的设置信息(任何一个改变后)会被保存在ini 文件或注册表中,以后启动报表设计器后会根据这些信息恢复当前的设计界面。

要给终端用户提供报表设计器,你要么从fastreport组件面板中加入“TfrxDesigner”组件,要么在单元文件Uses列表中加入“frxDesgn”单元,这样才能在运行时期设计或修改报表。

注意:应该在Delphi窗体中添加其它Tfrx系列的组件,这样才能在报表设计期间使用。

看一下报表设计器,在上图中用数字进行了指示:1 –报表设计器工作区;2 –菜单栏;3 –工具栏;4 –对象工具栏;5 –报表页标签;6 –“报表树”窗体;;7 –“对象查看器”窗体;8 –“数据树”窗体,可以从此窗体中拖到一个数据元素到工作区;9 –标尺。

当往工作区拖动标尺时,将会出现一根引导线;10 –状态栏。

1.1.0控制键键描述Ctrl+O “文件|打开…” 菜单命令Ctrl+S “文件|保存” 菜单命令Ctrl+P “文件|预览” 菜单命令Ctrl+Z “编辑|撤消” 菜单命令Ctrl+C “编辑|复制” 菜单命令Ctrl+V “编辑|粘贴” 菜单命令Ctrl+X “编辑|剪切” 菜单命令Ctrl+A “编辑|全选” 菜单命令方向键, Tab 在对象间移动Del 删除选中的对象Enter 访问选中对象的编辑器Shift+方向键修改选中对象的大小Ctrl+方向键移动选中的对象Alt+方向键选中的物体附着到最近的一个特定的方向 1.2.0鼠标控制操作描述左键选择对象;粘贴一个新对象; 移动名调整一个对象的大小。

报表fastreport

报表fastreport

报表fastreport本节主要讲述FastReport报表系统的基本概念、基本操作⽅法、基本控件使⽤等内容。

基本概念最主要的概念是FastReport报表的组成⽅式和控件主要⽤途,它⼀般包括以下⽅⾯:*页⾯(Page) --- 默认为Page1与我们现实中使⽤的纸张相似。

但它不仅仅指的是⼀张纸,⽽是⽤于我们设计报表的容器。

打印出来可以是⼀张纸也可以是多张。

页⾯(Page)可以有多个(你可以新增页⾯New Page),即可以有多个报表容器。

利⽤这⼀点,你可以设计出复合报表(Composite Report)。

利⽤页⾯设置可以定义⼤⼩、⽅向、边界、打印⽅式、分栏等参数。

这⾥不再详述,只特别强调分栏的作⽤。

你可以将页⾯分成多栏,这样打印时数据将按照从上到下,再从左往右的⽅式显⽰。

这就是我们通常说的分栏报表(Splite Report)。

*区域(Band)FastReport将整个页⾯划分成若⼲个区域。

⽽每个区域有着各⾃不同的功能,这些功能由FastReport⾃动加载。

⼀个页⾯中可以没有区域,也可以只有其中的某些区域,这根据报表的需求⽽定。

放置在页⾯中的区域有范围,落⼊区域范围内的控件(例如:TextObject)才具有区域的功能。

重要的区域包括:#报表抬头(ReportTitle)仅在第⼀页显⽰在纸张的上部。

⼀般⽤于打印报表的标题等信息。

#报表合计(ReprotSummary)仅显⽰在所有数据的最后末尾。

⼀般⽤于打印统计信息等。

#页⾸(PageHeader)显⽰在每页的最上部。

通过设置你可以让它置于报表抬头之上或者之下。

⼀般⽤于打印页眉信息等。

#页脚(PageFooter)显⽰在每页的最底部。

⼀般⽤于打印页序等信息。

#主数据(MasterData)⽤于显⽰数据源的数据,是最重要的区域。

在该区域中可以定义连接哪⼀个数据源,那么该数据源的数据将会按顺序依次将记录打印出。

数据区域还有明细数据(DetailData)等,⼀共⽀持6阶数据。

fastreport教程

fastreport教程

FastReport教程简介FastReport是一款功能强大且易于使用的报告生成工具。

它提供了丰富的报告设计功能,并支持多种数据源。

FastReport广泛应用于软件开发、数据分析和业务报表等领域。

本教程将介绍FastReport的基本用法和一些常用功能。

安装要使用FastReport,我们首先需要安装它。

FastReport支持多种开发环境,如Delphi、C++Builder、.NET等。

你可以根据自己的开发环境选择合适的版本进行安装。

Delphi环境如果你使用Delphi进行开发,可以按照以下步骤安装FastReport:1.在FastReport官网下载最新版本的安装包;2.运行安装包,按照提示进行安装;3.在Delphi的组件面板中找到FastReport组件,将其拖放到窗体中。

.NET环境如果你使用.NET进行开发,可以按照以下步骤安装FastReport:1.在FastReport官网下载最新版本的安装包;2.运行安装包,按照提示进行安装;3.在Visual Studio中打开项目,通过NuGet下载并安装FastReport。

创建报表创建报表是使用FastReport的第一步。

在FastReport中,我们可以使用设计器来创建报表模板,并在代码中加载和填充数据。

下面是创建报表的基本步骤:1.打开FastReport设计器,新建一个报表项目;2.在报表中添加数据源,可以是数据库、XML文件或自定义数据源;3.在报表中添加报表控件和数据绑定,设计报表样式;4.在代码中加载数据,并预览或导出报表。

加载数据在FastReport中,我们可以使用多种方式加载数据:数据库如果你的报表数据存储在数据库中,你可以使用FastReport提供的数据库连接工具加载数据。

首先需要设置数据库连接参数,然后通过SQL查询或存储过程获取数据。

```csharp using FastReport.Data;// 创建数据库连接 var connection = new Connection(); connection.ConnectionString =。

FastReport--打印报表操作手册

FastReport--打印报表操作手册

安易信息系统FastReport报表打印格式操作手册目录FastReport对象 (2)“Text”对象 (4)“Band”对象 (9)“Image”对象 (12)“SubReport”对象 (14)“Line”对象 (14)“CheckBox”对象 (15)“RichText”对象 (15)“OLE”对象 (16)“Chart”对象 (17)“Shape”对象 (20)“Barcode”对象 (20)“RichText 2.0”对象 (21)设计器 (22)使用控制键 (23)使用鼠标 (24)报表选项 (25)页面选项 (25)设计器选项 (28)对象观察器 (30)“插入数据字段”窗口 (31)数据字典 (31)表达式编辑器 (37)工具栏 (39)“标准”工具栏 (39)“格式”工具栏 (40)“边框”工具栏 (41)“对齐”工具栏 (42)对象的属性和方法 (42)解释器的使用 (53)创建ANYIHIS的FastReport报表 (54)FastReport对象Chart用于在报表中插入图表。

T eeChart控件必须在Delphi中安装后才能正常工作。

RichText 2.0类似RichText控件,但允许图像和OLE对象插入RTF文本中可用BLOB字段作为数据源。

TrxRichEdit控件和RX类库在Delphi中已经安装才能使用这个控件。

在FastReport中激活不需要在FR.inc中加入相关行。

“Text”对象这个对象无疑是FastReport中最强大、最灵活的对象。

主要是,它提供一个包含多行文本的矩形框。

你可以设置边框的类型、颜色和宽度;以及字体属性、文本对齐方式和字体方向(垂直或水平)。

要设置对象的属性,使用“文本”和“边框”工具栏:text对象的内容主要由备注类型的对象组成,可以包含:文本,变量,数据字段,或这些的任意组合。

字体格式将应用于text对象所包含的所有文本。

FastReport4中文使用手册

FastReport4中文使用手册

FastReport4中文使用手册FastReport4是一款用于快速创建报表和生成报表的工具。

它是一个功能全面的软件,提供了多种界面和报表样式,可以满足不同用户的需求。

本文将介绍FastReport4的中文使用手册,帮助用户更好地使用该软件。

安装FastReport4的安装比较简单,只需要按照向导提示进行操作即可。

安装完成后,启动软件。

在软件中,有一个“向导”按钮,这个按钮可以帮助用户快速上手。

界面FastReport4的界面比较清晰、易于操作。

在软件的主界面上,有一个工具栏和一个菜单栏。

用户可以从菜单栏中选择不同的命令,从工具栏中选择不同的工具。

报表制作在FastReport4中,报表的制作非常简单。

用户只需要从工具栏中选择“新建报表”,然后根据需要选择不同的报表样式和布局。

用户还可以选择不同的数据源和字段,以便生成所需的报表。

报表生成在FastReport4中,用户可以快速生成报表。

只需要选择需要生成的报表类型、数据源和布局,然后点击“生成报表”按钮即可。

如果需要,用户可以将报表输出到不同的文件格式,如PDF、Microsoft Excel等。

报表排版FastReport4还提供了丰富的报表排版功能。

用户可以通过调整表格、图片、文本框的大小和位置,来实现所需的报表效果。

用户还可以添加不同的样式,使报表更加美观。

报表设计在FastReport4中,用户可以通过报表设计功能,对报表进行更加细致的编辑。

用户可以在报表上添加不同的控件,如文本框、图片、图表等。

用户还可以通过操作数据源,对报表进行更加详细的调整。

总结FastReport4是一款非常实用的报表制作和生成工具,具有丰富的界面和功能。

通过本文的介绍,相信大家已经了解到了FastReport4的基本使用方法。

希望读者能够通过这篇中文使用手册,更好地使用FastReport4,为自己的工作提高效率。

fastreport中手册(翻译整理)

fastreport中手册(翻译整理)

第一章通用说明(一)安装成VS工具箱(二)故障排除(三)部署(四)编译源代码第二章winform窗体中的使用Visual Studio中报告组件的使用使用代码生成报表存储和装载一个报告注册数据传递一个值到报表参数运行报告设计报告导出报告配置环境取代了“开放”和“保存”对话框更换标准进度窗口通过自己的连接字符串通过自定义的SQL引用报告对象使用代码创建一个报告使用自己的预览窗口24过滤表中数据向导第三章 的使用使用WebReport组件存储和装载一个报告注册数据传递一个值到报告参数工作在“中等信任”模式第一章通用说明1.0 一般信息安装VS工具网络安装程序自动添加FastReport组件进入Visual Studio的工具箱。

如果你有禁用这个特性在安装,你可以手动添加组件。

要做到这一点:在工具箱中删除“FastReport·NET”选项卡,如果它是在那里;·创建一个新的标签(要做到这一点,右键单击工具箱并选择“添加选项卡”项目),或选择一个现有的标签你想添加FastReport组件; 右键点击一个标签,·选择“选择项目…”:·在对话框中,按“浏览…”按钮,选择FastReport.dll,FastReport.Web.dll文件(它们位于“C:\ Program files \ FastReports ”文件夹);·关闭对话框与OK按钮。

在此之后,您将看到组件在一个选择的选项卡:·报告;·视图控制;·设计控制;·EnvironmentSettings;(此组件将WebReport·可见, 在 项目唯一的)。

2.0 故障排除如果你面临的问题在使用报表设计器(例如,一些工具栏或工具窗户被损坏),你应该删除配置文件。

这个文件在启动时创建。

它位于以下文件夹:A.Windows XP系统【C:\文档和设置\ user_name \ \应用程序本地设置数据\ \ FastReport.config FastReport】B.Windows Vista系统【C:\用户\ user_name \ AppData \当地\ \ FastReport.config FastReport】以下信息是存储在配置文件中:1.对话框窗口的大小和位置2.工具栏设置;3.最近使用的数据连接4.邮件设置(如果你使用“发送电子邮件”功能在预览)。

FastReport4安装教程

FastReport4安装教程

FastReport4 安装教程详细的安装方法:1. 安装前请删除原有的FastReport控件。

2. 最好把FastReport v4复制到一个固定不变的目录下。

因为如果路径一旦变化,delphi将不能装载FastReport。

例如,我把它放到了C:\Program Files\Borland\Delphi7\Third\FastReport 4 目录下。

3. "Tools|Options|Environmet Options|Delphi Options|Library - Win32"中的"Directories"标签面下"Library path"添加FastReport的各个路径。

FastReport.v4\FastScriptFastReport.v4\FastQBFastReport.v4\SourceFastReport.v4\Source\BDEFastReport.v4\Source\ADOFastReport.v4\Source\IBXFastReport.v4\Source\DBXFastReport.v4\Source\ExportPack(我安装的时候,只添加前三个路径就可以正常使用了,到目前为止还没出现什么错误,可能是我用到的功能比较少吧)4. 生成汉化文件(先关闭delhi)运行"recompile.exe"文件,设置相应选项,我的设置如下:1.Select the compiler 设置为Delphi7(Delphi,C++)2.Select the FR3 Version 设置为Enterprise(或根据具体版本设置)3.Select the TeeChart version 设置为TeeChartStd (或根据具体版本设置)4.选择What you want to do 下的Recompile all packages ,点击compile4.选择What you want to do 下的Change language To: 设置为Chinese ,点击compile5. 编译运行包(compile)- FastReport.v4\FastScript\fs7.dpk- FastReport.v4\FastScript\fsDB7.dpk- FastReport.v4\FastScript\fsBDE7.dpk- FastReport.v4\FastScript\fsADO7.dpk- FastReport.v4\FastScript\fsIBX7.dpk- FastReport.v4\FastScript\fsTee7.dpk- FastReport.v4\FastQB\fqb70.dpk- FastReport.v4\Source\frx7.dpk- FastReport.v4\Source\frxDB7.dpk- FastReport.v4\Source\ADO\frxADO7.dpk- FastReport.v4\Source\BDE\frxBDE7.dpk- FastReport.v4\Source\IBX\frxIBX7.dpk- FastReport.v4\Source\DBX\frxDBX7.dpk- FastReport.v4\Source\frxTee7.dpk- FastReport.v4\Source\ExportPack\frxe7.dpk快速打开上面一堆文件的方法:打开FastReport.v4\ ,按Ctrl+F 打开文件搜索,在“全部或部分文件名”里输入f*7*.dpk ,搜索。

FastReport4-动态报表制作

FastReport4-动态报表制作

FastReport4 动态报表制作注:1、窗体报表控件FR:TfrxReport;frDB:TfrxDBDataset2、调用自定义函数:GetPrnFieldWidth(ADOQ_List); //取得查询结果中各字段宽度3、全局变量:Prn_FieldWidth: Array of integer; //打印时各字段宽度数组通过GetPrnFieldWidth修改其值4、uses PRINTERS;代码:procedureTFrm_yppf_prn_pfd.ToolButton3Click(Sender: TObject);Var//DataPage: TfrxDataPage;Page: TfrxReportPage;PageTitle:TfrxReportTitle;PageHeader:TfrxPageHeader;//Band: TfrxBand;MastData: TfrxMasterData;PageSummary:TfrxReportSummary;Memo: TfrxMemoView;i:integer;MLeft:Real;//表头字段在mastdata中的左边距PaperWidth:Real; //纯报表(不含边距)宽度(毫米)begin//清除报表FR.Clear;//1====添加页Page:=TfrxReportPage.Create(FR);Page.CreateUniqueName;//创建唯一名称//Page.SetDefaults;//设置默认字段大小, 纸张//自定义纸张大小//Page.PaperWidth:=210; //纸张宽//Page.PaperHeight:=297;//纸张高Page.PaperSize:=9;//a4纸Page.Orientation:=poPortrait; //纸张纵向//Page.Orientation:=poLandscape; //纸张横向Page.TopMargin:=25;//上边距Page.BottomMargin:=15;Page.LeftMargin:=15;Page.RightMargin:=15;//2====添加一个报表标题栏PageTitle:=TfrxReportTitle.Create(Page);PageTitle.CreateUniqueName;PageTitle.Top:=0;PageTitle.Height:=140; //留出空白行//得到报表不含边距的宽度(毫米)转换为像素时需乘以3.77953//SetBounds中用的是像素值PaperWidth:=(Page.PaperWidth-page.LeftMargin-page.RightMargin)*3.77953; //添加标题memoMemo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haCenter;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Font.Size:=14;Memo.Text := '药品批发单';Memo.Height := 40;Memo.Align:=baWidth;//伸展坐标到标题栏的宽度//摘要第一行Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '单号:'+LEdit_dh.Hint;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(0,60,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '单位:'+LEdit_dwmc.Text;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3,60,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '批发金额:'+LEdit_SumPfj.Text;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3*2,60,PaperWidth/3,20); //摘要第二行Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '结算方式:'+LEdit_jsfsmc.Text;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(0,80,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '制单人:'+LEdit_zdr.Text;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3,80,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '制单日期:'+LEdit_zdrq.Text;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3*2,80,PaperWidth/3,20); //摘要第三行Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '操作员:'+UserName;Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(0,100,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '打印日期:'+DateToStr(Date)+'^^^'+TimeToStr(GetTime); Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3,100,PaperWidth/3,20);//Memo:= TfrxMemoView.Create(PageTitle);Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Text := '';Memo.Height := 20;Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线Memo.SetBounds(PaperWidth/3*2,100,PaperWidth/3,20);//=3==添加Pageheader (表头)PageHeader:=TfrxPageHeader.Create(Page);PageHeader.CreateUniqueName;//PageHeader.Top:=PageTitle.Height+120; //其总是紧随PageTitle之后PageHeader.Height:=20;//添加表头memoGetPrnFieldWidth(ADOQ_List); //取得查询结果中各字段宽度MLeft:=0;for i := 0 to ADOQ_List.FieldCount - 1 doBeginMemo:=TfrxMemoView.Create(PageHeader);Memo.CreateUniqueName;Memo.HAlign:=haCenter;Memo.HAlign:=haCenter;Memo.VAlign:=vaCenter; //上下对齐Memo.Frame.TopLine.Style:=fsSolid;Memo.Frame.BottomLine.Style:=fsSolid;Memo.Frame.LeftLine.Style:=fsSolid;Memo.Frame.RightLine.Style:=fsSolid;//边线格式Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线 Memo.Text:=Trim(ADOQ_List.Fields[i].FieldName);ifi<ADOQ_List.FieldCount-1 thenBeginMemo.SetBounds(MLeft,0,Prn_FieldWidth[i]*7.5,20);EndElseBegin //最后一列时 ,页面剩余宽度都给他Memo.SetBounds(MLeft,0,PaperWidth-MLeft,20);End;MLeft:=MLeft+Prn_FieldWidth[i]*7.5;//下一列左起位置End;//4=====主数据 (记录)MastData:=TfrxMasterData.Create(Page);MastData.CreateUniqueName;MastData.Top:=PageTitle.Height+PageHeader.Height; MastData.Height:=20;MastData.DataSet:=frDB;//添加 memoMLeft:=0;for i := 0 to ADOQ_List.FieldCount - 1 doBeginMemo:=TfrxMemoView.Create(MastData);Memo.CreateUniqueName;//Memo.HAlign:=haCenter;Memo.HAlign:=haLeft;Memo.VAlign:=vaCenter; //上下对齐Memo.Font.Size:=9;Memo.Frame.TopLine.Style:=fsSolid;Memo.Frame.BottomLine.Style:=fsSolid;Memo.Frame.LeftLine.Style:=fsSolid;Memo.Frame.RightLine.Style:=fsSolid;//边线格式Memo.Frame.Typ:=[ftLeft,ftRight,ftTop,ftBottom];//显示边线 Memo.DataSet:=frDB;Memo.DataField:=Trim(ADOQ_List.Fields[i].FieldName);ifi<ADOQ_List.FieldCount-1 thenBeginMemo.SetBounds(MLeft,0,Prn_FieldWidth[i]*7.5,20);EndElseBegin //最后一列时 ,页面剩余宽度都给他Memo.SetBounds(MLeft,0,PaperWidth-MLeft,20);End;MLeft:=MLeft+Prn_FieldWidth[i]*7.5;//下一列左起位置 End;//5=====页尾PageSummary:=TfrxReportSummary.Create(page); PageSummary.CreateUniqueName; PageSummary.Height:=20;//添加summary memoMemo:= TfrxMemoView.Create(PageSummary); Memo.CreateUniqueName;Memo.HAlign:=haLeft;//左右居中Memo.VAlign:=vaCenter;//上下居中Memo.Top:=0;Memo.Left:=0;Memo.Height := 20;Memo.Font.Size:=10;Memo.Text :=;Memo.Align:=baWidth;//伸展坐标到标题栏的宽度//FR.DesignReport();exit;//显示报表FR.ShowReport;end;自定义函数代码://==================================================== ===========//====得到欲打印的查询结果中各字段的最长值,结果保存在Prn_FieldWidth====== //==================================================== ============ProcedureGetPrnFieldWidth(MyADOQ:TADOQuery);Vari:integer;FindSql:String;BeginSetLength(Prn_FieldWidth,MyADOQ.FieldCount);//先使表头字段宽度等于标题宽度fori := 0 to MyADOQ.FieldCount - 1 doBegin//ADOQ_List.Fields[i].FieldName 默认为宽字符型 widestring,用length只能取得其字符长度//用Pchar可将其转换为AnsiString类型,这样length可以取得其字节长度Prn_FieldWidth[i]:=Length(Pchar(Trim(MyADOQ.Fields[i].FieldName )));MyADOQ.Next;End;//再用查询结果各字段结果长于标题着替换fori := 0 to MyADOQ.FieldCount - 1 doBeginFindSql:='SELECT Max(Datalength('+ Trim(MyADOQ.Fields[i].FieldName)+'))as 字段最长值'+' FROM (' +MyADOQ.SQL[0]+') DERIVEDTBL';DM.ADOQ_Find.Close;DM.ADOQ_Find.SQL.Clear;DM.ADOQ_Find.SQL.Add(FindSql);DM.ADOQ_Find.Open;if DM.ADOQ_Find.RecordCount>0 thenBeginif StrToInt(DM.ADOQ_Find.FieldByName('字段最长值').AsString)>Prn_FieldWidth[i] thenPrn_FieldWidth[i]:=StrToInt(DM.ADOQ_Find.FieldByName('字段最长值').AsString);End;MyADOQ.Next;End;End;。

FastReport 4程序员手册

FastReport 4程序员手册

FastReport 程序员手册一、使用TfrxReport 组件工作1、加载并存储报表默认情况下,报表窗体同项目窗体构存储在同一个DFM文件中。

多数情况下,无须再操作,因而你就不必采用特殊方法加载报表.如果你决定在文件中存储报表窗体或者是数据库的Blob字段(他提供了非常大的弹性,你能够在非编译程序中修改),你必须使用“TfrxReport"提供的加载和存储方法。

function LoadFromFile(const FileName: String; ExceptionIfNotFound: Boolean = False): Boolean;从一个给定名字文件中加载报表。

如果第二个参数等于“True”并且文件没找到,那么他会触发一个异常。

如果文件加载成功,他返回“True"。

procedure LoadFromStream(Stream:TStream);从流中加载报表。

procedure SaveToFile(const FileName: String);用特殊名称文件存储报表。

procedure SaveToStream(Stream: TStream);把报表存在流中。

例如:Pascal:frxReport1.LoadFromFile(’c:\1。

fr3’);frxReport1.SaveToFile('c:\2。

fr3’);C++:frxReport1->LoadFromFile(”c:\\1.fr3”);frxReport1-〉SaveToFile(”c:\\2.fr3”);2。

设计报表通过“TfrxReport.DesignReport”方法调用报表设计器。

你必须在你的项目中包含报表设计器(必要条件是:要么使用“TfrxDesigner”组件,要么增加“frxDesgn”单元到uses列表)“DesigReport”方法接受两个默认参数:procedure DesignReport(Modal:Boolean = True;MDIChild: Boolean = False); Modal参数决定设计器是否被模态,MDIChild参数允许把设计器窗体作为一个MDI子窗体。

Fast report 4 用代码创建一个报表

Fast report 4 用代码创建一个报表

Creating a report form from code用代码创建报表As a rule, you will create most reports using the designer. Nevertheless, in some cases (for example, when the report’s form is unknown) it is necessary to create a report manually, from code.作为一个原则,你应该使用设计器(Designer) 创建绝大部分报表.尽管如此,在一些案例(比如,当报表的表单还是未知的情况下).手动使用代码来创建报表就有必要了.To create a report manually, one should perform the following steps in order:- clear the report component- add data sources- add the "Data" page- add report’s page- add bands on a page- set bands’ properties, and then connect them to the data- add objects on each band- set objects’ properties, and then connect them to the data要手动创建一个报表,我们应该安装如下步骤:-清除报表控件-加入数据源-加入数据页(“Data” page)-加入报表页-加入报表段-设置报表段的属性,然后将它连接到数据-在每个报表段上加入对象-设置对象的属性,然后将它们连接到数据Let us examine creation of a simple report of the «list» type. Assume that we have the following components: frxReport1: TfrxReport andfrxDBDataSet1: TfrxDBDataSet (the last one is connected to data from the DBDEMOS, the «Customer.db» table). Our report will contain one page with the «Report Title» and «Master Data» bands. On the «Report Title» band there will be an object with the "Hello FastReport!" text, and the «Master Data» one will contain an object with a link to th e "CustNo" field.Pascal:varDataPage: TfrxDataPage;Page: TfrxReportPage;Band: TfrxBand;DataBand: TfrxMasterData;Memo: TfrxMemoView;{ clear a report }frxReport1.Clear;{ add a dataset to the list of ones accessible for a repo rt }frxReport1.DataSets.Add(frxDBDataSet1);{ add the "Data" page }DataPage := TfrxDataPage.Create(frxReport1);{ add a page }Page := TfrxReportPage.Create(frxReport1);{ create a unique name }Page.CreateUniqueName;{ set sizes of fields, paper and orientation by default } Page.SetDefaults;{ modify paper’s orientation }Page.Orientation := poLandscape;{ add a report title band}Band := TfrxReportTitle.Create(Page);Band.CreateUniqueName;{ it is sufficient to set the «Top»coordinate and height for a band }{ both coordinates are in pixels }Band.Top := 0;Band.Height := 20;{ add an object to the report title band }Memo := TfrxMemoView.Create(Band);Memo.CreateUniqueName;Memo.Text := 'Hello FastReport!';Memo.Height := 20;{ this object will be stretched according to band’s width}Memo.Align := baWidth;{ add the masterdata band }DataBand := TfrxMasterData.Create(Page);DataBand.CreateUniqueName;DataBand.DataSet := frxDBDataSet1;{ the Top coordinate should be greater than the previously added band’s top + height}DataBand.Top := 100;DataBand.Height := 20;{ add an object on master data }Memo := TfrxMemoView.Create(DataBand);Memo.CreateUniqueName;{ connect to data }Memo.DataSet := frxDBDataSet1;Memo.DataField := 'CustNo';Memo.SetBounds(0, 0, 100, 20);{ adjust the text to the right object’s margin }Memo.HAlign := haRight;{ show the report }frxReport1.ShowReport;C++:TfrxDataPage * DataPage;TfrxReportPage * Page;TfrxBand * Band;TfrxMasterData * DataBand;TfrxMemoView * Memo;// clear a reportfrxReport1->Clear();// add a dataset to the list of ones accessible for a rep ortfrxReport1->DataSets->Add(frxDBDataset1);// add the "Data" pageDataPage = new TfrxDataPage(frxReport1);// add a pagePage = new TfrxReportPage(frxReport1);// create a unique namePage->CreateUniqueName();// set sizes of fields, paper and orientation by default Page->SetDefaults();// modify paper’s orientationPage->Orientation = poLandscape;// add a report title bandBand = new TfrxReportTitle(Page);Band->CreateUniqueName();// it is sufficient to set the «Top»coordinate and height for a band// both coordinates are in pixelsBand->Top = 0;Band->Height = 20;// add an object to the report title bandMemo = new TfrxMemoView(Band);Memo->CreateUniqueName();Memo->Text = "Hello FastReport!";Memo->Height = 20;// this object will be stretched according to band’s width Memo->Align = baWidth;// add the masterdata bandDataBand = new TfrxMasterData(Page);DataBand->CreateUniqueName();DataBand->DataSet = frxDBDataset1;// the Top coordinate should be greater than the previously added band’s top + heightDataBand->Top = 100;DataBand->Height = 20;// add an object on master dataMemo = new TfrxMemoView(DataBand);Memo->CreateUniqueName();// connect to dataMemo->DataSet = frxDBDataset1;Memo->DataField = "CustNo";Memo->SetBounds(0, 0, 100, 20);// adjust the text to the right object’s marginMemo->HAlign = haRight;// show the reportfrxReport1->ShowReport(true);Let us explain some details.All the data sources, which are to be used in the report, must be added to the list of data sources. In our case, this is performed using the «frxReport1.DataSets.Add(frxDBDataSet1)» line. Otherwise, a report will not work.The "Data" page is necessary for inserting internal datasets such as TfrxADOTable into the report. Such datasets can be placed only to the "Data" page.The call for Page.SetDefaults is not necessary, since in this case a page will have the À4 format and margins of 0 mm. SetDefaults sets 10mm margins and takes page size and alignment, which a printers have by default.While adding bands to a page, you should make sure they do not overlap each other. To perform this, it is sufficient to set the «Top» and «Height» coordinates. There is no point in modifying the «Left» and «Width» coordinates, since a band always has th e width of the page, on which it is located (in case of vertical bands it's not true –you should set Left and Width properties and don't care about Top and Height). One should note, that the order of bands’ location on a page is of great importance. Always locate bands in the same way you would do it in the designer.Objects’ coordinates and sizes are set in pixels. Since the «Left,» «Top,» «Width,» and «Height» properties of all objects have the «Extended» type, you can point out non-integer values. The following constants are defined for converting pixels into centimeters and inches:fr01cm = 3.77953;fr1cm = 37.7953;fr01in = 9.6;fr1in = 96;For example, a band’s height equal to 5 mm can be set as follows:Band.Height := fr01cm * 5;Band.Height := fr1cm * 0.5;。

fast report教程

fast report教程

fast report 的使用说明1. TfrxDBDatasetTfrxUserDataset 数据存取元件。

FastReport 使用这些元件读取及参考数据库的字段,这两个元件都源于“TfrxDataSet” 并继承其大部分的功能。

TfrxUserDataSet 元件允许构建未连接到数据库的报表,而由其它来源接收数(据如:数列、文件等)。

在此同时,程序员仅需提供浏览此数据集的功能,资料接收并非由此元件执行,而是用其它的方法(例如,经由“TfrxReport.OnGetValue”事件)。

TfrxUserDataSet 元件有下列的属性:(1) property RecNo: Integer readonly;目前记录编号,首笔的记录编号是“0”(2) property Enabled: Boolean default True;定义此元件是否可在designer 里面使用。

(3) property RangeBegin: TfrxRangeBegin default rbFirst;数据导航(navigation)的起点。

下列的值可以使用: rbFirst –从数据的第一笔记录开始。

rbCurrent –从当前的记录开始(4) property RangeEnd: TfrxRangeEnd default reLast;数据导航(navigation)的起点。

下列的值可以使用: reLast –直到数据结束。

ReCurrent –直到目前的记录。

reCount –依“RangeEndCount” 属性而定。

(5) property RangeEndCount: Integer;数据集中的数据个数,此功能只在“RangeEnd”属性等于reCount 有效。

(6) property UserName: String;符号名称。

在报表设计环境(Designer)下,将被显示于DataSet 的下方。

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

FastReport 程序员手册一、使用TfrxReport 组件工作1、加载并存储报表默认情况下,报表窗体同项目窗体构存储在同一个DFM文件中。

多数情况下,无须再操作,因而你就不必采用特殊方法加载报表。

如果你决定在文件中存储报表窗体或者是数据库的Blob字段(他提供了非常大的弹性,你能够在非编译程序中修改),你必须使用“TfrxReport”提供的加载和存储方法。

function LoadFromFile(const FileName: String; ExceptionIfNotFound: Boolean = False): Boolean;从一个给定名字文件中加载报表。

如果第二个参数等于“True”并且文件没找到,那么他会触发一个异常。

如果文件加载成功,他返回“True”。

procedure LoadFromStream(Stream: TStream);从流中加载报表。

procedure SaveToFile(const FileName: String);用特殊名称文件存储报表。

procedure SaveToStream(Stream: TStream);把报表存在流中。

例如:Pascal:frxReport1.LoadFromFile('c:\1.fr3');frxReport1.SaveToFile('c:\2.fr3');C++:frxReport1->LoadFromFile("c:\\1.fr3");frxReport1->SaveToFile("c:\\2.fr3");2.设计报表通过“TfrxReport.DesignReport”方法调用报表设计器。

你必须在你的项目中包含报表设计器(必要条件是:要么使用“TfrxDesigner”组件,要么增加“frxDesgn”单元到uses列表)“DesigReport”方法接受两个默认参数:procedure DesignReport(Modal: Boolean = True; MDIChild: Boolean = False);Modal参数决定设计器是否被模态,MDIChild参数允许把设计器窗体作为一个MDI子窗体。

例如:frxReport1.DesignReport;3.运行报表应用下面两个“TfrxReport”方法中的一个启动报表:procedure ShowReport(ClearLastReport: Boolean = True);启动报表并在预览窗体中显示。

如果“ClearLastReport”参数等于“False”,报表将会增加先前的一个报表结果,否则清除前一个报表结构。

function PrepareReport(ClearLastReport: Boolean = True): Boolean;启动报表,没有打开预览窗体,参数赋值与“ShowReport”方法同名。

如果报表构造成功,他返回“True”。

多数情况下,使用第一种方法更为方便一些。

在报表被构造的同时,他会立刻显示一个预览窗体。

当需要增加另一个报表到前一个报表中的时候,“ClearLastReport”参数显得方便些。

(此类技术用于批量报表打印)。

例如:frxReport1.ShowReport;4.预览报表使用两种途径显示一个报表是可能的:两者都是调用“TfrxReport.ShowReport”方法(先前描述过了),或者使用“TfrxReport.ShowPreparedReport”方法来帮助实现。

在第二种情况下,报表构造没有被执行,但显示了一个完成的报表。

也就是说,你要么在“PreparedReport”方法帮助下构造他,要么在构造前从文件中加载报表(查看“加载/存储完成的报表”)例如:Pascal:if frxReport1.PrepareReport thenfrxReport1.ShowPreparedReport;C++:if(frxReport1->PrepareReport(true))frxReport1->ShowPreparedReport();在这种情况下,报表构造器先被完成了,并显示在预览窗体中。

构造一个庞大的报表可能要花费很多时间,那就是为什么使用“ShowReport”非等时同步方法会好于“PrepareReport/ShowPreparedReport”方法。

你可以通过“TfrxReport.PreviewOptions”属的缺省值设定预览参数值。

(这句翻译的不够好,请参考原文)原文参考:In this case, report construction is finished first, and after that it is displayed in the preview window. Construction of a large report can takea lot of time, and that is why it is better to use the “ShowReport anisochronous” method, than the “PrepareReport/ShowPreparedReport” one. One can assignpreview settings by default via the “TfrxReport.PreviewOptions” property.[SPAN]5、打印报表大多数情况下,你可以从预览窗体打印报表。

要人工打印报表,你应该使用“TfrxReport.Print”方法,例如:frxReport1.LoadFromFile(...);frxReport1.PrepareReport;frxReport1.Print;同时,你可以在显示的打印对话框中设置打印参数,你也可以使用默认设定值。

取消打印对话框,请参考“TfrxReport.PrintOptions”属性帮助6.载入并存储报表这个功能可以在预览窗口中执行。

也可以使用手工方法执行,帮助参考“TfrxReport.PreviewPages”方法:function LoadFromFile(const FileName: String; ExceptionIfNotFound: Boolean = False): Boolean;procedure SaveToFile(const FileName: String);procedure LoadFromStream(Stream: TStream);procedure SaveToStream(Stream: TStream);赋值和参数化类似与TfrxReport相应的方法。

文件包含了完成的报表,默认情况下以“FP3”为扩展名。

例如:Pascal:frxReport1.PreviewPages.LoadFromFile('c:\1.fp3');frxReport1.ShowPreparedReport;C++:frxReport1->PreviewPages->LoadFromFile("c:\\1.fp3");frxReport1->ShowPreparedReport();注意,完成的报表加载完毕后,预览方法是通过“ShowPreparedReport” 方法执行的。

7.导出报表他可以从预览窗口中执行。

也可以手动操作,通过“FfrxReport.Export”方法,及这个方法中的参数,你可以导出你想要导出的文件类型:frxReport1.Export(frxHTMLExport1);导出过滤组件必须是有效的(你必须把他们放到你项目中的窗体上)并调整正确。

The export filter component must be available (you must put it on the form of your project) and be adjusted correctly.8.创建自定义预览窗体FastReport在标准的预览窗口中显示报表。

如果因为某些原因而不适合你,你可以创建一个自定义预览窗体。

为了这个目的,需要设计FastReport组件面板中的“TfrxReport”组件。

要显示报表,TfrxReport.Preview方法应该连接到这个组件。

在使用TfrxPreview组件的时候,有两个典型的问题。

他不会处理按键(箭头,PgUp,PgDown等等)和鼠标滚轮(如果有的话)。

要让TfrxPreview同按键工作,设置焦点给他(他是可以做到的,例如,在窗体的OnShow事件句柄中)frxPreview.SetFocus;要让TfrxPreview同鼠标滚轮工作,你必须创建OnMouseWheel事件句柄,并且调用TfrxPreview.MouseWheelScroll方法。

procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);beginfrxPreview1.MouseWheelScroll(WheelDelta);end;9.建立复合报表(批量打印)在某些情况下,需要立刻组织几个报表打印,或者在一个打印预览窗体中封装并呈现几个报表。

要执行这些,在FastReport中有些工具能够允许建立一个新的报表附加在一个已经存在的报表上。

“TfrxReport.PrepareReport”方法中有一个选项“ClearLasReport”布尔类型参数,默认情况下他等于True,这个参数定义了是否有必要在建立报表时清除前一个报表。

下面的方法展示了如何从两个报表中建立一个批量报表:Pascal:frxReport1.LoadFromFile('1.fr3');frxReport1.PrepareReport;frxReport1.LoadFromFile('2.fr3');frxReport1.PrepareReport(False);frxReport1.ShowPreparedReport;C++:frxReport1->LoadFromFile("1.fr3");frxReport1->PrepareReport(true);frxReport1->LoadFromFile("2.fr3");frxReport1->PrepareReport(false);frxReport1->ShowPreparedReport();我们加载并建立第一个报表,但并没有显示他。

相关文档
最新文档