C Builder 可视化组件库(VCL)中的对象、组…

2008-02-23 05:34:59来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

图2 - 1为可视组件库的分层结构的简图,图中显示出了树状分层结构的五个主要的分支。




2.4.1 TObject分支
下面几部分分别对包含于五个主要分支中的类做出简要地描述,为完整地说明VCL对象的分层结构,引用了包含于产品中的VCL对象分层结构图。
任何的VCL对象都派生于TObject,其方法定义了构造、析构、消息处理等基本特征。VCL对象的许多强大的功能都建立在TObject给出的这些方法的基础之上。通过提供下列方法,TObject封装了任何VCL对象最基本的通用特征:
· 在对象被创建或销毁时响应的能力。
· 对象的类型和实例信息,及有关对象发布的属性的运行时类型信息(RTTI)
· 支持消息处理。
TObject是许多简单类的直接祖先。在这一分支中所包含的类有一个一起的重要的特性,他们都是暂时的。这是指,这些类都没有用来在对象被销毁之前保存状态的方法,他们不是固有的。
在这一分支中一个较主要的类为异常(Exception)类。他提供一组内嵌的异常类用于自动处理除数为零的错误、文档I/O错误、非法的类型匹配及许多其他的异常情况。
包含于TObject分支的更有一些封装数据结构的类,例如:
· TBits,存储了一个布尔型“数组”的类。
· TList,链接列表的类。
· TStack ,包含一个“后进先出”的指针数组的类。
· TQueue,包含一个“先进先出”的指针数组的类。
此外,您还能够发现一些封装了外部对象的类,如TPrinter,他封装了Windows打印机接口,TRegistry,他封装了底层系统注册及其函数。
TStream是这一分支里其他类型的典型例子。TStream是流对象的基类,能够和如磁盘文档、动态内存等等各种存储介质进行读写操作。
能够看到,这一分支中包含许多不同类,对于一个研发者来说,这些类都很有用。

2.4.2 TPersistent分支
在VCL分层结构中直接在TObject之下的是TPersistent。TPersistent给其下任何的类添加了两个重要的方法:SaveToStream和LoadFromStream。这些方法向对象提供固有特性。例如:当窗体设计器需要创建DFM文档(存储窗体及其组件信息的文档)时,他循环检查窗体的组件数组,并对其中任何的组件都调用SaveToStream方法。每个组件都“知道”如何将改变了的属性写入流中(如文本文档)。反过来,若窗体设计器需要从DFM文档中装入组件属性时,他循环检查窗体的组件数组,并对其中任何的组件都调用LoadFromStream方法。因此,任何TPersistent的派生类都有保存状态信息和需要时还原他们的能力。
在这一分支中包含的类主要有:
· TGraphicsObject,图像对象的基类,封装了Windows图像对象:TBrush、TFont、TPen。
· TGraphic,图标、位图、图元文档等能存储和显示可视图像的对象的基类,封装了TBitmap、TIcon和TMetaFile。
· TStrings ,串列表对象的基类。
· TClipboard,封装了Windows剪贴板对象,他包含从应用程式中剪下或复制的文本或图像。
· TCollection、TOwnedCollection和TCollectionItem,包含特别预定义项的索引集。

2.4.3 TComponent分支
TComponent是任何VCL组件的一起祖先。组件就是在设计时可在窗体中操纵的对象。虽然名为可视组件库,其实VCL中包含的大部分对象为非可视化的。
VCL组件都是固有的对象,其功能主要有:
· 可出现在组件面板上并可在窗体设计器中修改。
· 可拥有和管理其他的组件。
· 增强的流及文档管理能力。
· 可通过New Objects对话框中ActiveX页的向导程式转换成ActiveX控件或其他COM对象。
TComponent扮演了一个任何组件都可插入的标准“总线”的角色。TComponent通过Name和Owner属性及一些方法规定组件在设计时的行为。任何派生于TComponent的类都有Name和Owner属性。Owner属性值,也即组件的属主负责该组件对象的销毁。
在这一分支中包含的类主要有:
· TMainMenu 为窗体提供菜单栏及相应的下拉菜单的类。
· TTimer 包含Windows API 中的计时器函数的类。
· TOpenDialog、TSaveDialog、TFontDialog、TFindDialog、TColorDialog等,是通用Windows对话框类。
· TActionList,包含组件或控件,如菜单项和按钮的动作列表的类。
· TScreen,负责管理应用程式创建的窗体和数据模块,当前的活跃窗体及其上的活跃控件、屏幕尺寸和分辨率,应用程式使用的光标和字体等内容的类。

2.4.4 TControl分支
任何的控件都是可视化对象,即他们在运行时可见并可被用户操纵。且他们都有作为可视化控件所共有的属性、方法和事件,例如控件的位置、光标、和控件关联的提示、用来描绘或移动控件的方法、用来响应鼠标动作的事件等。
TComponent定义任何组件的行为,TControl则进一步定义了任何可视化控件的行为。包含画图例程、标准Windows事件及容器特性。
在这一分支中一组较重要的类为TGraphicControl。TGraphicControl控件类必须能描绘他们自己并且从不接受焦点。在这组控件中主要包含:
· TImage,一种显示图像类图像的控件。
· TLabel,一种在窗体中显示文字的控件。
· TBevel,一种表示边缘斜角的控件。
· TPaintBox,一种提供画布的控件,应用程式能够使用画布创建及生成显示图像。
注意到这些控件包含通用的画图例程(画图、重画、使无效等),但C Builder不必为他们分配窗口句柄,因为他们从无需接受焦点。

2.4.5 TWinControl分支
TWinControl是为任何的窗口控件的基类。下面的是窗口控件的几个特征:
· 窗口控件是应用程式运行时能接受焦点的控件。
· 也许更有其他控件能够显示数据,但是只有当该控件是一种窗口控件时,用户才能使用键盘来和之交互。
· 窗口控件能包含其他控件。
· 包含其他控件的控件是父代控件。只有窗口控件能够作为一个或多个子控件的父代控件。
· 窗口控件有窗口句柄。
除了能接受焦点外,TWinControl和TControl基本相同。这意味着他们不但包含许多标准Windows事件,同时Windows还必须给他们分配窗口句柄。这一分支中包含了两大类控件,一种是由Windows自动描绘的(包括TEdit、TListBox、TComboBox、TPageControl等),另一种是C Builder自定义的(包括TDBNavigator、TMediaPlayer、TGauge等)。但是,您根本不必关心控件如何描绘他们自己或如何响应事件,这些都已被C Builder所完全封装。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: C Builder 可视化组件库(VCL)中的对象、组件和控件(2)

下一篇: C Builder 可视化组件库(VCL)标准组件(2)