BCB控件制作和消息处理
了属性的存取方法、缺省值、属性编辑器等问题。为简单起见,本控件只涉及到上述一部分概念,但能涵盖控件制作的一般过程。
.开始一个空控件 由于要制作的对话框控件的最小必要功能是一个execute()方法,因此可以从tcomponent类继承。命名控件名为tvcaptiondlg,定义控件的单元文件命名为vcapdlg.cpp,其头文件为vcapdlg.h。用component wizard或手工方法完成如下文件:
registercomponents("mailuo",classes,0)指示在控件面板上的mailuo页(没有则创建该页)上生成classes数组包含的所有控件,这里是一个tvcaptiondlg控件。当然此时的tvcaptiondlg控件不具备tcomponent类之外的任何能力。 .将要用到的form文件包含进来 这只需在vcapdlg.cpp的#include "vcapdlg.h"后加入一行#include "vcap.cpp"(vcapdlg.*与vcap.*在同一目录)即可,重申一句:vcap.cpp中的#pragma package(smart_init)行要去掉。将整个vcap.cpp和vcap.h的内容包括在vcapdlg.cpp中也是可以的,这样就用不着vcap.*文件了.即将类vcform的定义与vcapdlg放在一个文件里,反正vcform只不过是vcapdlg要用到的一个类定义罢了。不过这样一来,在生成vcform的实例对象时,上面所说bitbtn1的caption、kind等与缺省值不等的属性都需要运行时设置,因为非缺省属性是保存在.dfm文件里的。这也是使用了form的类常用单独的单元文件保存的原因。 .添加接口属性 这里只提供一个caption属性供控件使用者用于读取或设置对话框的标题。为此只需在类tvcaptiondlg的声明体的private区加入一个ansistring fcaption变量作内部存储用,并在__published 区加入一行: __property ansistring caption={read=fcaption, write=fcaption}; 因为属性类型是ansistring,所以不需专门的属性编辑器处理设计时属性的编辑。另外在设计时该属性值的改变不需引起什么立即的处理和过程,因此存取方法采用最简单的立即存取(read=fcaption, write=fcaption)。 .添加执行方法
其中vcform为vcap.cpp中已声明的tvcform类类型的一个实例变量。相应地在vcapdlg.h里需加入一个execute方法的声明。 另外可以加入一些无关紧要的代码,如tvcaptiondlg的构造函数中加入成员变量的初始化语句等。至此整个控件的制作完成。完整的控件代码如下:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |