Delphi5 VCL结构.docVIP

  • 26
  • 0
  • 约3.15万字
  • 约 29页
  • 2017-07-03 发布于湖北
  • 举报
概述 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过程 声明:

文档评论(0)

1亿VIP精品文档

相关文档