盒子资源分类
FastReport 封装 ActiveX 支持 Web调用
关键字:FastReport,ActiveX,Web打印
来 自:原创
平 台:Win2K/2003/NT/XP
下载所需:0 火柴
深浅度:中级
完成时间:2012/12/4
发布者:yihuas (奖励50火柴 )
发布时间:2012/12/4
编辑器:Delphi7
语 种:简体中文
分 类:数据库
下载浏览:886/18670
最近因项目需要。将FastReport3.0 封装成 ActiveX 来支持web打印 使用说明(可以参考 test.htm 测试页面 注意测试时将 test.fr3文件复制到 c:\ 或者自己修改 test.htm) 注册 regsvr32 FastReportObject.ocx 在web里面引用 FastReportObject 这个 ActiveX组件 首先设置 数据集 SetMasterData 如果数据集是 Delphi 的 TClientDataSet 导出的 XmlData 第一个参数为空不用设置 直接设第二个参数就可以了, 如果是.Net的数据集,第一个参数输入数据集的结构信息,第二个参数用来输入数据集的内容.内部会自动转换成 Delphi 的 XmlData 也意味着 这个组件需要 midas.dll 运行 完成后 执行 FastPrint 就可以了。 FastPrint 需要一个报表文件的参数,支持本地文件及URL路径. 注意:这里做 http 部署的要注意一下 FastReport 的报表文件 .fr3 格式不支持下载。需要在 IIS的 mime 里面增加 .fr3扩展名 否则组件将不能正确的下载到服务端的报表文件.
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们 !
相关文章
相关评论
共有评论29条
当前显示最后6条评论
cwg1027
2013/1/2 18:38:23
修改 SimpleXmlUnt.pas 文件后,一切正常,谢谢!
linkyang
2013/1/5 11:38:39
yihuas 4 帮忙解决下,我这里打印出现乱码,打开设计页面的数据集也是乱码,帮忙指点下 我用的是fastreport 4.21 版本
yihuas
2013/1/5 15:18:33
我那个测试的东西是 fastreport 3.0做的报表文件,会不会版本不一致导致报表文档不兼容啊.我也没有用过 fastreport 4.0 所以没法解答,下面贴一个生成报表工具的代码. ---------- program designrpt; uses forms, classes, Sysutils, registry, frxClass, frxDCtrl, frxRich, frxBarcode, frxDBSet, frxChart, frxOle, frxExportPDF, frxExportImage, frxExportRTF, frxExportXLS, frxExportHTML, frxGradient, frxChBox, frxDMPExport, frxCross, frxDesgn; {$R *.RES} //********** // 关联 FastReport 报表文件 //********** procedure RegFilefilter; begin with tregistry.create do try RootKey:=$80000000; openkey('.fr3',true); writestring(','FRFiles'); closekey; //---------- openkey('FRFiles',true); writestring(','FastReport Files'); openkey('Defaulticon',true); writestring(',application.exename); closekey; //---------- openkey('FRFiles\shell\open\command',true); writestring(',application.exename+' "%1"'); finally closekey; free; end; end; //********** // 创建DataSet //********** procedure InitialDataSet; var i:Integer; sFileName:String; TmpList:TStringList; begin try TmpList:=TStringList.Create; sFileName:=ChangeFileExt(Application.ExeName,'.txt'); if fileexists(sFileName) then TmpList.LoadFromFile(sFileName); if TmpList.Count=0 then begin TmpList.add('userdata'); TmpList.add('masterdata'); TmpList.Savetofile(sFileName); end; for i:=1 to TmpList.Count do TfrxdbDataSet.create(Application).Name:=TmpList.Strings[i-1]; finally freeandnil(TmpList); end; end; //********** // 主程序 //********** begin Application.Initialize; with TfrxReport.create(Application) do try RegFilefilter; InitialDataSet; if ParamCount>0 then LoadFromFile(ParamStr(1)); DesignReport; finally free; end; Application.run; end.
yihuas
2014/1/7 10:41:14
最近又翻出来改了一下,可以让打印窗体内置在控件上了. ---------- 首先要引用下面的单元 unit frxReportExUnt; interface uses forms,classes,ExtCtrls, frxClass,fs_iinterpreter, frxProgress,frxVariables; type TfrxReportX=class(TfrxComponent) public FCurObject: String; FDataSet: TfrxDataSet; FDataSetName: String; FDataSets: TfrxReportDatasets; FDesigner: TfrxCustomDesigner; FDotMatrixReport: Boolean; FDrawText: Pointer; FEnabledDataSets: TfrxReportDataSets; FEngine: TfrxCustomEngine; FEngineOptions: TfrxEngineOptions; FErrors: TStrings; FExpressionCache: TfrxExpressionCache; FFileName: String; FIniFile: String; FLoadStream: TStream; FLocalValue: TfsCustomVariable; FModified: Boolean; FOldStyleProgress: Boolean; FPreviewPages: TfrxCustomPreviewPages; FParentForm: TForm; FPreview: TfrxCustomPreview; FPreviewForm: TForm; FPreviewOptions: TfrxPreviewOptions; FPrintOptions: TfrxPrintOptions; FProgress: TfrxProgress; FReloading: Boolean; FReportOptions: TfrxReportOptions; FScript: TfsScript; FScriptLanguage: String; FScriptText: TStrings; FShowProgress: Boolean; FStoreInDFM: Boolean; FStyles: TfrxStyles; FSysVariables: TStrings; FTerminated: Boolean; FTimer: TTimer; FVariables: TfrxVariables; FVersion: String; FXMLSerializer: TObject; end; implementation end. ---------- 将下面的代码添加到 frxReport 控件的 OnPreview 事件内 var TmpPreview:TForm; begin TmpPreview:=TfrxReportX(frxReport).FPreviewForm; if assigned(TmpPreview) then begin TfrxPreviewForm(TmpPreview).CancelB.Visible:=False; TmpPreview.Parent:=self; TmpPreview.Align:=alClient; TmpPreview.BorderStyle:=bsNone; end; ---------- 重新编译完成就可以了,页面引用的时候控件的宽高需要用html样式去控制. <body style="text-align:center; "> <div style="width: 96%; height: 95%; margin: 0; padding: 0;"id="DivControl"> <object classid="clsid:88F986A8-1322-47DE-BF7D-04F7F877CA92" id="FastReportX" style="width: 100%; height: 100%; margin: 0; padding: 0;"> </Object> </div> </body>
cwg1027
2014/1/27 22:13:15
增加了一个数据源(2个数据源),但没有成功。请教yihuas需要修改那几个文件的那几个地方,先谢了!
cwg1027
2014/1/29 22:30:11
今天有点时间再次进行测试,成功!分析一下,都是自己不细心缘故。 但还是要感谢yihuas无私奉献!
我要发表评论
查看全部评论