图2 - 1为可视组件库
![](/icons/19816de.gif)
分层结构
![](/icons/19816de.gif)
简图
![](/icons/19816dou.gif)
图中显示出了树状分层结构
![](/icons/19816de.gif)
5个主要
![](/icons/19816de.gif)
分支
![](/icons/19816dou2.gif)
![](\"http://127.0.0.1/Files/BeyondPic/2007-4/19/074190934092797.g<img)
\" width=542>
2.4.1 TObject分支
下面几部分分别对包含于 5个主要分支中
![](/icons/19816de.gif)
类做出简要地描述
![](/icons/19816dou.gif)
为完整地介绍说明VCL对象
![](/icons/19816de.gif)
分层结构
![](/icons/19816dou.gif)
引用了包含于产品中
![](/icons/19816de.gif)
VCL对象分层结构图
![](/icons/19816dou2.gif)
所有
![](/icons/19816de.gif)
VCL对象都派生于TObject
![](/icons/19816dou.gif)
其思路方法定义了构造、析构、消息处理等基本特征
![](/icons/19816dou2.gif)
VCL对象
![](/icons/19816de.gif)
许多强大
![](/icons/19816de.gif)
功能都建立在TObject给出
![](/icons/19816de.gif)
这些思路方法
![](/icons/19816de.gif)
基础的上
![](/icons/19816dou2.gif)
通过提供下列思路方法
![](/icons/19816dou.gif)
TObject封装了所有VCL对象最基本
![](/icons/19816de.gif)
通用特征:
· 在对象被创建或销毁时响应
![](/icons/19816de.gif)
能力
![](/icons/19816dou2.gif)
· 对象
![](/icons/19816de.gif)
类型和例子信息
![](/icons/19816dou.gif)
及有关对象发布
![](/icons/19816de.gif)
属性
![](/icons/19816de.gif)
运行时类型信息(RTTI)
· 支持消息处理
![](/icons/19816dou2.gif)
TObject是许多简单类
![](/icons/19816de.gif)
直接祖先
![](/icons/19816dou2.gif)
在这
![](/icons/19816yi.gif)
分支中所包含
![](/icons/19816de.gif)
类有
![](/icons/19816yi.gif)
个共同
![](/icons/19816de.gif)
重要
![](/icons/19816de.gif)
特性
![](/icons/19816dou.gif)
它们都是暂时
![](/icons/19816de.gif)
![](/icons/19816dou2.gif)
这是指
![](/icons/19816dou.gif)
这些类都没有用来在对象被销毁的前保存状态
![](/icons/19816de.gif)
思路方法
![](/icons/19816dou.gif)
它们不是固有
![](/icons/19816de.gif)
![](/icons/19816dou2.gif)
在这
![](/icons/19816yi.gif)
分支中
![](/icons/19816yi.gif)
个较主要
![](/icons/19816de.gif)
类为异常(Exception)类
![](/icons/19816dou2.gif)
它提供
![](/icons/19816yi.gif)
组内嵌
![](/icons/19816de.gif)
异常类用于自动处理除数为零
![](/icons/19816de.gif)
![](/icons/19816cuowu.gif)
、文件I/O
![](/icons/19816cuowu.gif)
、非法
![](/icons/19816de.gif)
类型匹配及许多其他
![](/icons/19816de.gif)
异常情况
![](/icons/19816dou2.gif)
包含于TObject分支
![](/icons/19816de.gif)
还有
![](/icons/19816yi.gif)
些封装数据结构
![](/icons/19816de.gif)
类
![](/icons/19816dou.gif)
例如:
· TBits
![](/icons/19816dou.gif)
存储了
![](/icons/19816yi.gif)
个布尔型“
![](/icons/19816shuzu.gif)
”
![](/icons/19816de.gif)
类
![](/icons/19816dou2.gif)
· TList
![](/icons/19816dou.gif)
链接列表
![](/icons/19816de.gif)
类
![](/icons/19816dou2.gif)
· TStack
![](/icons/19816dou.gif)
包含
![](/icons/19816yi.gif)
个“后进先出”
![](/icons/19816de.gif)
指针
![](/icons/19816shuzu.gif)
![](/icons/19816de.gif)
类
![](/icons/19816dou2.gif)
· TQueue
![](/icons/19816dou.gif)
包含
![](/icons/19816yi.gif)
个“先进先出”
![](/icons/19816de.gif)
指针
![](/icons/19816shuzu.gif)
![](/icons/19816de.gif)
类
![](/icons/19816dou2.gif)
此外
![](/icons/19816dou.gif)
你还可以发现
![](/icons/19816yi.gif)
些封装了外部对象
![](/icons/19816de.gif)
类
![](/icons/19816dou.gif)
如TPr
![](/icons/19816int.gif)
er
![](/icons/19816dou.gif)
它封装了Windows打印机接口
![](/icons/19816dou.gif)
TRegistry
![](/icons/19816dou.gif)
它封装了底层系统注册及其
![](/icons/19816hanshu.gif)
![](/icons/19816dou2.gif)
TStream是这
![](/icons/19816yi.gif)
分支里其他类型
![](/icons/19816de.gif)
典型例子
![](/icons/19816dou2.gif)
TStream是流对象
![](/icons/19816de.gif)
基类
![](/icons/19816dou.gif)
可以和如磁盘文件、动态内存等等各种存储介质进行读写操作
![](/icons/19816dou2.gif)
可以看到
![](/icons/19816dou.gif)
这
![](/icons/19816yi.gif)
分支中包含许多区别类
![](/icons/19816dou.gif)
对于
![](/icons/19816yi.gif)
个开发者来说
![](/icons/19816dou.gif)
这些类都非常有用
![](/icons/19816dou2.gif)
2.4.2 TPersistent分支
在VCL分层结构中直接在TObject的下
![](/icons/19816de.gif)
是TPersistent
![](/icons/19816dou2.gif)
TPersistent给其下所有
![](/icons/19816de.gif)
类添加了两个重要
![](/icons/19816de.gif)
思路方法:SaveToStream和LoadFromStream
![](/icons/19816dou2.gif)
这些思路方法向对象提供固有特性
![](/icons/19816dou2.gif)
例如:当窗体设计器需要创建DFM文件(存储窗体及其组件信息
![](/icons/19816de.gif)
文件)时
![](/icons/19816dou.gif)
它循环检查窗体
![](/icons/19816de.gif)
组件
![](/icons/19816shuzu.gif)
![](/icons/19816dou.gif)
并对其中所有
![](/icons/19816de.gif)
组件都
![](/icons/19816diaoyong.gif)
SaveToStream思路方法
![](/icons/19816dou2.gif)
每个组件都“知道”如何将改变了
![](/icons/19816de.gif)
属性写入流中(如文本文件)
![](/icons/19816dou2.gif)
反过来
![](/icons/19816dou.gif)
若窗体设计器需要从DFM文件中装入组件属性时
![](/icons/19816dou.gif)
它循环检查窗体
![](/icons/19816de.gif)
组件
![](/icons/19816shuzu.gif)
![](/icons/19816dou.gif)
并对其中所有
![](/icons/19816de.gif)
组件都
![](/icons/19816diaoyong.gif)
LoadFromStream思路方法
![](/icons/19816dou2.gif)
因此
![](/icons/19816dou.gif)
任何TPersistent
![](/icons/19816de.gif)
派生类都有保存状态信息和需要时还原它们
![](/icons/19816de.gif)
能力
![](/icons/19816dou2.gif)
在这
![](/icons/19816yi.gif)
分支中包含
![](/icons/19816de.gif)
类主要有:
· TGraphicsObject
![](/icons/19816dou.gif)
图形对象
![](/icons/19816de.gif)
基类
![](/icons/19816dou.gif)
封装了Windows图形对象:TBrush、TFont、TPen
![](/icons/19816dou2.gif)
· TGraphic
![](/icons/19816dou.gif)
图标、位图、图元文件等能存储和显示可视图像
![](/icons/19816de.gif)
对象
![](/icons/19816de.gif)
基类
![](/icons/19816dou.gif)
封装了TBitmap、TIcon和TMetaFile
![](/icons/19816dou2.gif)
· TStrings
![](/icons/19816dou.gif)
串列表对象
![](/icons/19816de.gif)
基类
![](/icons/19816dou2.gif)
· TClipboard
![](/icons/19816dou.gif)
封装了Windows剪贴板对象
![](/icons/19816dou.gif)
它包含从应用
![](/icons/19816chengxu.gif)
中剪下或复制
![](/icons/19816de.gif)
文本或者图形
![](/icons/19816dou2.gif)
· TCollection、TOwnedCollection和TCollectionItem
![](/icons/19816dou.gif)
包含特殊预定义项
![](/icons/19816de.gif)
索引集
2.4.3 TComponent分支TComponent是所有VCL组件
![](/icons/19816de.gif)
共同祖先
![](/icons/19816dou2.gif)
组件就是在设计时可在窗体中操纵
![](/icons/19816de.gif)
对象
![](/icons/19816dou2.gif)
虽然名为可视组件库
![](/icons/19816dou.gif)
其实VCL中包含
![](/icons/19816de.gif)
大部分对象为非可视化
![](/icons/19816de.gif)
![](/icons/19816dou2.gif)
VCL组件都是固有
![](/icons/19816de.gif)
对象
![](/icons/19816dou.gif)
其功能主要有:
· 可出现在组件面板上并可在窗体设计器中修改
![](/icons/19816dou2.gif)
· 可拥有和管理其他
![](/icons/19816de.gif)
组件
![](/icons/19816dou2.gif)
· 增强
![](/icons/19816de.gif)
流及文件管理能力
![](/icons/19816dou2.gif)
· 可通过New Objects对话框中ActiveX页
![](/icons/19816de.gif)
向导
![](/icons/19816chengxu.gif)
转换成ActiveXControl控件或其他COM对象
![](/icons/19816dou2.gif)
TComponent扮演了
![](/icons/19816yi.gif)
个所有组件都可插入
![](/icons/19816de.gif)
标准“总线”
![](/icons/19816de.gif)
角色
![](/icons/19816dou2.gif)
TComponent通过Name和Owner属性及
![](/icons/19816yi.gif)
些思路方法规定组件在设计时
![](/icons/19816de.gif)
行为
![](/icons/19816dou2.gif)
所有派生于TComponent
![](/icons/19816de.gif)
类都有Name和Owner属性
![](/icons/19816dou2.gif)
Owner属性值
![](/icons/19816dou.gif)
也即组件
![](/icons/19816de.gif)
属主负责该组件对象
![](/icons/19816de.gif)
销毁
![](/icons/19816dou2.gif)
在这
![](/icons/19816yi.gif)
分支中包含
![](/icons/19816de.gif)
类主要有:
· TMainMenu 为窗体提供菜单栏及相应
![](/icons/19816de.gif)
下拉菜单
![](/icons/19816de.gif)
类
![](/icons/19816dou2.gif)
· TTimer 包含Windows API 中
![](/icons/19816de.gif)
计时器
![](/icons/19816de.gif)
类
![](/icons/19816dou2.gif)
· TOpenDialog、TSaveDialog、TFontDialog、TFindDialog、TColorDialog等
![](/icons/19816dou.gif)
是通用Windows对话框类
· TActionList
![](/icons/19816dou.gif)
包含组件或Control控件
![](/icons/19816dou.gif)
如菜单项和按钮
![](/icons/19816de.gif)
动作列表
![](/icons/19816de.gif)
类
![](/icons/19816dou2.gif)
· TScreen
![](/icons/19816dou.gif)
负责管理应用
![](/icons/19816chengxu.gif)
创建
![](/icons/19816de.gif)
窗体和数据模块
![](/icons/19816dou.gif)
当前
![](/icons/19816de.gif)
活跃窗体及其上
![](/icons/19816de.gif)
活跃Control控件、屏幕尺寸和分辨率
![](/icons/19816dou.gif)
应用
![](/icons/19816chengxu.gif)
使用
![](/icons/19816de.gif)
光标和字体等内容
![](/icons/19816de.gif)
类
![](/icons/19816dou2.gif)
2.4.4 TControl分支
所有
![](/icons/19816de.gif)
Control控件都是可视化对象
![](/icons/19816dou.gif)
即它们在运行时可见并可被用户操纵
![](/icons/19816dou2.gif)
且它们都有作为可视化Control控件所共有
![](/icons/19816de.gif)
属性、思路方法和事件
![](/icons/19816dou.gif)
例如Control控件
![](/icons/19816de.gif)
位置、光标、和Control控件关联
![](/icons/19816de.gif)
提示、用来描绘或移动Control控件
![](/icons/19816de.gif)
思路方法、用来响应鼠标动作
![](/icons/19816de.gif)
事件等
![](/icons/19816dou2.gif)
TComponent定义所有组件
![](/icons/19816de.gif)
行为
![](/icons/19816dou.gif)
TControl则进
![](/icons/19816yi.gif)
步定义了所有可视化Control控件
![](/icons/19816de.gif)
行为
![](/icons/19816dou2.gif)
包含画图例程、标准Windows事件及容器特性
![](/icons/19816dou2.gif)
在这
![](/icons/19816yi.gif)
分支中
![](/icons/19816yi.gif)
组较重要
![](/icons/19816de.gif)
类为TGraphicControl
![](/icons/19816dou2.gif)
TGraphicControlControl控件类必须能描绘它们自己并且从不接受焦点
![](/icons/19816dou2.gif)
在这组Control控件中主要包含:
· TImage
![](/icons/19816dou.gif)
![](/icons/19816yi.gif)
种显示图形类图像
![](/icons/19816de.gif)
Control控件
![](/icons/19816dou2.gif)
· TLabel
![](/icons/19816dou.gif)
![](/icons/19816yi.gif)
种在窗体中显示文字
![](/icons/19816de.gif)
Control控件
![](/icons/19816dou2.gif)
· TBevel
![](/icons/19816dou.gif)
![](/icons/19816yi.gif)
种表示边缘斜角
![](/icons/19816de.gif)
Control控件
![](/icons/19816dou2.gif)
· TPa
![](/icons/19816int.gif)
Box
![](/icons/19816dou.gif)
![](/icons/19816yi.gif)
种提供画布
![](/icons/19816de.gif)
Control控件
![](/icons/19816dou.gif)
应用
![](/icons/19816chengxu.gif)
能够使用画布创建及生成显示图像
![](/icons/19816dou2.gif)
注意到这些Control控件包含通用
![](/icons/19816de.gif)
画图例程(画图、重画、使无效等)
![](/icons/19816dou.gif)
但C
![](/icons/19816jiajia.gif)
Builder不必为它们分配窗口句柄
![](/icons/19816dou.gif)
![](/icons/19816yinwei.gif)
它们从不需要接受焦点
2.4.5 TWinControl分支TWinControl是为所有
![](/icons/19816de.gif)
窗口Control控件
![](/icons/19816de.gif)
基类
![](/icons/19816dou2.gif)
下面
![](/icons/19816de.gif)
是窗口Control控件
![](/icons/19816de.gif)
几个特征:
· 窗口Control控件是应用
![](/icons/19816chengxu.gif)
运行时能接受焦点
![](/icons/19816de.gif)
Control控件
![](/icons/19816dou2.gif)
· 也许还有其他Control控件可以显示数据
![](/icons/19816dou.gif)
但是只有当该Control控件是
![](/icons/19816yi.gif)
种窗口Control控件时
![](/icons/19816dou.gif)
用户才能使用键盘来和的交互
![](/icons/19816dou2.gif)
· 窗口Control控件能包含其他Control控件
![](/icons/19816dou2.gif)
· 包含其他Control控件
![](/icons/19816de.gif)
Control控件是父代Control控件
![](/icons/19816dou2.gif)
只有窗口Control控件能够作为
![](/icons/19816yi.gif)
个或多个子Control控件
![](/icons/19816de.gif)
父代Control控件
![](/icons/19816dou2.gif)
· 窗口Control控件有窗口句柄
![](/icons/19816dou2.gif)
除了能接受焦点外
![](/icons/19816dou.gif)
TWinControl和TControl基本相同
![](/icons/19816dou2.gif)
这意味着它们不但包含许多标准Windows事件
![](/icons/19816dou.gif)
同时Windows还必须给它们分配窗口句柄
![](/icons/19816dou2.gif)
这
![](/icons/19816yi.gif)
分支中包含了两大类Control控件
![](/icons/19816dou.gif)
![](/icons/19816yi.gif)
种是由Windows自动描绘
![](/icons/19816de.gif)
(包括TEdit、TListBox、TComboBox、TPageControl等)
![](/icons/19816dou.gif)
另
![](/icons/19816yi.gif)
种是C
![](/icons/19816jiajia.gif)
Builder自定义
![](/icons/19816de.gif)
(包括TDBNavigator、TMediaPlayer、TGauge等)
![](/icons/19816dou2.gif)
不过
![](/icons/19816dou.gif)
你根本不必关心Control控件如何描绘它们自己或如何响应事件
![](/icons/19816dou.gif)
这些都已被C
![](/icons/19816jiajia.gif)
Builder所完全封装
![](/icons/19816dou2.gif)
2.4.6 TControl
![](/icons/19816de.gif)
共同属性
所有可视化Control控件(TControl
![](/icons/19816de.gif)
后裔)共享
![](/icons/19816de.gif)
属性包括:
· 位置、尺寸及排列属性
![](/icons/19816dou2.gif)
· 显示属性
![](/icons/19816dou2.gif)
· 父代属性
![](/icons/19816dou2.gif)
· 导航属性
![](/icons/19816dou2.gif)
· 拖放属性
![](/icons/19816dou2.gif)
· 拖动-停靠属性
![](/icons/19816dou2.gif)
· 动作(Action)属性
![](/icons/19816dou2.gif)
这些属性是从TControl继承而来
![](/icons/19816de.gif)
![](/icons/19816dou.gif)
它们都是发布属性
![](/icons/19816dou.gif)
因此
![](/icons/19816dou.gif)
只对于那些适用
![](/icons/19816de.gif)
组件它们才会出现在对象观察器中
![](/icons/19816dou2.gif)
例如:TImage未发布Color属性
![](/icons/19816dou.gif)
![](/icons/19816yinwei.gif)
它
![](/icons/19816de.gif)
颜色是由它所显示
![](/icons/19816de.gif)
图形决定
![](/icons/19816de.gif)
![](/icons/19816dou2.gif)
1、Action(动作)
属性
Action可以让
![](/icons/19816yi.gif)
些动作共享代码(例如:当工具栏按钮和菜单项所做
![](/icons/19816de.gif)
事相同)
![](/icons/19816dou.gif)
并且依赖于应用
![](/icons/19816chengxu.gif)
![](/icons/19816de.gif)
状况
![](/icons/19816dou.gif)
提供了简单
![](/icons/19816de.gif)
易实现
![](/icons/19816de.gif)
思路方法控制动作
![](/icons/19816de.gif)
有效和否
![](/icons/19816dou2.gif)
· Action指定和Control控件相关
![](/icons/19816de.gif)
动作
![](/icons/19816dou2.gif)
· ActionLink包含和Control控件相关
![](/icons/19816de.gif)
动作链接对象
![](/icons/19816dou2.gif)
2、位置、尺寸及排列属性
这些属性用于定义Control控件在窗体或容器Control控件中位置和尺寸:
· Height
![](/icons/19816dou.gif)
设置垂直尺寸
![](/icons/19816dou2.gif)
· Width
![](/icons/19816dou.gif)
设置水平尺寸
![](/icons/19816dou2.gif)
· Top
![](/icons/19816dou.gif)
设置上边界
![](/icons/19816dou2.gif)
· Left
![](/icons/19816dou.gif)
设置左边界
![](/icons/19816dou2.gif)
· AutoSize
![](/icons/19816dou.gif)
指定Control控件尺寸是否自动地适应其中
![](/icons/19816de.gif)
内容
![](/icons/19816dou2.gif)
· Align
![](/icons/19816dou.gif)
确定Control控件在容器(父代Control控件)内部如何排列
![](/icons/19816dou2.gif)
· Anchor
![](/icons/19816dou.gif)
指定Control控件相对于其父代Control控件
![](/icons/19816de.gif)
定位
![](/icons/19816dou2.gif)
下列属性确定Control控件整个客户区
![](/icons/19816de.gif)
高度、宽度、尺寸:
· ClientHeight
![](/icons/19816dou.gif)
以像素为单位指定Control控件客户区
![](/icons/19816de.gif)
高度
![](/icons/19816dou2.gif)
· ClientWidth
![](/icons/19816dou.gif)
以像素为单位指定Control控件客户区
![](/icons/19816de.gif)
宽度
![](/icons/19816dou2.gif)
对于非可视化组件
![](/icons/19816dou.gif)
这些属性都是不可访问
![](/icons/19816de.gif)
![](/icons/19816dou.gif)
但是C
![](/icons/19816jiajia.gif)
Builder记录下了将组件图标放置在窗体
![](/icons/19816de.gif)
何处
![](/icons/19816dou2.gif)
大多数情况下可以通过操纵Control控件
![](/icons/19816de.gif)
图像或使用排列面板来设置和改变这些属性
![](/icons/19816dou.gif)
同时
![](/icons/19816dou.gif)
也能在运行时改变它们
3、显示属性下面
![](/icons/19816de.gif)
属性控制Control控件
![](/icons/19816de.gif)
常规外观:
· Color
![](/icons/19816dou.gif)
改变Control控件
![](/icons/19816de.gif)
背景色
![](/icons/19816dou2.gif)
· Font
![](/icons/19816dou.gif)
改变文本
![](/icons/19816de.gif)
颜色、类型、样式和尺寸
![](/icons/19816dou2.gif)
· Cursor
![](/icons/19816dou.gif)
指定当光标通过Control控件时
![](/icons/19816dou.gif)
用于表示鼠标指针
![](/icons/19816de.gif)
图像
![](/icons/19816dou2.gif)
· DesktopFont
![](/icons/19816dou.gif)
指定Control控件在写入文本时是否使用Windows图标字体
![](/icons/19816dou2.gif)
4、父代属性
为了在你
![](/icons/19816de.gif)
应用
![](/icons/19816chengxu.gif)
中保持
![](/icons/19816yi.gif)
致
![](/icons/19816de.gif)
外观
![](/icons/19816dou.gif)
你可以通过设置父代属性来使任何Control控件和它们
![](/icons/19816de.gif)
父代Control控件看上去都很相似
![](/icons/19816dou2.gif)
· ParentColor
![](/icons/19816dou.gif)
确定Control控件可以到哪里找到它们
![](/icons/19816de.gif)
颜色信息
![](/icons/19816dou2.gif)
· ParentFont
![](/icons/19816dou.gif)
确定Control控件可以到哪里找到它们
![](/icons/19816de.gif)
字体信息
![](/icons/19816dou2.gif)
· ParentShowH
![](/icons/19816int.gif)
![](/icons/19816dou.gif)
确定Control控件到哪里弄清楚帮助提示应如何显示
5、导航属性下面
![](/icons/19816de.gif)
属性确定用户如何在窗体
![](/icons/19816de.gif)
Control控件的中定位:Caption
![](/icons/19816dou.gif)
包含作为组件标号
![](/icons/19816de.gif)
![](/icons/19816zifu.gif)
串
![](/icons/19816dou2.gif)
要为
![](/icons/19816zifu.gif)
串中
![](/icons/19816de.gif)
![](/icons/19816zifu.gif)
加下划线
![](/icons/19816dou.gif)
需在该
![](/icons/19816zifu.gif)
的前加
![](/icons/19816yi.gif)
连
![](/icons/19816zifu.gif)
(&)
![](/icons/19816dou2.gif)
这类
![](/icons/19816zifu.gif)
被称为快捷键
![](/icons/19816dou2.gif)
用户按下Alt键
![](/icons/19816de.gif)
同时键入加下划线
![](/icons/19816de.gif)
![](/icons/19816zifu.gif)
![](/icons/19816dou.gif)
就可选择Control控件或菜单项
![](/icons/19816dou2.gif)
6、拖放属性
有两个组件属性影响拖放操作:
· DragMode
![](/icons/19816dou.gif)
确定拖动何时开始
![](/icons/19816dou2.gif)
DragMode
![](/icons/19816de.gif)
缺省值是dmManual
![](/icons/19816dou.gif)
应用
![](/icons/19816chengxu.gif)
必须
![](/icons/19816diaoyong.gif)
BeginDrag思路方法来开始拖动
![](/icons/19816dou2.gif)
当DragMode是dmAutomatic时
![](/icons/19816dou.gif)
鼠标键
![](/icons/19816yi.gif)
按下
![](/icons/19816dou.gif)
拖动即开始
![](/icons/19816dou2.gif)
·
DragCursor![](/icons/19816dou.gif)
指定鼠标指针在可拖放组件上方时
![](/icons/19816de.gif)
形状
![](/icons/19816dou2.gif)
7、拖动-停靠属性
下面
![](/icons/19816de.gif)
属性控制拖动-停靠操作:
· Floating
![](/icons/19816dou.gif)
指示Control控件是否为浮动
![](/icons/19816de.gif)
![](/icons/19816dou2.gif)
· DragKind
![](/icons/19816dou.gif)
指定Control控件正进行正常地拖动还是进行停靠操作
![](/icons/19816dou2.gif)
· DragMode
![](/icons/19816dou.gif)
确定Control控件如何开始拖放或拖动-停靠操作
![](/icons/19816dou2.gif)
· FloatingDockSiteClass
![](/icons/19816dou.gif)
当Control控件为浮动
![](/icons/19816de.gif)
时
![](/icons/19816dou.gif)
指定Control控件
![](/icons/19816de.gif)
临时寄主类
![](/icons/19816dou2.gif)
· DragCursor
![](/icons/19816dou.gif)
指定拖动时
![](/icons/19816de.gif)
光标形状
· DockOrientation
![](/icons/19816dou.gif)
指定Control控件和其他同时停靠于相同父代Control控件中
![](/icons/19816de.gif)
Control控件
![](/icons/19816de.gif)
关系
![](/icons/19816dou2.gif)
· HostDockSite
![](/icons/19816dou.gif)
指出Control控件所停靠
![](/icons/19816de.gif)
Control控件
![](/icons/19816dou2.gif)
2.4.7 TControl通用标准事件
VCL中
![](/icons/19816de.gif)
Control控件都定义了
![](/icons/19816yi.gif)
些标准事件
![](/icons/19816dou2.gif)
下面
![](/icons/19816de.gif)
事件是TControl类所声明
![](/icons/19816de.gif)
![](/icons/19816yi.gif)
部分
![](/icons/19816dou.gif)
因此所有TControl
![](/icons/19816de.gif)
派生类都可用:
· _disibledevent=>属性为dkDock
![](/icons/19816de.gif)
方式开始拖动Control控件时触发
![](/icons/19816dou2.gif)
· _disibledevent=>指针并且鼠标指针通过Control控件上方时触发
![](/icons/19816dou2.gif)
· _disibledevent=>指针在Control控件上方且用户双击鼠标时触发
![](/icons/19816dou2.gif)
· _disibledevent=>指针在Control控件上方且用户按下鼠标键时触发
![](/icons/19816dou2.gif)
·OnMouseUp
![](/icons/19816dou.gif)
当鼠标指针在组件上方且用户按下鼠标键后又松开时触发
![](/icons/19816dou2.gif)
2.4.8 TWinControl
![](/icons/19816de.gif)
共同属性
所有
![](/icons/19816de.gif)
窗口Control控件(TWinControl
![](/icons/19816de.gif)
后裔)所共享
![](/icons/19816de.gif)
属性包括:
· 有关Control控件
![](/icons/19816de.gif)
信息
![](/icons/19816dou2.gif)
· 边界样式显示属性
![](/icons/19816dou2.gif)
· 导航属性
![](/icons/19816dou2.gif)
· 拖动-停靠属性
![](/icons/19816dou2.gif)
这些属性是从TWinControl继承而来
![](/icons/19816de.gif)
![](/icons/19816dou.gif)
它们都是发布属性
![](/icons/19816dou.gif)
因此
![](/icons/19816dou.gif)
只对于那些适用
![](/icons/19816de.gif)
组件它们才会出现在对象观察器中
1、常规信息属性常规信息属性包含TWinControl
![](/icons/19816de.gif)
外观信息、客户区尺寸和起点、Windows指定信息、及鼠标信息
![](/icons/19816dou2.gif)
· ClientOrigin
![](/icons/19816dou.gif)
指定Control控件客户区左上角顶点
![](/icons/19816de.gif)
屏幕坐标(以像素为单位)
![](/icons/19816dou2.gif)
这个坐标是由TControl而不是从TWinControl中继承而来
![](/icons/19816de.gif)
![](/icons/19816dou.gif)
是该Control控件
![](/icons/19816de.gif)
父代Control控件
![](/icons/19816de.gif)
屏幕坐标加上其Top和Left属性值
![](/icons/19816dou2.gif)
· ClientRect
![](/icons/19816dou.gif)
返回
![](/icons/19816yi.gif)
个矩形
![](/icons/19816dou.gif)
其Top和Left属性值设置为零
![](/icons/19816dou.gif)
Bottom和Right属性值设置为该Control控件
![](/icons/19816de.gif)
Height和Width属性值
![](/icons/19816dou.gif)
ClientRect也就是等价于Rect(0
![](/icons/19816dou.gif)
0
![](/icons/19816dou.gif)
ClientWidth
![](/icons/19816dou.gif)
ClientHeight)
![](/icons/19816dou2.gif)
· Brush
![](/icons/19816dou.gif)
确定用于绘制Control控件背景
![](/icons/19816de.gif)
颜色和模式
·
Handle![](/icons/19816dou.gif)
提供对Control控件窗口句柄
![](/icons/19816de.gif)
访问途径
![](/icons/19816dou2.gif)
· WindowHandle
![](/icons/19816dou.gif)
提供对Control控件窗口句柄
![](/icons/19816de.gif)
另
![](/icons/19816yi.gif)
种访问途径
![](/icons/19816dou2.gif)
· HelpContext
![](/icons/19816dou.gif)
提供用于
![](/icons/19816diaoyong.gif)
上下文相关
![](/icons/19816de.gif)
联机帮助
![](/icons/19816de.gif)
![](/icons/19816yi.gif)
种上下文相关
![](/icons/19816de.gif)
编号
![](/icons/19816dou2.gif)
· Controls
![](/icons/19816dou.gif)
列出窗口Control控件
![](/icons/19816de.gif)
所有子Control控件
2、边界样式显示属性斜角(Bevel)属性控制应用
![](/icons/19816chengxu.gif)
中窗体或窗口Control控件斜角行、边框、页面
![](/icons/19816de.gif)
外观
![](/icons/19816dou2.gif)
· InnerBevel
![](/icons/19816dou.gif)
指定内斜角为凸起、凹进或平面
![](/icons/19816dou2.gif)
· BevelKind
![](/icons/19816dou.gif)
若Control控件存在斜角边缘、指定斜角
![](/icons/19816de.gif)
类型
![](/icons/19816dou2.gif)
· BevelOuter
![](/icons/19816dou.gif)
指定外斜角为凸起、凹进或平面
![](/icons/19816dou2.gif)
BevelWidth指定内斜角和外斜角
![](/icons/19816de.gif)
宽度
![](/icons/19816dou.gif)
以像素为单位
![](/icons/19816dou2.gif)
· Bevel
![](/icons/19816dou.gif)
以像素为单位
![](/icons/19816dou.gif)
指定内、外斜角
![](/icons/19816de.gif)
宽度
![](/icons/19816dou2.gif)
· BorderWidth
![](/icons/19816dou.gif)
给出或设置Control控件边界宽度
![](/icons/19816dou2.gif)
· BevelEdges
![](/icons/19816dou.gif)
给出或设置Control控件
![](/icons/19816de.gif)
哪些边做斜角处理
![](/icons/19816dou2.gif)
3、导航属性
两个附加
![](/icons/19816de.gif)
属性确定用户如何在窗体的中定位Control控件:
· TabOrder
![](/icons/19816dou.gif)
指出Control控件在它们
![](/icons/19816de.gif)
父代组件中
![](/icons/19816de.gif)
Tab排序
![](/icons/19816dou.gif)
也即用户按Tab键时Control控件收到焦点
![](/icons/19816de.gif)
顺序
![](/icons/19816dou2.gif)
![](/icons/19816chushi.gif)
![](/icons/19816de.gif)
Tab排序就是组件加入到窗体
![](/icons/19816de.gif)
顺序
![](/icons/19816dou.gif)
但是你能通过改变TabOrder来改变这
![](/icons/19816yi.gif)
顺序
![](/icons/19816dou2.gif)
只有当TabStop是true时TabOrder才有意义
![](/icons/19816dou2.gif)
· TabStop
![](/icons/19816dou.gif)
确定用户是否能按下Tab键顺序转至各Control控件
![](/icons/19816dou2.gif)
如果TabStop为true
![](/icons/19816dou.gif)
Control控件具有Tab排序功能
![](/icons/19816dou2.gif)
4、拖动-停靠属性
下面
![](/icons/19816de.gif)
属性管理拖动-停靠操作:
· UseDockManager
![](/icons/19816dou.gif)
指定拖动-停靠操作
![](/icons/19816de.gif)
管理者
![](/icons/19816dou2.gif)
· VisibleDockClientCount
![](/icons/19816dou.gif)
指定放置于窗口Control控件中
![](/icons/19816de.gif)
可见Control控件
![](/icons/19816de.gif)
数目
![](/icons/19816dou2.gif)
· DockManager
![](/icons/19816dou.gif)
指定拖动-停靠操作
![](/icons/19816de.gif)
管理者接口
![](/icons/19816dou2.gif)
·
DockClients![](/icons/19816dou.gif)
给出窗口Control控件中放置
![](/icons/19816de.gif)
Control控件
![](/icons/19816de.gif)
列表
![](/icons/19816dou2.gif)
· DockSite
![](/icons/19816dou.gif)
指定Control控件是否可以作为拖动-停靠操作
![](/icons/19816de.gif)
目标
![](/icons/19816dou2.gif)
2.4.9 TWinControl
![](/icons/19816de.gif)
通用标准事件
下面
![](/icons/19816de.gif)
事件存在于所有从TWinControl派生
![](/icons/19816de.gif)
Control控件(包含所有
![](/icons/19816de.gif)
Windows定义
![](/icons/19816de.gif)
Control控件)
![](/icons/19816dou2.gif)
这些事件是对于存在于所有Control控件的中
![](/icons/19816de.gif)
事件
![](/icons/19816de.gif)
补充
![](/icons/19816dou2.gif)
· _disibledevent=>C
![](/icons/19816jiajia.gif)
Builder中
![](/icons/19816dou.gif)
所有
![](/icons/19816de.gif)
可视化设计工作都在窗体中展开
![](/icons/19816dou.gif)
当你打开C
![](/icons/19816jiajia.gif)
Builder或建立
![](/icons/19816yi.gif)
个新工程时
![](/icons/19816dou.gif)
屏幕上会出现
![](/icons/19816yi.gif)
个空白
![](/icons/19816de.gif)
窗体
![](/icons/19816dou2.gif)
可以用这个窗体来建立应用
![](/icons/19816chengxu.gif)
界面
![](/icons/19816dou.gif)
包括窗口、菜单、对话框等
![](/icons/19816dou2.gif)
通过可视化
![](/icons/19816de.gif)
组件
![](/icons/19816dou.gif)
如按钮、列表框等在窗体上
![](/icons/19816de.gif)
放置和排列
![](/icons/19816dou.gif)
可以设计出用户图形界面
![](/icons/19816de.gif)
外观
![](/icons/19816dou.gif)
而底层
![](/icons/19816de.gif)
工作细节则由C
![](/icons/19816jiajia.gif)
Builder自动管理
![](/icons/19816dou2.gif)
同时
![](/icons/19816dou.gif)
也可以将
![](/icons/19816yi.gif)
些非可视化
![](/icons/19816de.gif)
组件放入窗体的中
![](/icons/19816dou.gif)
以便管理数据库信息
![](/icons/19816dou.gif)
进行计算
![](/icons/19816dou.gif)
管理其他操作等
2.4.11 使用组件大多数可视化组件由开发环境本身提供
![](/icons/19816dou.gif)
放置在组件面板的上
![](/icons/19816dou2.gif)
从组件面板中选择组件并放置到窗体中即可设计应用
![](/icons/19816chengxu.gif)
用户界面
![](/icons/19816dou2.gif)
可视化组件被放入窗体中后
![](/icons/19816dou.gif)
就能调整它们
![](/icons/19816de.gif)
位置、尺寸、及其他设计时属性
![](/icons/19816dou2.gif)
组件面板上
![](/icons/19816de.gif)
C
![](/icons/19816jiajia.gif)
Builder组件以其功能
![](/icons/19816de.gif)
区别分属于区别
![](/icons/19816de.gif)
页
![](/icons/19816dou2.gif)
例如
![](/icons/19816dou.gif)
常用组件
![](/icons/19816dou.gif)
比如那些用来创建菜单、编辑框或按钮
![](/icons/19816de.gif)
组件
![](/icons/19816dou.gif)
位于组件面板中
![](/icons/19816de.gif)
标准(Standard)页
![](/icons/19816dou2.gif)
![](/icons/19816yi.gif)
些简便
![](/icons/19816de.gif)
Control控件比如
![](/icons/19816dou.gif)
计时器、绘图框、媒体播放机、OLE容器Control控件等在系统(
![](/icons/19816System.gif)
)页
乍看的下
![](/icons/19816dou.gif)
C
![](/icons/19816jiajia.gif)
Builder组件和任何其他
![](/icons/19816de.gif)
C
![](/icons/19816jiajia.gif)
类大致
![](/icons/19816yi.gif)
样
![](/icons/19816dou2.gif)
但是
![](/icons/19816dou.gif)
在C
![](/icons/19816jiajia.gif)
Builder组件和大多数
![](/icons/19816de.gif)
C
![](/icons/19816jiajia.gif)
![](/icons/19816chengxu.gif)
员所使用
![](/icons/19816de.gif)
标准C
![](/icons/19816jiajia.gif)
类分层结构的间还是存在
![](/icons/19816yi.gif)
些差异
![](/icons/19816de.gif)
![](/icons/19816dou2.gif)
下面就是其中
![](/icons/19816de.gif)
![](/icons/19816yi.gif)
些差别:
· 所有
![](/icons/19816de.gif)
C
![](/icons/19816jiajia.gif)
Builder组件由TComponent类派生而来
![](/icons/19816dou2.gif)
· 组件大多数
![](/icons/19816de.gif)
应用是通过改变他们
![](/icons/19816de.gif)
属性来使用
![](/icons/19816dou.gif)
而不是作为“基类”以使其子类能够增加或改变其成员
![](/icons/19816hanshu.gif)
![](/icons/19816dou2.gif)
当组件被继承时
![](/icons/19816dou.gif)
通常是给现有
![](/icons/19816de.gif)
事件处理成员
![](/icons/19816hanshu.gif)
加上具体
![](/icons/19816de.gif)
代码
![](/icons/19816dou2.gif)
· VCL组件只可分配在堆中
![](/icons/19816dou.gif)
而不能在栈中(它们必须用
![](/icons/19816new.gif)
操作符来创建)
![](/icons/19816dou2.gif)
组件
![](/icons/19816de.gif)
属性本质上包含运行时类型信息
![](/icons/19816dou2.gif)
· 组件可以被加到C
![](/icons/19816jiajia.gif)
Builder用户界面
![](/icons/19816de.gif)
组件面板中并且可在窗体中操纵
![](/icons/19816dou2.gif)
· 组件通常比标准C
![](/icons/19816jiajia.gif)
类封装得更好
![](/icons/19816dou2.gif)
例如:考虑
![](/icons/19816yi.gif)
个包含
![](/icons/19816yi.gif)
个按钮
![](/icons/19816de.gif)
对话框
![](/icons/19816dou2.gif)
在C
![](/icons/19816jiajia.gif)
Windows应用
![](/icons/19816chengxu.gif)
中
![](/icons/19816dou.gif)
当用户单击按钮时
![](/icons/19816dou.gif)
系统产生
![](/icons/19816yi.gif)
个WM_LBUTTONDOWN消息
![](/icons/19816dou2.gif)
![](/icons/19816chengxu.gif)
必须捕捉这个消息(典型
![](/icons/19816de.gif)
是在Switch状态、消息映象、或响应列表)
![](/icons/19816dou.gif)
并将它分派到可响应这个消息
![](/icons/19816de.gif)
例程中
![](/icons/19816dou2.gif)
C
![](/icons/19816jiajia.gif)
Builder组件可处理大多数
![](/icons/19816de.gif)
Windows消息
![](/icons/19816dou2.gif)
若要响应
![](/icons/19816yi.gif)
个Windows消息时
![](/icons/19816dou.gif)
只需提供
![](/icons/19816yi.gif)
个事件句柄即可