彩票走势图

FastReport VCL开发人员手册:自定义常用控件编写

翻译|使用教程|编辑:杨鹏连|2021-06-30 09:42:00.980|阅读 148 次

概述:FastReport VCL它提供了可视化模板设计器,可以访问 30 多种格式,并可以部署到云、网站、电子邮件和打印中。本文介绍了FastReport VCL自定义常用控件编写。

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

相关链接:

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

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

FastReport 包含一组常用控件,可以放置在报表内的对话表单上。它们如下:

  TfrxLabelControl
  TfrxEditControl
  TfrxMemoControl
  TfrxButtonControl
  TfrxCheckBoxControl
  TfrxRadioButtonControl
  TfrxListBoxControl
  TfrxComboBoxControl
  TfrxDateEditControl
  TfrxImageControl
  TfrxBevelControl
  TfrxPanelControl
  TfrxGroupBoxControl
  TfrxBitBtnControl
  TfrxSpeedButtonControl
  TfrxMaskEditControl
  TfrxCheckListBoxControl
这些控件元素对应于 Delphi 组件面板标准控件。如果标准功能不能满足您的要求,您可以创建自己的通用控件并在报告中使用它。

所有公共控件的基本类是TfrxDialogControl在 frxClass 文件中声明的类:

  TfrxDialogControl = class(TfrxReportComponent)
  protected
    procedure InitControl(AControl: TControl);
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    class function GetDescription: String; virtual;
    property Caption: String;
    property Color: TColor;
    property Control: TControl;
    property OnClick: TfrxNotifyEvent;
    property OnDblClick: TfrxNotifyEvent;
    property OnEnter: TfrxNotifyEvent;
    property OnExit: TfrxNotifyEvent;
    property OnKeyDown: TfrxKeyEvent;
    property OnKeyPress: TfrxKeyPressEvent;
    property OnKeyUp: TfrxKeyEvent;
    property OnMouseDown: TfrxMouseEvent;
    property OnMouseMove: TfrxMouseMoveEvent;
    property OnMouseUp: TfrxMouseEvent;
  published
    property Left;
    property Top;
    property Width;
    property Height;
    property Font;
    property ParentFont;
    property Enabled: Boolean;
    property Visible;
  end;
要创建您自己的控制元素,您应该从此类继承并至少覆盖构造函数和GetDescription方法。有必要创建公共控件并通过InitControl构造函数中的方法对其进行初始化。GetDescription方法是返回公共控件描述。从TfrxDialogControl类描述中可以看出,它已经在公共部分包含了大量的属性和方法。您需要将任何必要的属性/事件传输到公共控件的“已发布”部分,并且还需要创建新的属性,这对于您的元素是典型的。

公共控件的注册和删除是通过frxObjectsfrxDsgnIntf 文件中声明的全局对象方法执行的:

frxObjects.RegisterObject(ClassRef: TfrxComponentClass; ButtonBmp: TBitmap);
frxObjects.Unregister(ClassRef: TfrxComponentClass);
在注册期间,您应该指定控件类名称及其图片。ButtonBmp 大小应为 16x16 像素。

例如,让我们检查通用控件的示例,它简化了标准 DelphiTBitBtn控件的功能。

uses frxClass, frxDsgnIntf, Buttons;

type
  TfrxBitBtnControl = class(TfrxDialogControl)
  private
    FButton: TBitBtn;
    procedure SetKind(const Value: TBitBtnKind);
    function GetKind: TBitBtnKind;
  public
    constructor Create(AOwner: TComponent); override;
    class function GetDescription: String; override;
    property Button: TBitBtn read FButton;
  published
    { add new properties }
    property Kind: TBitBtnKind read GetKind write SetKind default bkCustom;
    { these properties are already declared in  parent class }
    property Caption;
    property OnClick;
    property OnEnter;
    property OnExit;
    property OnKeyDown;
    property OnKeyPress;
    property OnKeyUp;
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
  end;

constructor TfrxBitBtnControl.Create(AOwner: TComponent);
begin
  { default constructor }
  inherited;
  { create  required common control }
  FButton := TBitBtn.Create(nil);
  FButton.Caption := 'BitBtn';
  { initialize it }
  InitControl(FButton);
  { it will have such size by default }
  Width := 75;
  Height := 25;
end;

class function TfrxBitBtnControl.GetDescription: String;
begin
  Result := 'BitBtn control';
end;

procedure TfrxBitBtnControl.SetKind(const Value: TBitBtnKind);
begin
  FButton.Kind := Value;
end;

function TfrxBitBtnControl.GetKind: TBitBtnKind;
begin
  Result := FButton.Kind;
end;

var
  Bmp: TBitmap;

initialization
  Bmp := TBitmap.Create;
  {Load picture from resource. Of course, you should beforehand place it there.}
  Bmp.LoadFromResourceName(hInstance, 'frxBitBtnControl');
  frxObjects.RegisterObject(TfrxBitBtnControl, Bmp);

finalization
  frxObjects.Unregister(TfrxBitBtnControl);
  Bmp.Free;

end.


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

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


标签:

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

文章转载自:

为你推荐

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


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP