彩票走势图

FastReport VCL报表开发人员手册:自定义向导编写

翻译|使用教程|编辑:杨鹏连|2021-07-28 09:51:02.447|阅读 328 次

概述:FastReport 支持两种类型的向导。第一种类型包括已经提到的向导,从“文件|新建...”菜单调用。第二个包括向导,可以从“向导”工具栏调用。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

FastReport VCL是用于 Delphi、C++ Builder、RAD Studio 和 Lazarus 的报告和文档创建 VCL 库。它提供了可视化模板设计器,可以访问 30 多种格式,并可以部署到云、网站、电子邮件和打印中。

立即点击下载FastReport VCL v6.9最新版

您可以在自定义向导的帮助下扩展 FastReport 功能。例如,FastReport 包含标准的“报告向导”,它从“文件|新建...”菜单中调用。

FastReport 支持两种类型的向导。第一种类型包括已经提到的向导,从“文件|新建...”菜单调用。第二个包括向导,可以从“向导”工具栏调用。

任何向导的基本类是TfrxCustomWizard,在“frxClass”文件中定义。

  TfrxCustomWizard = class(TComponent)
  Public
    Constructor Create(AOwner: TComponent); override;
    class function GetDescription: String; virtual; abstract;
    function Execute: Boolean; virtual; abstract;
    property Designer: TfrxCustomDesigner read FDesigner;
    property Report: TfrxReport read FReport;
  end;
要编写自己的向导,必须从此类继承并至少覆盖GetDescription和Execute方法。第一个返回向导名称;第二个在运行向导时被调用;如果向导成功完成工作并对报告进行了任何更改,则它必须返回“True”。在向导工作期间,您可以通过Designer和Report属性正确调用设计器和报告方法和属性。

向导注册和删除是通过“frxDsgnIntf”文件中描述的过程执行的:

frxWizards.Register(ClassRef: TfrxWizardClass; ButtonBmp: TBitmap; IsToolbarWizard: Boolean = False);
frxWizards.Unregister(ClassRef: TfrxWizardClass);
在注册时,输入向导类名称、其图片,并指定向导是否放置在“向导”工具栏中。如果向导应放置在工具栏中,则 ButtonBmp 大小必须为 16x16 像素,否则为 32x32 像素。

让我们检查原始向导,它正在“文件|新建...”菜单中注册,然后添加新的页面来报告。

uses frxClass, frxDsgnIntf;

type
  TfrxMyWizard = class(TfrxCustomWizard)
  public
    class function GetDescription: String; override;
    function Execute: Boolean; override;
  end;

class function TfrxMyWizard.GetDescription: String;
begin
  Result := 'My Wizard';
end;

function TfrxMyWizard.Execute: Boolean;
var
  Page: TfrxReportPage;
begin
  { lock any drawings in designer }
  Designer.Lock;
  { create new page in report }
  Page := TfrxReportPage.Create(Report);
  { create unique name for page }
  Page.CreateUniqueName;
  { set paper sizes and orientation by default }
  Page.SetDefaults;
  { update report pages and switch focus to last added page }
  Designer.ReloadPages(Report.PagesCount - 1);
end;

var
  Bmp: TBitmap;

initialization
  Bmp := TBitmap.Create;
  { load picture from resource; of course, you should place it there first }
  Bmp.LoadFromResourceName(hInstance, 'frxMyWizard');
  frxWizards.Register(TfrxMyWizard, Bmp);

finalization
  frxWizards.Unregister(TfrxMyWizard);
  Bmp.Free;
end.

如果您对 FastReport 感兴趣,欢迎加入 FastReport QQ 交流群:702295239

还想要更多吗?您可以点击阅读【FastReport报表2021最新资源盘点】查找需要的教程资源。上是FastReport .NET慧正在网火热销售中!>>查看价格详情


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP