- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Delphi5 VCL结构
概述
TObject
TPersistent
TComponent
TControl
TWinControl
TScrollingWinControl
TGraphicControl
TCustomControl
概述
Delphi5是一个真正面向对象的编程工具,它提供了一个符合工业标准的元件库(VCL)。
VCL(Visual Component Library的缩写)是Delphi的核心。VCL是完全面向对象的,VCL中的所有对象都存在着继承与被继承的关系。它们的继承关系如下:
最顶层是TObject,它是一切对象的祖先类。
TPersistent是TObject的下一级继承者,它是一个抽象类,提供了对象之间相互赋值和读写流的能力。
TComponent是TPersistent的继承者,它是VCL中所有元件的祖先类,TComponent定义了所有元件最基本的行为。
尽管所有元件都是从TComponent继承下来,但直接继承的只有几个非可视的元件如TTimer等,其他元件则是从TComponent的下级TControl继承下来的。从TControl继承下来的元件是可视的,可视元件也称为控件。
TWinControl和TGraphicControl这两个类都是从TControl继承下来的,从TWinControl继承下来的主要是按钮、对话框、列表框等有窗口句柄的控件,这些控件占用Windows的资源,并且允许用户输入。而从TGraphicControl继承下来的控件例如TLabel、TSpeedButton等则没有窗口句柄,不占用Windows的资源,也不能接受键盘的输入;使用这一类控件的好处在于节约系统资源。
VCL的面向对象还体现在它的可扩展性,可以选择其中一个元件作为祖先类,派生出一个新的元件,并把新创建的元件加入到VCL中。
TObject
TObject是VCL中所有对象的基类,它定义了操纵对象的基本方法。其中,有的是类方法,用于返回对象的类型信息;有的是虚拟方法,能够在派生类中重载;有的仅用于Delphi5的IDE自身调用,而不能被程序调用。TObject没有数据成员。
Create构造函数
声明:constructor Create;
创建对象实例,并初始化实例数据,返回指向创建实例的一个指针。
如果该函数产生异常,系统将自动调用析构函数来释放已申请的资源。
Destroy析构函数
声明:destructor Destroy; virtual;
释放对象实例。推荐调用Free方法来释放对象示例,Free方法能够判断对象实例是否已经释放,如果没有释放,调用Destroy方法来释放,因此更安全。
ClassInfo函数
声明:class function ClassInfo: Pointer;
这个类方法返回一个指针,指向对象的运行期类型(RTTI)。运行期类型信息一般由Delphi的IDE使用,应用程序一般不与它打交道。
ClassName函数
声明:class function ClassName: ShortString;
这个类方法返回一个对象实例的类名。可以用基类的变量来引用派生类的对象实例。用基类的变量来调用ClassName()时,返回的是派生类的类名,而不是变量本身的类名。
ClassNameIs函数
声明:class function ClassNameIs(const Name: string): Boolean;
这个类方法判断对象是否是指定的类型,若是,返回True,否则,返回False。
ClassParent函数
声明:class function ClassParent: TClass;
这个类方法返回类的祖先。对于TObject来说,结果是nil,因为TObject已经处于最顶层,没有“父”。应用程序一般不要直接调用此方法。
ClassType函数
声明:function ClassType: TClass;
这个函数用于判断一个对象的类型,进而获取类的有关信息。
DefaultHandler过程
声明:procedure DefaultHandler(var Message); virtual;
如果Dispatch()没有找到处理某个消息的方法,就会调用DefaultHandler()。派生类可以重载这个方法,以便对所有的消息进行默认处理。
Dispatch过程
声明:procedure Dispatch(var Message);
这个过程用于调用一个消息句柄,至于究竟调用哪个句柄,有Message参数指定的消息来决定。如果在对象中没有找到该消息的句柄,Dispatch()就从基类中查找;如果一直到最顶层还没有找到,就调用DefaultHandler()。
Free过程
声明:
您可能关注的文档
最近下载
- 家居装饰行业大数据精准营销策略分析报告.docx
- SH217_03ERP项目_MM物资组关键方案介绍_收货_v1.1-.pptx VIP
- 格物入门. 第1-7卷 丁韪良 著 同治7年 北京 同文馆1.pdf VIP
- 电磁场的对称性分析.pdf VIP
- 传感器基础教科书原理和特点讲解.pdf VIP
- TCBDA51-2021 住宅装饰装修工程施工技术规程.pdf VIP
- 最新人教版九年级数学下册 全册教学课件全集(858张).ppt VIP
- TCBDA 55-2021 住宅室内装饰装修工程质量验收标准.docx VIP
- SH217_03ERP-2_详细业务蓝图及解决方案_3.1-神朔修改后.docx VIP
- 2025年重庆市中考数学试卷(含标准答案)原卷.pdf
文档评论(0)