捐赠 | 广告 | 注册 | 发布 | 上传 | 关于我们    
  粤ICP备10103342号-1 DELPHI盒子 | 盒子文章 | 盒子问答悬赏 | 最新更新 | 盒子检索 | 下载中心 | 高级搜索    
  精品专区 | 繁體中文 | 奖励公告栏 | 直通车账号登陆 | 关闭GOOGLE广告 | 临时留言    
盒子资源分类
全部展开 - 全部合拢
FastReport 封装 ActiveX 支持 Web调用
关键字:FastReport,ActiveX,Web打印
来 自:原创
平 台:Win2K/2003/NT/XP 下载所需:0 火柴
深浅度:中级 完成时间:2012/12/4
发布者:yihuas (奖励50火柴) 发布时间:2012/12/4
编辑器:Delphi7 语  种:简体中文
分 类:数据库 下载浏览:886/18670
加入到我的收藏
下载错误报错
登陆以后才能下载
 用户名:
 密 码:
自动登陆(30天有效)
图片如果打不开,说明流量不够了,请稍候下载……
最近因项目需要。将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扩展名 否则组件将不能正确的下载到服务端的报表文件.
Google
 
本站原创作品,未经作者许可,严禁任何方式转载;转载作品,如果侵犯了您的权益,请联系我们
龙脉加密锁 15元起 Grid++Report 报表 申请支付@网
 相关文章
没有相关文章
相关评论
共有评论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无私奉献!
我要发表评论 查看全部评论
 
  DELPHI盒子版权所有 技术支持:深圳市麟瑞科技有限公司 1999-2024 V4.01 粤ICP备10103342号-1 更新RSS列表