关键字:

常见问题

更多>>

最受欢迎的文章

更多>>

最新文章

更多>>

文章存档

  • 2012年06月(6)
  • 2012年07月(83)
  • 2012年08月(62)
  • 2012年09月(30)
  • 2012年10月(8)
  • 2012年11月(11)
  • 2012年12月(9)
  • 2013年01月(7)
  • 2013年02月(1)
  • 2013年03月(1)
  • 2013年04月(1)
  • 2013年05月(2)
  • 2013年06月(1)
  • 2013年07月(2)
  • 2013年08月(4)
  • 2013年09月(4)
  • 2013年10月(3)
  • 2013年11月(2)
  • 2013年12月(1)
  • 2014年01月(1)
  • 2014年03月(1)
  • 2015年06月(2)
  • 2015年10月(1)
  • 2015年11月(9)
  • 2015年12月(2)
  • 2016年02月(1)
  • 2016年04月(1)
  • 2016年05月(16)
  • 2016年07月(4)

热门Tag标签

FastReport.Net v2016.6 FastScript安装 安装 VCL mvc FastReport.Net 报表 FastReport.Net v2016.2 TeeChart,图表开发 FastReport FMX 2.3 FastReport.Net v2016.1 FastReport.Net更新 FastCube VCL v2.5 FastReport VCL FastReport Online Designer教程 FastReport Online Designer组件 FastReport在线报表设计器:组件简介 FastReport在线报表设计器:界面结构简介 FastReport在线报表设计器:工作原理 FastReport Online Designer简介 FastReport Online Designer促销 FastReport Online Designer FastReport.Net授权促销 数据库查询构建 使用技巧 fastreport,报表 脚本引擎 FastScript FastScript, 脚本引擎  OLAP控件 

如何扩展FastReport函数

作者:zhuhm    来源:本站原创    浏览:Loading...      日期:2012-10-16

FastReport生成器是开放的,意味着你可以通过自己的函数库、新的可视控件、输出文件格式和向导来扩展它。这部分包括了进行这种扩展的方法。

设计你自己的预览窗口

有时需要用你自己的预览窗口来替换标准的。这个方法能被用于当在输出前运行附加的函数(例如插入打印数据到数据表中)或去除预览窗口中不需要的部分。

FastReport允许开发者用任何方法开发自己的预览窗口。FastReport控件面板上中的TfrPreview控件就是为了达到这个目的。这个控件的主要功能有:

l First, Prev, Next, Last -在报表中进行导航:首页、上页、下页、末页;

l SaveToFile-保存已生成的报表到任何支持的文件格式中;

l LoadFromFile-从*.FRP格式的文件中调入已生成的报表;

l Print-打印已生成的报表;

l OnePage-设置预览的比例为一页大小;

l PageWidth-设置预览的页面宽度。

除了上面可用的功能外,TfrPreview还有一个Zoom属性用于设置缩放显示。这个缩放显示可以按原始尺寸的比例进行缩放。TfrPreview控件还将显示滚动条和用于显示在文档中的当前页和总页数的状态栏。

要替换标准预览窗口到FastReport报表生成器,TfrReport控件的预览属性必须相应地改变为这个窗口。你可以从FastReport“Examples”目录中的“Report”子目录中找到使用自定义预览窗口的例子。

扩展函数列表

这个手册很早就描述了怎样扩展FastReport的函数功能。这个方法是基于TfrReport控件的OnUserFunction事件。这个方法的缺点是:所有的TfrReport对象的自定义函数都必须放在同一个OnUserFunction事件处理中(也就是自定义函数都必须到TfrReport中去找)。作为选择,你也可以将一系列的函数放到一个单独的类库中(函数类库)。

FastReport支持这种可选方法,你可以写一个TfrFunctionLibrary的继承类(“继承”什么?-或者可以使用“引用”)。这个类中定义了一些开发者需要了解的FastReport工作的基本属性和方法。

这是TfrFunctionLibrary在FR_Class模块中的声明:

TfrFunctionLibrary = class(TObject)

public

  List: TStringList;

  constructor Create; virtual;

  destructor Destroy; override;

  function OnFunction(const FName: String; p1, p2, p3: Variant;

    var val: String): Boolean;

  procedure DoFunction(FNo: Integer; p1, p2, p3: Variant; var val: String);

    virtual; abstract;

end;

下面是一些关键模块:

Create-设计器生成一个可用的函数列表,并按大写字母顺序;

DoFunction-当调用时,这个方法用于返回(返回什么?)使用参数计算的函数值。每个函数最多有三个参数。这些参数的值是通过DoFunction的P1,P2,P3参数取得。

下面是一个有两个函数的简单例子:

  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('DATEPROPIS');

    Add('SUMPROPIS');

  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;

要在FastReport中激活已定义的函数类库,你需要注册它。意思是调用frRegisterFunctionLibrary方法并将这个类库作为它的一个参数(不是类的实例)。例如:

frRegisterFunctionLibrary(TMyFunctionLibrary);

要增加附加函数列表以“插入函数”对话框中,你需要通过下列参数调用frAddFunctionDesc方法:

函数名称;

这个函数的分类名;

这个函数的语法和目的的描述。注意:在函数描述中必须有“/”标记!它用于在函数中分隔语法描述。

记住每个函数都需要单独调用rAddFunctionDesc。这里有一个在表达式生成器中注册函数的例子:

frAddFunctionDesc('SUMPROPIS', 'My functions', 

  'SUMPROPIS(<Number>)/Returns value spelled out.');

Tag标签: .NET报表 vcl 报表 

上一篇: 如何在FastReport的对象和表达式中使用变量

下一篇: FastReport报表示例:在报表中插入图表


下载试用 | 技术指南 | 常见问题 | 联系方式 | 法律顾问:欣力律师事务所

慧都科技旗下网站-FastReport中文网版权所有 Copyright 2012

FastReport,报表控件,FastReport报表,VCL报表,.NET报表,COM/ActiveX报表,OLAP控件,联机分析处理