Delphi制作数据感知控件之浮想联翩

2008-04-09 04:28:02来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

Delphi制作数据感知控件之浮想联翩

王维康 编写

知识点

本文共有6个关于控件的知识点:

1、基本控件的制作;2、感知属性的添加;3、关联控件的销毁处理;

4、事件方法的赋值; 5、属性页的制作; 6、组件包设计思想

关于制作感知控件的文章有不少,但涉及的内容大都比较单一,读者只能依照文章的陈述按部就班地操作,无法很好的理解控件的制作机制。本文试图通过讲解一个控件的制作流程来着重阐述制作感知控件的思路和编程思想,让读者真正了解VCL控件的制作机制,而非仅仅达到了解此控件的制作方法为目的,希望能使读者在阅读以后达到“一叶落而知天下秋”的效果,哈,夸张了。

本文以制作一个类似于DBEdit的控件为例。首先使用组件向导从TEdit下继承下来,命名TMyDataBaseEdit,单元名为MyDataBaseEdi.pas,安装在一个新的包文件中,起名为MyDataEditStd60.Dpk。

包的命名没有规则,但是我们建议遵守包的命名约定:包的命名与包的版本相关,包的名称前面几个字符通常表示作者或公司名,也可以是控件的一个描述词,后面紧跟的Std表示运行期包,Dsgn表示设计期包,然后是版本号。关于包的设计方式我们将随后详细说明。

数据感知

准备就绪,我们开始编辑控件的功能,首先添加数据源感知属性 .DataSource,实现此属性只需Pubished域添加一句话:

property DataSource: TDataSource read GetDataSource write SetDataSource;按下shift +ctrl+ C组合键(complete class at cursor)完成属性的自动结构化功能,private域自动添加两个函数:

procedure SetDataSource(const Value: TDataSource);

function GetDataSource: TDataSource;

这样,安装组件到面板,可以看到该组件已经拥有了.DataSource属性,并实现感知TDataSource控件功能。怎么样,简单吧,呵呵。其实我们由此可以得到:控件属性的感知只不过是将它的一个属性声明为将要感知的控件类而已,如果感知Image控件,则:

property MyImage:TImage read GetImage write SetImage;

但是,假如我们要将一个控件作为这个控件的子属性,即将这两个控件的代码合并,则不能单单需要上述那一句话了:

首先,去掉添加控件的注册函数;

其次,将其从TComponent继承改为从TPersistent继承下来。大家可试试看。

事件赋值

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:把图标存储在SHELL32.DLL

下一篇:动态数组介绍----Delphi