社区
C++ Builder
帖子详情
急!fastreport打印和预览报表,要详细
china_west
2010-07-22 01:09:59
问题如题目
fastreport打印和预览报表,第一次接触fastreport,用tms5.1写好了报表,现在要用fastreport去实现报表的打印功能,一个都不会啊,急!
加我qq821286850
...全文
122
16
打赏
收藏
急!fastreport打印和预览报表,要详细
问题如题目 fastreport打印和预览报表,第一次接触fastreport,用tms5.1写好了报表,现在要用fastreport去实现报表的打印功能,一个都不会啊,急! 加我qq821286850
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
comablack
2010-07-27
打赏
举报
回复
你将控件TfrPrintTable添加到窗体中,这个控件可以实现直接打印和查询的内容。
xugang19821113
2010-07-27
打赏
举报
回复
frReport的使用
page header 是用来显示报表的头,不可少的
Group header分组显示的头,显示组织构架
Master data显示这一种组织架构的数据
Group footer 分组显示的尾,比喻上面那种组织架构的小计
Master footer 对所有数据全部汇总。总和
page footer 是用来显示报表的尾,不可少的
frxrprt1->PrepareReport(true);
frxrprt1->Print() ;
这两句是放在打印按钮里的。
china_west
2010-07-27
打赏
举报
回复
嗯
china_west
2010-07-27
打赏
举报
回复
好的
我在看bobo给我的fastreport开发指南,
zzbinfo
2010-07-26
打赏
举报
回复
中文资料都给你了还要人教,仔细看看应该没有什么问题了吧
china_west
2010-07-26
打赏
举报
回复
有没有朋友教我用啊
china_west
2010-07-23
打赏
举报
回复
[Quote=引用 9 楼 comablack 的回复:]
我也好想知道啊!现在刚起步,学起来好难啊!
[/Quote]
ls一起加油,加我qq不
comablack
2010-07-23
打赏
举报
回复
我也好想知道啊!现在刚起步,学起来好难啊!
china_west
2010-07-22
打赏
举报
回复
[Quote=引用 7 楼 cppfile 的回复:]
有这功夫看看帮助不就好了吗?
[/Quote]
几天过去了,一点进展都没有,没有看懂那些代码
你能有例子吗
CppFile
2010-07-22
打赏
举报
回复
有这功夫看看帮助不就好了吗?
china_west
2010-07-22
打赏
举报
回复
[Quote=引用 4 楼 cppfile 的回复:]
frxrprt1->PrepareReport(true);
frxrprt1->Print() ;
[/Quote]
能不能详细一点一点啊,因为我没有用过,找了很多网页都不能具体到实现
加我qq吧821286850
zzbinfo
2010-07-22
打赏
举报
回复
中文开发指南
CppFile
2010-07-22
打赏
举报
回复
frxrprt1->PrepareReport(true);
frxrprt1->Print() ;
hnzlk
2010-07-22
打赏
举报
回复
只有2.4的文档
china_west
2010-07-22
打赏
举报
回复
有没有大侠前来啊
china_west
2010-07-22
打赏
举报
回复
fastreport2.53
fast
report
asp.net
打印
预览
fast
report
asp.net
报表
直接
打印
预览
Delphi7自定义
Fast
Report
4
报表
的
预览
窗体.rar
这个自定义的Delphi
报表
预览
窗体是为了实现套打功能而弄的,
预览
时先调用这个自定义的,实际
打印
时再调用默认的。这需要2个frx
Report
,其中一个的Preview属性需设为自定义的这个,另一个默认就行,然后在自定义那个的PrintBClick事件中再回调另一个就行了。 直接改
fast
report
的源代码也行,但只能用于某个程序,当编译别的程序时再改回去?我觉得还是自定义吧。 该自定义
预览
窗体是根据适用于Delphi的控件
fast
report
4.9.32源代码改成的,基本是原来的代码。源码中并不是所有功能都实现了,比如导出功能未完成。自定义
预览
窗体使用说明: 在项目中新建一个窗体,name命名为Form6,然后选择“全部保存”,保存单元文件为MyPreview。然后: 1、将MyPreview.pas中的所有内容复制到你项目的MyPreview单元中,代替原来的内容。 2、将你项目中的Form6窗体换为“以文本方式查看”,将PreviewForm.txt中的全部内容复制覆盖原来的内容。 大功告成。这时你要是看着Form6这个名字不顺眼,可以将该窗体name改为其它任何名字,MyPreview代码中所有Form6应该会改为你想要的名字,如果不能,手动改吧。
Fast
Report
.net 中文
详细
教程及Demo
这个指南让你熟悉
报表
设计器和了解
报表
设计的基本概念(各种区域,数据源,二次表,等等)。指南将帮助你开始用
Fast
Report
创建
报表
,但它不能告诉你怎样使用其它基本的
报表
设计器。 如果你不熟悉
报表
设计器,我们建议你参考Quick
Report
的帮助系统。Quick
Report
的指南已经包含在你的Delphi拷贝中。Quick
Report
的大部分基本概念也适用于
Fast
Report
,然而,
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
快速
报表
系统4用户使用手册
第一章 设计 7 1.1、控制键 8 1.2、鼠标操作 9 1.3、工具栏 10 1.3.1、设计模式工具栏 10 1.3.2、“标准”工具栏 10 1.3.3、“文本”工具栏 11 1.3.4、“边框”工具栏 12 1.3.5、“对齐”工具栏 12 1.4、设计选项 13 1.5、
报表
设置 15 1.6 页面设置 16 第二章 创建
报表
19 2.1、
报表
对象 20 2.2、“世界,你好!”
报表
示例 20 2.3、“Text”组件 21 2.4、在“Text”组件中使用HTML标记 23 2.5、通过“Text”组件显示公式 24 2.6、
Fast
Report
中的Bands 25 2.7、Data Band 26 2.8、TfrxDBDataSet组件 27 2.9、“客户列表”
报表
27 2.10、通过text组件显示数据表字段 29 2.11别名 30 2.12、变量。 30 2.13、“Picture”控件 32 2.14、图形
报表
33 2.15、多行文本显示 34 2.16、文本拆分 36 2.17、组件的Wrap 37 2.18、显示数据表中的数据 38 2.19、标签式
打印
40 2.20、子bands 42 2.21、组件的移动 43 2.22、两个数据阶的
报表
(主—细) 43 2.23、页首和页尾数据Band 46 2.24、多页
报表
47 第三章 分组集合体 50 3.1、分组
打印
51 3.2、其他分组特性 53 3.3页码的重设 55 3.4、组的操作 55 3.5、行数 56 3.6、函数集 57 3.7、页和
报表
的统计 60 3.8、插入汇总函数 61 第四章 格式化、加强 62 4.1、格式化输出结果 63 4.2、内嵌格式化 63 4.3、条件显示 65 4.4、分行显示数据行的颜色 66 第五章 嵌套
报表
68 5.1嵌套
报表
69 5.2、设计子
报表
69 5.3、子
报表
中的限制 69 5.4、PrintOnParent选项 70 第六章 脚本 72 6.1、体验脚本语言 73 6.2、脚本结构 76 6.3、“世界你好!”脚本 78 6.4、脚本中组件对象的使用 79 6.5、调用
报表
变量列表中的变量。 79 6.6、调用数据表子段 80 6.7、脚本中调用汇总函数 80 6.8、
报表
中变量值的显示 80 6.9、事件 81 6.10、一个使用“OnBeforePrint”事件的例子 82 6.11、在组头
打印
组的汇总信息 84 6.12、“OnAfterData”事件 88 6.13、Service组件 89 6.13.1、
Report
组件 89 6.13.2、Engine组件 90 6.13.3、“OutLine”组件 91 6.13.4、引擎组件的使用 91 6.15 Anchors 94 6.16 “Outline” 组件的使用方法 96 6.17 “OnManualBuild” 页面事件 98 6.18 脚本中的组件的建立 104 第七章 交叉
报表
106 7.1、创建交叉
报表
108 7.2、改变显示 110 7.3、使用函数 112 7.4、对结果进行排序 112 7.5、组合标题的表格 113 7.6、调整单元格的宽度 115 7.7、字体颜色和突出显示 117 7.8、使用脚本语言管理组件 118 7.9、调整行和列的大小 123 7.10、手动填充表格单元 124 7.11、在表格单元中加入其他组件 126 7.12、一些有用的设置 129 第八章 制图表 132 8.1、chart数据中数字的限制 137 8.2、设置 137 8.3、指定数字制表 138 8.4、利用脚本进行制表 139 8.5、在delphi环境中创建的
报表
的
打印
139 第九章 点阵
报表
140 9.1、点阵
报表
使用交叉
报表
144 9.2、点阵
报表
的
打印
145 9.3、命令组件 146 第十章 对话框窗体 147 10.1、控件 148 10.2、“世界你好!”
报表
149 10.3、输入参数,并传递到
报表
中 150 10.4、组件的交互 150 10.5、多个对话框表单 151 10.6、对话框窗体的管理 152 第十一章 数据访问组件 155 11.1、组件的描述 156 11.1.1、TfrxDBLookupCombobox组件 157 11.1.2、TfrxADOTable组件 157 11.1.3、TfrxAdoQuery组件 159 11.1.4、TfrxADODatabase组件 161 11.2、创建
报表
161 11.3、简单的列表式
报表
162 11.4、参数查询
报表
163 11.5、其他可用配置 164 第十二章
报表
的继承性 166 12.1、创建
报表
167 1
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 或 .你所想要做的任何事情
C++ Builder
13,826
社区成员
102,678
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章