自己开发delphi的vcl
日期:2007年5月2日 作者: 查看:[大字体 中字体 小字体]-
Delphi为何成为广大程序员爱好的开发工具,其中一个原因就是它有大量的共享的vcl库,打打扩展了delphi的功能。但是在实际的开发过程中,有时候根据项目的需要要开发自己的vcl控件,我就有过不少这样的需求,因此自己也开发了多个vcl控件,由于水平有限,功能也不是很强大,下面将自己的一些经验介绍一下。
1、 选择File New,在对话框中选择component.在ancestor Type中选择你的控件是从那个类继承下来的,然后在 “Class Name”输入你的类的名称,在palette page 中选择要把你的控件放到哪一个页面中。输入完毕后点击ok,生成pas文件。
2、 在控件中添加属性:
首先,控件的属性要存储在一个类变量中,比如一个类型为string的变量,就可以存储在一个可以存储string的类变量,比如一个string,Tstringlist等。因此首先要在类的private区域声明一个私有的类变量,为了防止名字重复,一般在私有的类变量前加一个“F”。如
……………
private
Fname:String
…………..
我们假设这个属性的名字叫 FieldName,那我们就需要在published区域加上如下语句:
property FieldName:String read Fname write Fname;
这样的属性你可以访问,但是不在 “Object Inspector”中出现,如果想如此,应这样写:
property FieldName:String read Fname write Fname stored true;
这样的方法只实用于一些基本的数据类型,如integer, double ,String等等,对一些类,如Tstringlist,就不适合,对这些类应该怎么办呢?首先,还是要声明一个私有的变量存储该属性,以 Tstringlist为例子:
private Fnames:Tstringlist;
同时要写两个方法来对此类变量进行存取:
protected
Function getNames:Tstringlist;
Procedure setNames(value:Tstringlist);
在getName的函数体中,应这样写:
begin
result:=Fname;
end;
在setNames的方法中,应这样写:
begin
Fname.assign(value);
end;
在published中写:
property Names:Tstringlist read getNames write setNames;
同样如果想要这个属性在 “Object Inspector”中出现,要在后面加 stored true.
当然,你也可以通过其他类型的类对这个属性进行存取,比如通过Tlistbox来存取Tstringlist,因为类Tlistbox也包含有一个Tstringlist类。
3、 在控件中添加方法
添加方法比较简单,在published中声明方法,然后写方法体就可以。
4、 在控件中添加事件
添加事件之前,首先要声明一个事件类,如TnotifyEvent
private
MyEvent:TnotifyEvent;
声明事件
//published
property OnMyEvent:TnotifyEvent read MyEvent write MyEvent stored true;
然后在特定的条件下调用这个事件:
OnMyEvent(owner);
5、 写数据敏感的控件:
数据敏感的控件和普通控件基本相同,只是有一个类Tdatalink,Tdatalink有一个onDatachange事件,你可以声明一个事件,然后将事件指向Tdatalink的onDatachange事件,然后在事件中写下程序就可以实现数据敏感了。
FDataLink.OnDataChange := DataChange;
然后在Datachange中写程序。
6、 重载构造器和构析器。在public或published中写:
构造器:
constructor Create(Aowner:Tcomponent);override;
构析器:
destructor Destory;override;
在构造时对一些类变量进行初始化,有的需要调用类变量的类构造方法进行构造,如
Fnames:=Tstirnglist.create;
在构析时对类变量进行释放
Fnames.Free;
7、 对于一些界面有关的控件,如果有特殊的界面需要,需要重载onpaint事件,在重画时对自己的canvas进行操作,当然,也可以对别的类的canvas进行操作,比如写一个控件,在重画时对它的容器用一个画进行平铺处理。
8、 对于从哪些类继承,根据自己的需要选择,尽可能选择功能接近,已经实现部分功能的类,这样写比较方便。
以上是自己的一些心得,还望多多指正。 - [1] [2] 下一页
-
- 自己开发delphi的vcl 相关文章:
- ·自己开发delphi的vcl
- 自己开发delphi的vcl 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:自定义报表打印预览窗口
下一篇:作非常规程序菜单掌握delphi
精品推荐
热点TOP10
- ·Delphi下的ADO使用方法!
- ·在Delphi中实现数据分析模块的动态报表
- ·在Delphi中控制扫描仪
- ·用拼音首字符来实现检索功能
- ·让Delphi的DBGrid支持鼠标轮
- ·自 动 隐 藏 的 声 象 按 钮
- ·OpenGL简介
- ·用Delphi制作动态有声标签
- ·从 实 例 看 Delphi 4 中 的 动 态
- ·Delphi中为DBGrid控件添加色彩
- ·常用的BCB & Delphi 函数
- ·产生不重复随机数的简便算法
- ·陈经韬2002原创资料
- ·Delphi2005试用版安装指南
- ·Delphi中ListBox控件的六种特效
- ·第三方控件使用方法
- ·关于SMTP和POP3使用及关于客户-服务端的自动连线问题
- ·关于MP3中的ID3V2格式探讨及我写的ID3V2读取源码
- ·监视打印机部分线程内容
- ·获取其他进程中ListView的文本
