社区
Delphi
帖子详情
FastReport报表如何输出到Word中?
zhyj0626
2003-03-03 06:21:43
FastReport报表如何输出到Word中?
...全文
107
1
打赏
收藏
FastReport报表如何输出到Word中?
FastReport报表如何输出到Word中?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
TOMWLD
2003-03-03
打赏
举报
回复
使用TfrRTFExport,在预览时即可另存为rtf格式了
delphi传递变量到
fast
report
报表
中
用的是delphi7+
fast
report
4.9编写的。向
fast
report
报表
传递变量总是不成功,利用网上的信息,一个一个地试,弄了个通宵都没有成功,后来终于成功了,利用delphi的表单
中
的edit,向
fast
report
报表
传递变量终于成功。与大家一起分享。
fast
report
做
报表
画线,做表,和
word
一样的方便,在这个
报表
中
,精确地画了个表,在这里顺便赞一个。
Fast
Report
(解决
中
文乱码) v4.7.22 (完整源码)
Fast
Report
是非常强大的
报表
控件,它能使用户的应用程序快速有效地产生
报表
。
Fast
Report
提供了创建
报表
所需的所有工具,包括
报表
引擎,
报表
设计工具,预览器,对话框设计工具,以及Pascal-like 宏解释程序。 特点: 无需附加的动态链接库(DLL)就可提供快速、紧致、灵活的代码。 运行时可使用内建的功能强大且易于使用的设计工具。 带有"文本搜索"和"编辑"功能的MS
Word
-like
报表
预览。 常用的组件集:文本,线,图片,形状,对象链接和嵌入(OLE), RichText, 图表,Barcode。 可以创建自己的组件。 将
报表
输出
为其它格式(例如:TXT, RTF, CSV, HTML, PDF 等等)。 内建的Pascal-like宏语言使得用户无需在Delphi环境
中
就可以写出代码。它可以创建出使用其它工具所不能创建的
报表
。
Fast
Report
包含了对话框表格。在准备创建
报表
前,用户可以使用这一表格来修改参数,而且可以不受限制地使用它。
Fast
Report
使用同一个设计工具来创建对话框,这一设计工具带有对话框控件的标准集:按钮,编辑框,复选框等等。
Fast
Report
提供了多样的数据库引擎,它允许用户在运行时创建表格,查询程序及数据库组件。用户的
报表
和应用程序是完全独立的。
Fast
Report
可以从各种数据源的表格、查询程序、数组及数据文件
中
导入数据。
Fast
Report
并不依赖于Borland公司的数据库引擎(BDE)。只要是基于标准Tdataset组件的数据库,都能使用
Fast
Report
。
Fast
Report
也可在IB_Objects下工作。IB_Objects是用于Interbase数据库管理系统(DBMS)的功能强大且使用广泛的库。 在
Fast
Report
中
可使用22语言,这就使得用户的应用程序更易于国际化。
Fast
Report
问题集
Fast
Report
问题集 Q: 我怎样添加我的自定义函数? A: 使用 Tfr
Report
.OnUserFunction 事件. 这里有一个简单的例子: procedure TForm1.fr
Report
1UserFunction(const Name: String; p1, p2, p3: Variant; var val: Variant); begin if AnsiCompareText(‘SUMTOSTR‘, Name) = 0 then val := My_Convertion_Routine(frParser.Calc(p1)); end; 然后,你就可以在
报表
(任何表达式或脚本)的任何地方使用 SumToStr 函数了。 Q: 但是它仅仅能工作在一个Tfr
Report
组件
中
。可我想在任何地方(在所有的Tfr
Report
组件
中
)使用的我的自定义函数? A: 使 OnUserFunction event 句柄作为所有组件的公用句柄。如果你不能做到这一点,你需要创建函数库: type TMyFunctionLibrary = class(TfrFunctionLibrary) public constructor Create; override; procedure DoFunction(Fno: Integer; p1, p2, p3: Variant; var val: Variant); override; end; constructor TMyFunctionLibrary.Create; begin inherited Create; with List do begin Add(‘DATETOSTR‘); Add(‘SUMTOSTR‘); end; end; procedure TMyFunctionLibrary.DoFunction(Fno: Integer; p1, p2, p3: Variant; var val: Variant); begin val := 0; case Fno of 0: val := My_DateConvertion_Routine(frParser.Calc(p1)); 1: val := My_SumConvertion_Routine(frParser.Calc(p1)); end; end; 要注册函数库,调用 frRegisterFunctionLibrary(TMyFunctionLibrary); 要卸载函数库,调用 frUnRegisterFunctionLibrary(TMyFunctionLibrary); Q: 我怎样将我的函数添加到函数列表
中
(用表达式生成器)? A: 使用 frAddFunctionDesc 过程 (在FR_Class 单元
中
): frAddFunctionDesc(FuncLib, ‘SUMTOSTR‘, ‘My functions‘, ‘SUMTOSTR(
)/Converts number to its verbal presentation.‘); 注意: "/" 符号是必须的! 它从它的描述
中
分隔函数语法。 FuncLib 被声明为你自己的函数库 (如果你不使用函数库可以将其设置为nil). 当函数库未注册时,所有它的函数将自动从函数列表
中
删除。 ---------------- 使用变量 ------------------------------------- Q: 我怎样编程实现填充变量列表(在数据词典
中
)? A: 数据词典
中
的所有变量及分类都被存储在 Tfr
Report
.Dictionary.Variables
中
. with fr
Report
1.Dictionary do begin // 创建分类(名称用空白) Variables[‘ New category‘] := ‘‘; // 创建变量 Variables[‘New Variable‘] := ‘CustomerData.Customers."CustNo"‘; Variables[‘Another Variable‘] := ‘Page#‘; end; Q: 我定义了字符串变量: with fr
Report
1.Dictionary do Variables[‘Month‘] := ‘March‘; 但是当我运行
报表
是,出现了错误,为什么? A: 因为
Fast
Report
假定数据词典
中
的字符串变量值是一个表达式,它需要分析、计算它。 可以使用其它的方法: with fr
Report
1.Dictionary do Variables[‘Month‘] := ‘‘‘‘ + ‘March‘ + ‘‘‘‘; 或者, 使用 frVariables 来传输固定数据到
报表
。 Q: 我不想在数据词典
中
显示某些数据集? A: 使用 Tfr
Report
.Dictionary.DisabledDatasets: with fr
Report
1.Dictionary do begin // 关闭该数据集 DisabledDatasets.Add(‘CustomerData.Bio‘); // 或者, 关闭整个数据模块/窗体 DisabledDatasets.Add(‘CustomerData*‘); end; Q: 我怎样将数据传送到
报表
? A: 有几个方法可以实现它. 第一是使用全局对象 frVariables (在 FR_Class 单元
中
被定义): frVariables[‘My variable‘] := 10; 这段代码创建了一个名称为“My variable”,值为 10 的变量。这是最好的传输固定数据的
报表
的方法。 第二种方法是使用 Tfr
Report
.OnGetValue 事件. 这可以使用这个方法来传送动态数据、记录等。 procedure TForm1.fr
Report
1GetValue(ParName: String; var ParValue: Variant); begin if ParName = ‘MyField‘ then ParValue := Table1MyField.Value; end; 最后, 第三种方法是通过编程在数据词典
中
定义变量(可以参考以前的问题): with fr
Report
1.Dictionary do begin Variables[‘MyVariable‘] := ‘CustomerData.Customers."CustNo"‘; Variables[‘Another Variable‘] := ‘10‘; end; Q: 我能在
报表
和程序间传送数据吗? A: 使用 frVariables 对象. 如果你在
报表
的任何对象的脚本
中
写入以下代码: MyVariable := 10 那么,在你的程序
中
,你可以使用以下代码来获取 MyVariable 的值: v := frVariables[‘MyVariable‘]; ---------------- 脚本 (
Fast
Report
Pascal) --------------------------------- Q: Band
中
是否可以使用脚本? A: 当然. 选择 band ,然后按 Ctrl+Enter 或在对象浏览器
中
选择 "OnBeforePrint" 属性。 Q:
报表
页
中
是否可以使用脚本? A: 当然. 选择页 (在空白处单击) ,然后在对象浏览器
中
选择 "OnBeforePrint" 属性。如果该页是一个对话框窗体,那么这个属性就是 "OnActivate". Q: 我有两个对象: Memo1 和 Memo2. 我能否在 Memo1 的脚本
中
调用 Memo2 的属性和方法? A: 当然, 例如,你可以这样做: 对象名.属性名. Q: 在脚本
中
,我可以使用对象的哪些属性? A: 几乎所有你能在对象浏览器
中
看到的属性。例如,可以使用 Font.Name, Font.Size等来存取字体属性。 ---------------- 其它问题 -------------------------------------------- Q: 怎样改变多页
报表
中
某一页的顺序? A: 拖动页标签到目的位置。 Q: 我想查看所有的字段及变量,我想在
报表
中
使用列表来实现它? A: 设置 Tfr
Report
.MixVariablesAndDBFields := True.现在,所有的数据字段及变量可在“插入数据字段”对话框
中
可存取了。 Q: 我不想显示导入选项对话框? A: 在导入组件(比如,TfrTextExport)
中
设置所有必需的选项,然后通过设置ShowDialog属性为False来关闭此对话框。 Q: 为什么 TotalPages 变量不起作用? 它总是返回 0. A: 在你的
报表
中
设置 Two-pass 选项. 要设置它,你需要在
报表
设计器的“文件”菜单
中
,打开“
报表
选项”对话框。 Q: 我用BLOB字段来存储我的
报表
。当我运行
报表
设计器时,它显示我的
报表
未命名? A: 在运行
报表
设计器前,这样做: fr
Report
1.FileName := ‘Name of my
report
‘; Q: 我想在重新定义
报表
设计器
中
的“打开”及“保存”按钮的功能? A: 查看 TfrDesigner 组件. 它有几个必需的事件: OnLoad
Report
和 OnSave
Report
. 这里有一小段代码例子: procedure TForm1.frDesigner1Load
Report
(
Report
: Tfr
Report
; var
Report
Name: String; var Opened: Boolean); begin with MyOpenDialog do begin Opened := ShowModal = mrOk; if Opened then begin
Report
.LoadFromBlobField(…);
Report
Name := …; end; end; end; procedure TForm1.frDesigner1Save
Report
(
Report
: Tfr
Report
; var
Report
Name: String; SaveAs: Boolean; var Saved: Boolean); begin if SaveAs then with MySaveDialog do begin Saved := ShowModal = mrOk; if Saved then begin
Report
.SaveToBlobField(…);
Report
Name := …; end; end else
Report
.SaveToBlobField(…); end; Q: 在 QR
中
, 我可以写这样的代码: QRLabel1.Caption := ‘Some text‘. 我可以用FR这样做吗? A: FR 对象并不是一个组件 (这并不像 QR, RB). 但使用 Tfr
Report
.FindObject 方法可以通过对象名称找到该对象。 var t: TfrMemoView; begin t := TfrMemoView(fr
Report
1.FindObject(‘Memo1‘)); if t <> nil then t.Memo.Text := ‘
Fast
Report
‘; end; Q: 我想在用户预览(TfrPreview组件)
中
自定义热键? A: 这个组件有个窗口: Tform 属性. 将自定义句柄指定到 Window.OnKeyDown 属性. Q:
Fast
Report
2.4 不能装载 Free
Report
2.21 文件? A: 这仅需要使用16进制数改变
报表
文件的第一字节,然后在源代码
中
修改下面的部分。在这些修改之后, 装载
报表
并保存它. 最后,返回到源代码处. FR_Class: function ReadString(Stream: Tstream): String; begin { if frVersion >= 23 then} Result := frReadString(Stream) {else Result := frReadString22(Stream);} end; procedure ReadMemo(Stream: Tstream; Memo: Tstrings); begin { if frVersion >= 23 then} frReadMemo(Stream, Memo){ else frReadMemo22(Stream, Memo);} end; FR_Utils: procedure frReadMemo(Stream: Tstream; l: Tstrings); var s: String; b: Byte; n:
Word
; begin l.Clear; l.Text := frReadString(Stream); exit; Stream.Read(n, 2); if n > 0 then repeat Stream.Read(n, 2); SetLength(s, n); Stream.Read(s[1], n); l.Add(s); Stream.Read(b, 1); until b = 0 else Stream.Read(b, 1); end; function frReadString(Stream: Tstream): String; var s: String; n: Integer; b: Byte; begin Stream.Read(n, 4); SetLength(s, n); Stream.Read(s[1], n); if (n > 0) and (s[n] = #$0A) then SetLength(s, n - 2); // Stream.Read(b, 1); Result := s; end; Q: 怎样不在打印预览
中
打印
报表
? A: 这里有一段代码: fr
Report
1.Prepare
Report
; fr
Report
1.PrintPrepared
Report
(‘‘, 1, True, frAll); 或 fr
Report
1.PrintPrepared
Report
Dlg; Q: 我想在
报表
中
旋转图片。问题是这张图片是由我的应用程序生成的。是否有方法可以在打印前将这幅图片装载到
报表
中
? A: 使用 Tfr
Report
.OnBeforePrint 事件: if View.Name = ‘Picture1‘ then TfrPictureView(View).Picture.LoadFromFile(…) 或 .Assign 或 .你所想要做的任何事情
Fast
Report
中
文开发指南
关于
Fast
Report
的说明
Fast
Report
是高弹性的
报表
设计器,用于
报表
的数据可以从任何类型的数据源获取,包含字符列表,BDE数据库,ADO数据源(不使用BDE),Interbase(使用IBO),Pascal数组和记录,以及一些不常用的数据源。 整个
Fast
Report
系统是用Delphi的Pascal编写的。
Fast
Report
不需要动态链接库,但需在你的项目
中
占用大约400kb(Delphi 5)。如果你想最终用户拥有设计能力,这将在你的.EXE
中
增加大约500kb。虽然这看上去比较大,但这只是其它设计的几分之一。你同样应该考虑到
Fast
Report
不仅仅只是包含最终用户更改
报表
设计的能力,还能够适应查询和数据库的变化。
Fast
Report
还包含自己的脚本语言,让应用程序和最终用户能够更容易地改变
报表
。如果你的大部分应用使用
Fast
Report
,你可以简单地配置
Fast
Report
BPL(大约1400kb)而所有你的应用程序只需要保留很少的一部分。 你可以发现
Fast
Report
有一个非常吸引人的用户界面,使用最新的用户界面组件,例如可停靠的工具栏。你的最终用户将会非常愿意使用这个设计器,只需使用鼠标就可以创建大多数
报表
。
Fast
Report
是名副其实的快速
报表
:较其它一些Delphi
报表
设计器而言,你可以发现没有什么可以接近于它的开发速度。
报表
预览窗口一直是大多数
报表
设计器的弱点,高品质的外观,赋于你的应用程序非常专业的用户界面。
Fast
Report
是一个已经拥有三年历史的非常成熟的
报表
设计器,成长使它拥有其它Delphi
报表
设计器所不能相比的诸多先进特性。
Fast
Report
的历史
Fast
Report
应运而生。当我在1997年开发一个工资系统时,我寻找周围的
报表
设计器能够让我非常简单地创建
报表
,而且能够在运行时编辑
报表
。可是,那时没有一个免费组件是我所需要的。这样,我就想创建自己的
报表
设计器,于是
Fast
Report
诞生了。
Fast
Report
的基本思想来源于Windows版的“1S-Bookkeeping”6.0,因此
报表
的基本元素是包含多行文本的矩形。这些文本既包含标准文本又包含变量。变量,像数据字段,用方括号突出显示。
报表
生成器的第一个版本仅支持一个区域,但它允许创建多层
报表
。它还不是一个组件,只是一些单元的集合。 后来,在1998年,
报表
生成器变成一个完整的Delphi组件。在这时,它命名为“
Fast
Report
”,并提供增强的函数功能。现在,
Fast
Report
是一个完整的,产品化的可视化
报表
生成器。它包含以下的特点: l 构建
报表
的生成器,也可以在运行时使用(重要的是用于最终用户
报表
的更改!)。 l 类似于MS
Word
的打印预览。 l 直接编译在Delphi EXE
中
,不需要动态链接库。 l 支持JPEG(使用Delphi类库)和GIF(使用RX类库)。 l 拥有比Quick
Report
1执行更快速的性能。 l 简洁,纯Delphi代码,比QR3有更小的设计器。 l 类似Quick
Report
和
Report
Build的强大的区域导向
报表
生成器。 l 包含许多非常有用的组件:文本,线段,图像,图形,OLE对象,格式文本,RX Rich2.0,图表,图表,条形码,带阴影的文本。 l
报表
生成的页数无限制。 l 多页
报表
;复合
报表
;子
报表
;分组;多栏
报表
;主从
报表
;透视表;二次表; l 打印过程全控制;支持所有纸张尺寸; l TXT,RTF(用于图形),CSV,HTML(用于图像)
输出
转换器。 l 在
报表
预览
中
查找文本。 l 附加的TfrDataStorage组件允许在运行时创建数据表和查询。这对于需要完全控制报告过程的最终用户
报表
特别有用。 l
报表
生成的页面可以被修改。 l 内置的Pascal解释器可用于非常灵活的报告!语法加亮的支持是使用一个免费的软件库。 l
报表
数据可以保存于Delphi的DFM文件,外部文件,数据表的BLOB字段或数据流。 l
Fast
Report
可以非常容易地用于创建你自己的
报表
组件,向导和函数类库。 l
报表
的核心部分支持IBObject(不需要BDE)。 l 支持Interbase表达式(IBX). l
报表
核心支持ActiveX Data Object(ADO)。 l 完善的数据管理函数(不需要BDE)。
Fast
Report
v4.13 CS Demo Delphi
Fast
Report
VCL工作在Borland Delphi 2-7及Borland C++Builder 1-6环境下。它是用对象语言Pascal来写的,并用到了Borland VCL库。 特征: 无需附加的动态链接库(DLL)就可提供快速、紧致、灵活的代码。 运行时可使用内建的功能强大且易于使用的设计工具。 带有"文本搜索"和"编辑"功能的MS
Word
-like
报表
预览。 常用的组件集:文本,线,图片,形状,对象链接和嵌入(OLE), RichText, 图表,Barcode。 可以创建自己的组件。 将
报表
输出
为其它格式(例如:TXT, RTF, CSV, HTML, PDF 等等)。 内建的Pascal-like宏语言使得用户无需在Delphi环境
中
就可以写出代码。它可以创建出使用其它工具所不能创建的
报表
。
Fast
Report
包含了对话框表格。在准备创建
报表
前,用户可以使用这一表格来修改参数,而且可以不受限制地使用它。
Fast
Report
使用同一个设计工具来创建对话框,这一设计工具带有对话框控件的标准集:按钮,编辑框,复选框等等。
Fast
Report
提供了多样的数据库引擎,它允许用户在运行时创建表格,查询程序及数据库组件。用户的
报表
和应用程序是完全独立的。
Fast
Report
可以从各种数据源的表格、查询程序、数组及数据文件
中
导入数据。
Fast
Report
并不依赖于Borland公司的数据库引擎(BDE)。只要是基于标准Tdataset组件的数据库,都能使用
Fast
Report
。
Fast
Report
也可在IB_Objects下工作。IB_Objects是用于Interbase数据库管理系统(DBMS)的功能强大且使用广泛的库。 在
Fast
Report
中
可使用22语言,这就使得用户的应用程序更易于国际化。
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章