Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)aaa
published in(发表于) 2014/7/19 0:12:50
delphi组件VCL类库结构

delphi组件VCL类库结构

Delphi 与其他编程工具比较,最大优势是为用户提供了大量组件。通过这些组件,Delphi 程序员可以方便、快捷地创建满足要求的应用程序。因为Delphi 组件是在VCL 类库的基础上继承、封装的,所以本章首先将对VCL 类库作一个大致的介绍,然后再详细地讲述如何使用组件编写简单的Delphi程序。

可视化类库(VCL)

在Delphi 中,每个组件都可以看作是一个对象。从可视化编程的角度来看,对象是一个具有属性(数据)和行为方式(方法)的实体。简单地说,属性是用来描述对象,方法让对象做一些动作,而对象动作时常会引起事件。一个对象建立以后,其操作就通过与该对象有关的属性、事件和方法来描述。Delphi 中的对象,是在对VCL 类库中基类的扩展、继承的基础上封装而成的,在使用Delphi 组件编程前,读者必须了解VCL 类库的一些基础知识。

VCL 类库结构

VCL(全称是Visual Component Library,可视化组件库),支持Object Pascal 语言。它是BorlandDelphi 和C++ Builder 共同使用的一个符合工业标准的组件库,也是真正意义上的面向对象的组件库。所以Delphi 的组件封装了一些数据集和数据访问的过程与函数,从祖先类中继承了数据和行为。尽管每个组件有其特殊性,但是所有组件都从它们的共同祖先TComponent 那里继承某些公共属性,可以说TComponent 定义了组件用于Delphi 环境所必需的最小属性集。VCL 类的继承关系如图5-1 所示。



图5-1 VCL 类图的主要分支

从上面的例子可以看出,TObject 是VCL 的祖先类,这也是Object Pascal 语言所规定的。Object 的中文意思是“对象”,它在现实生活中是很常见的,例如一个人是一个对象,一台计算机是一个对象。如果将一台计算机拆开来看,又有显示器、主机箱、主板、硬盘、内存条等,每一个又都是一个对象,即计算机对象是由多个“子”对象组成的。如同在可视化编程中,常见的对象有窗体、按钮、编辑框等。

TObject 以及TObject 声明所在的System.pas 都是编译器内置支持的,在Project 中已经被编译器自动包含了System 单元,因此用户无法修改、删除System.pas 中的任何东西,也无法将System.pas加入到自己的Project 中,否则会得到“Identifier redeclared ’system’”的错误提示。TObject 封装了Object Pascal 类/对象的最基本行为。因为Delphi 的核心是层次结构,系统中的每一个类都是TObject 类的子类,整个类的层次结构只有一个TObject 根类,所以允许用户在系统中用TObject 数据类型替代任何类的数据类型。

在TObject 基类的基础上,VCL 定义了很多子类。其中有两个比较重要的子类:TPersistent 和TComponent。TPersistent 由TObject 派生,它自身及其派生类对象具有自我保存、持久存在的能力。TComponent 由TPersistent 派生,这条分支之下所有的类都可以被称为“组件”。组件的一般特性如下。

(1)可出现在开发环境的“组件板”上。

(2)能够拥有和管理其他组件。

(3)能够存取自身(这是因为TComponent 派生自TPersistent)。

TControl 派生自TComponent,也是Delphi 应用程序的核心元素和界面设计的重要组成部分。当用户编写程序时,首先要选择一些组件并定义它们的相互作用。VCL 封装了Windows 底层的API 函数,使用户在不需要了解更多有关Windows 编程知识的前提下,也可以开发出界面美观和功能强大的Windows 程序。

TControl 分支之下所有的类,都是在运行时可见的组件。TWinControl 派生自TControl,这个分支封装了Windows 系统的屏幕对象,也就是一个真正的Windows 窗口(拥有窗口句柄)。TCustomControl派生自TWinControl。从TCustomControl 开始,组件拥有了Canvas(画布)属性。另外,组件在屏幕上有位置和大小的显示,并且设计时在窗口显示的位置与运行时相同。

组件有两种不同的规格,可以分为可视化和非可视化两种。

其中,基于窗口的组件,即窗口组件(Windowed Control),是系统窗口的可视化组件。可视化组件都有窗口句柄,并可以接受输入焦点,可以含有其他组件。

图形组件(Graphical),即非窗口组件,没有窗口句柄,不能接受焦点,也不能包含其他组件。这些组件继承于TGraphicControl 并由它们的父窗口显示,它们在最小化使用系统资源方面起着关键作用。

Delphi 的大部分组件都包含在组件板中。它们以流的形式储存在.dfm 文件中,并且可拥有属性和可视化处理事件。




If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759