[翻译]Writing Custom Common Controls 编写自定义控件
摘要:介绍如何编写自定义的控件,用在报表的窗体上(如Edit,Button等)
Writing Custom Common Controls 编写自定义控件
FastReport contains a set of common controls which can be placed on dialogue forms inside reports. They are as follows:
FastReport包含以下控件,用于报表里的对话形式窗体。
TfrxLabelControl
TfrxEditControl
TfrxMemoControl
TfrxButtonControl
TfrxCheckBoxControl
TfrxRadioButtonControl
TfrxListBoxControl
TfrxComboBoxControl
TfrxDateEditControl
TfrxImageControl
TfrxBevelControl
TfrxPanelControl
TfrxGroupBoxControl
TfrxBitBtnControl
TfrxSpeedButtonControl
TfrxMaskEditControl
TfrxCheckListBoxControl
These controls correspond to the Delphi component palette standard controls. If the standard functionality is not sufficient then you can create your own common controls for use in your reports.
这些控件跟DELPHI标准控件一致,如果不能满足需求,可以自己编写控件。
The base class for all common controls is the “TfrxDialogControl” class, declared in the frxClass file:
(使用基类TfrxDialogControl)
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;
To create your own control you should inherit from this class and override at least the constructor and the “GetDescription” method. It will be necessary to create the common control and initialize it using the “InitControl” method in the constructor. The GetDescription method is for returning a description of the common control. As you can see the TfrxDialogControl class already has a large number of properties and methods in the public section. Move properties and events into the “published” section of your common control as required and also create new properties that are specific to your control.
编写自定义的控件应该从类TfrxDialogControl继承,并至少要重写constructor 和GetDescription方法。
Common control registration and deletion is performed by using the frxObjects global object methods declared in the frxDsgnIntf file:
控件的注册和删除使用全局方法frxObjects,方法在frxDsgnIntf 文件中。
frxObjects.RegisterObject(ClassRef: TfrxComponentClass;ButtonBmp: TBitmap);
frxObjects.Unregister(ClassRef: TfrxComponentClass);
During registration you should specify the control class name and its picture. The ButtonBmp size should be 16x16 pixels.
在注册过程中,你应该指定控制类名称和它的图片。ButtonBmp的尺寸应为16X16像素。
Let's look at an example of a common control that simplifies the functionality of the standard Delphi TBitBtn control.
让我们编写一个简单的例子,实现标准的Delphi控件Tbitbtn功能。
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;
{ following 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); //初始化对象
{ set default size }
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;
it should have already been placed there, of course }
Bmp.LoadFromResourceName(hInstance, 'frxBitBtnControl');
frxObjects.RegisterObject(TfrxBitBtnControl, Bmp);
finalization
frxObjects.Unregister(TfrxBitBtnControl);
Bmp.Free;
end.
[翻译]Writing Custom Common Controls 编写自定义控件的更多相关文章
- [翻译]Writing Custom DB Engines 编写定制的DB引擎
Writing Custom DB Engines 编写定制的DB引擎 FastReport can build reports not only with data sourced from ...
- [翻译]Writing Custom Report Components 编写自定义报表组件
摘要:简单介绍了如何编写一个FastReport的组件,并且注册到FastReport中使用. Writing Custom Report Components 编写自定义报表组件 FastRep ...
- [翻译]Writing Custom Wizards 编写自定义的向导
Writing Custom Wizards 编写自定义的向导 You can extend FastReport's functionality with the help of custom ...
- Qt编写自定义控件二动画按钮
现在的web发展越来越快,很多流行的布局样式,都是从web开始的,写惯了Qt widgets 项目,很多时候想改进一下现有的人机交互,尤其是在现有的按钮上加一些动画的效果,例如鼠标移上去变大,移开还原 ...
- [翻译]Writing Component Editors 编写组件的编辑器
Writing Component Editors 编写组件的编辑器 All common control editors (opened from a control's context me ...
- [翻译] Writing Property Editors 编写属性编辑器
Writing Property Editors 编写属性编辑器 When you select a component in the designer its properties are di ...
- (译)Getting Started——1.3.4 Writing a Custom Class(编写自定义的类)
在开发IOS应用中,当你编写自定义的类时,你会发现很多的特殊场合.当你需要把自定义的行为和数据包装在一起时,自定义的类非常有用.在自定义的类中,你可以定义自己的存储.处理和显示数据的方法. 例如,I ...
- 编写Qt Designer自定义控件(二)——编写自定义控件界面
接上文:编写Qt Designer自定义控件(一)——如何创建并使用Qt自定义控件 既然是控件,就应该有界面,默认生成的控件类只是一个继承了QWidget的类,如下: #ifndef LOGLATED ...
- Delphi编写自定义控件以及接口的使用(做了一个TpgDbEdit)
写给觉得自己编写Delphi很复杂的人,包括自己. Delphi自己写控件其实并不难,难的在于开发复杂的控件.(其实,编程,很多东西都是会了就不难,因此,我怕自己日后觉得自己写控件很难,特意在这记录自 ...
随机推荐
- phalcon安装笔记
参考官网 git clone --depth= git://github.com/phalcon/cphalcon.git cd cphalcon/build sudo ./install 添加配置文 ...
- Mac上如何把图片中的文字转换成word/pdf文字
如何把图片文字转换成word文字? - 知乎 https://www.zhihu.com/question/25488536 在 OneNote for Mac 中插入的圖片複製文字 - OneNot ...
- Waiting for device dev/disk/by-id/ata-...-part2 to appear
问题: 平台:Oralce VM Virtualbox的虚拟机Opensuse11.4 导出该机器的OVA文件后,把该OVA文件导入虚拟机,开机启动时报如下错误: Trying manual resu ...
- buffer cache —— buffer busy waits/read by other session
oracle提供非常精确.有效的row level lock机制,多个用户同时修改数据时,为了保护数据,以块为单位挂起锁的情况不会发生.但这不太正确.以块为单位的锁虽然不存在,但正因为oracle I ...
- django之模型
ORM简介 MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库 ORM是“对象-关系-映射”的简称 ...
- 基于sersync海量文件实时同步
项目需求:最近涉及到数百万张图片从本地存储迁移到云存储,为了使完成图片迁移,并保证图片无缺失,业务不中断,决定采用实时同步,同步完后再做流量切换.在实时同步方案中进行了几种尝试. 方案1:rsync+ ...
- YUM CentOS 7 64位下mysql5.7安装配置
配置YUM源 在MySQL官网中下载YUM源rpm安装包:http://dev.mysql.com/downloads/repo/yum/ #下载mysql源安装包 # wget http://dev ...
- 与DispatcherServlet的 url-pattern配置问题
<!--当DispatcherServlet 的url-pattern配置成/ 访问不到静态资源 的解决方法1:使用Tomcat默认的Servlet解决 --> 在web.xml中加以下代 ...
- 《GB/T 20988-2007:信息系统灾难恢复规范》[中](国家质检总局 & 国标委)阅读笔记
第 0 章:引言 [感]GB/T 20988 引用了 SHARE 78 会议(标准)上的有关内容和思想,并结合国家重要信息系统行业技术发展和实践经验制定而成. GB/T 20988 提出了信息系统灾难 ...
- 动量Momentum梯度下降算法
梯度下降是机器学习中用来使模型逼近真实分布的最小偏差的优化方法. 在普通的随机梯度下降和批梯度下降当中,参数的更新是按照如下公式进行的: W = W - αdW b = b - αdb 其中α是学习率 ...