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

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

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 大小应为 16×16 像素。

例如,让我们检查通用控件的示例,它简化了标准 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慧正在网火热销售中!>>查看价格详情

标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年5月27日
下一篇 2021年5月27日

相关推荐

发表回复

登录后才能评论