Delphi面向对象学习随笔九:后记

本文介绍了 Delphi 中 VCL 类的基本概念,包括 TObject、TPersistent、TComponent 等核心类的功能与用途,帮助读者理解 Delphi 开发中组件与控件的设计原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


======================================================
注:本文源代码点此下载
======================================================

作者:巴哈姆特

http://www.cnpack.org

(转载时请注明出处并保持完整)

最后一篇了,呵呵!其实通过写这几篇笔记,也发现了我自己知识欠缺的部分。当然也通过各位高手的提点,让我把以前学习过的东西来了一次“体检”。

当然,错误也有,但是改了就还是好同志嘛,呵呵^_^

随便介绍一下delphi中的几个比较常用的类吧:

tobject:

vcl中所有类的根类,即是说:vcl中所有的类/组件/控件都是从tobject中继承而来。tobject类中定义了基本的构造方法和析构方法。

tpersistent:

继承于tobject,按字典中的意思是“持久类”(姑且这样叫它吧,因为我一直就是这样叫这个类的-_-|)。该类在vcl中的地位不亚于tobject,vcl中很大一部分类都是继承于这个类的。tpersistent类实现了published域对象的rtti功能,也就是说:该类以及它的派生类中定义在published中的属性、方法和事件可以显示在object inspector窗口中,也可以把属性的值保存到dfm文件中。当然,这些rtti的特性,都是由编译指令{$m+}指定的。如果是直接从tobject继承的子类,加上这个编译指令,同样有rtti功能。另外tpersistent还提供了持久类对象实例之间互相assign的机制,子类可实现它。

tcomponent:

所有组件的基类,由该类或它的派生类所派生的新类是可以注册到delphi的组件面板中的。也就是说,当你要开发一个新的组件时,该类将是你所能选择的最基础的类。

tcontrol:

可视组件(一般我们说的控件也就是指tcontrol类或它的派生类)。

twincontrol:

标准windows控件,该类以及派生类都有一个非常重要的属性thandle。也就意味着,继承于这个类或派生类的控件可以接受消息(sendmessage()或postmessage()发送,当然还有系统发送的)。当然,非可视组件(tcomponent的派生类)也有具有thandle属性的。比如说ttimer。

tcustomcontrol:

继承于twincontrol,添加了画布属性canvas和paint方法。那么,当我们考虑写一个自绘的并且有句柄的控件的话,考虑用这个类或许可以减少我们很多工作量。

tgraphiccontrol:

自绘控件,从tcontrol类继承,与twincontrol类不同的是,它没有句柄。

tinterfacedobject:

前面说过,这个类应该是我们选择实现接口类的根类,因为它已经为我们实现了iinterface接口中的方法。当然如果你想自己实现iinterface中的方法的话,你也可以选择从tobject类中继承。

大概就这样吧,相当的简单。其中的奥秘其实可以从vcl的代码中挖掘。

我每一次看vcl的代码,都会忍不住佩服一次delphi开发小组的成员。vcl的代码真的是太优秀了,虽然也有bug,呵呵。

题外话:

这段时间在网上翻帖子,看到有朋友为了“到底是oop好还是gp好”而大打口水仗;也有朋友为了“使用属性(property)好还是使用getxxx和setxxx这样的方法好”而破口大骂。

就我看来:任何东西,只要他存在,那么就是最大的道理,没有必要争论这些。有这些时间还不如多去学习点新的东西更好。

鸣谢:

首先要谢谢刘啸,如果没有刘啸为我的笔记润色润色的话,我想会有很多会有歧义的地方。

也要感谢刘啸、沈兄和周劲羽的批评和补充,有了他们的批评,才使我又学习到了很多东西。

当然,也要感谢正在看这个笔记的各位,希望各位可以给我指出不正确的地方。多交流才会有提高嘛^_^

最后:希望我写的东西没有误人子弟。

阿弥陀佛……


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值