FastReport使用交流,FastReport中国社区FastReport联系电话 联系电话:17347785263

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

来源:   发布时间:2021-07-07   浏览:次

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

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

FastReport 包含许多常用的控件,可以放置在报告内的通知表单上。

  标签控件
  编辑控件
  Tfrx备忘录控件
  按钮控件
  TfrxCheckBox控件
  TfrxRadioButtonControl
  TfrxListBox控件
  TfrxComboBox 控件
  TfrxDateEdit 控件
  图像控件
  TfrxBevelControl
  面板控件
  TfrxGroupBox控件
  TfrxBitBtnControl
  TfrxSpeedButtonControl
  TfrxMask 编辑控件
  TfrxCheckListBoxControl

这些控件元素对应于 Delphi 组件面板标准控件。如果标准功能不能满足您的要求,您可以创建自己的通用控件并在报告中使用它。

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

  TfrxDialogControl = class(TfrxReportComponent)
  受保护
    程序初始化控制(AControl:TControl);
  上市
    构造函数创建(AOwner:TComponent);覆盖;
    析构函数销毁;覆盖;
    类函数 GetDescription: String; 虚拟的;
    属性标题:字符串;
    属性颜色:TColor;
    属性控制:TControl;
    属性 OnClick: TfrxNotifyEvent;
    属性 OnDblClick: TfrxNotifyEvent;
    属性 OnEnter: TfrxNotifyEvent;
    属性 OnExit: TfrxNotifyEvent;
    属性 OnKeyDown:TfrxKeyEvent;
    属性 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;

结尾。

如果您对 FastReport 动物,欢迎加入 FastReport QQ 交流群:702295239

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

本站文章除注明转载外,均为本站原创或翻译
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
转载请注明:文章转载自:FastReport控件中文网 [https://www.fastreportcn.com/]
本文地址:https://www.fastreportcn.com/post/3130.html

联系我们
  • 重庆总部 17347785263
购买
  • sales@evget.com
合作
  • business@evget.com


在线
客服
在线
QQ
电话
咨询
023-68661681
返回
顶部