专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »C 教程 » vcl组件:C++ Builder 可视化组件库(VCL)中的对象、组件与控件 »正文

vcl组件:C++ Builder 可视化组件库(VCL)中的对象、组件与控件

来源: 发布时间:星期四, 2009年2月12日 浏览:110次 评论:0


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

\" width=542>




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

2.4.2 TPersistent分支
在VCL分层结构中直接在TObject的下是TPersistentTPersistent给其下所有类添加了两个重要思路方法: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页向导转换成ActiveXControl控件或其他COM对象
TComponent扮演了个所有组件都可插入标准“总线”角色TComponent通过Name和Owner属性及些思路方法规定组件在设计时行为所有派生于TComponent类都有Name和Owner属性Owner属性值也即组件属主负责该组件对象销毁
在这分支中包含类主要有:
· TMainMenu 为窗体提供菜单栏及相应下拉菜单
· TTimer 包含Windows API 中计时器


· TOpenDialog、TSaveDialog、TFontDialog、TFindDialog、TColorDialog等是通用Windows对话框类
· TActionList包含组件或Control控件如菜单项和按钮动作列表
· TScreen负责管理应用创建窗体和数据模块当前活跃窗体及其上活跃Control控件、屏幕尺寸和分辨率应用使用光标和字体等内容

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

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

2.4.6 TControl共同属性
所有可视化Control控件(TControl后裔)共享属性包括:
· 位置、尺寸及排列属性
· 显示属性
· 父代属性
· 导航属性
· 拖放属性
· 拖动-停靠属性
· 动作(Action)属性
这些属性是从TControl继承而来它们都是发布属性因此只对于那些适用组件它们才会出现在对象观察器中例如:TImage未发布Color属性颜色是由它所显示图形决定
1、Action(动作)

属性
Action可以让些动作共享代码(例如:当工具栏按钮和菜单项所做事相同)并且依赖于应用状况提供了简单易实现思路方法控制动作有效和否
· Action指定和Control控件相关动作
· ActionLink包含和Control控件相关动作链接对象
2、位置、尺寸及排列属性
这些属性用于定义Control控件在窗体或容器Control控件中位置和尺寸:
· Height设置垂直尺寸
· Width设置水平尺寸
· Top设置上边界
· Left设置左边界
· AutoSize指定Control控件尺寸是否自动地适应其中内容
· Align确定Control控件在容器(父代Control控件)内部如何排列
· Anchor指定Control控件相对于其父代Control控件定位
下列属性确定Control控件整个客户区高度、宽度、尺寸:
· ClientHeight以像素为单位指定Control控件客户区高度
· ClientWidth以像素为单位指定Control控件客户区宽度
对于非可视化组件这些属性都是不可访问但是CBuilder记录下了将组件图标放置在窗体何处大多数情况下可以通过操纵Control控件图像或使用排列面板来设置和改变这些属性同时也能在运行时改变它们3、显示属性
下面属性控制Control控件常规外观:
· Color改变Control控件背景色
· Font改变文本颜色、类型、样式和尺寸
· Cursor指定当光标通过Control控件时用于表示鼠标指针图像
· DesktopFont指定Control控件在写入文本时是否使用Windows图标字体
4、父代属性
为了在你应用中保持外观你可以通过设置父代属性来使任何Control控件和它们父代Control控件看上去都很相似
· ParentColor确定Control控件可以到哪里找到它们颜色信息
· ParentFont确定Control控件可以到哪里找到它们字体信息
· ParentShowH确定Control控件到哪里弄清楚帮助提示应如何显示
5、导航属性
下面属性确定用户如何在窗体Control控件的中定位:Caption包含作为组件标号要为串中加下划线需在该的前加(&)这类被称为快捷键用户按下Alt键同时键入加下划线就可选择Control控件或菜单项
6、拖放属性
有两个组件属性影响拖放操作:
· DragMode确定拖动何时开始DragMode缺省值是dmManual应用必须BeginDrag思路方法来开始拖动当DragMode是dmAutomatic时鼠标键按下拖动即开始
· DragCursor指定鼠标指针在可拖放组件上方时形状
7、拖动-停靠属性
下面属性控制拖动-停靠操作:
· Floating指示Control控件是否为浮动
· DragKind指定Control控件正进行正常地拖动还是进行停靠操作
· DragMode确定Control控件如何开始拖放或拖动-停靠操作
· FloatingDockSiteClass当Control控件为浮动指定Control控件临时寄主类
· DragCursor指定拖动时光标形状


· DockOrientation指定Control控件和其他同时停靠于相同父代Control控件中Control控件关系
· HostDockSite指出Control控件所停靠Control控件

2.4.7 TControl通用标准事件
VCL中Control控件都定义了些标准事件下面事件是TControl类所声明部分因此所有TControl派生类都可用:
· _disibledevent=>属性为dkDock方式开始拖动Control控件时触发
· _disibledevent=>指针并且鼠标指针通过Control控件上方时触发
· _disibledevent=>指针在Control控件上方且用户双击鼠标时触发
· _disibledevent=>指针在Control控件上方且用户按下鼠标键时触发
·OnMouseUp当鼠标指针在组件上方且用户按下鼠标键后又松开时触发

2.4.8 TWinControl共同属性
所有窗口Control控件(TWinControl后裔)所共享属性包括:
· 有关Control控件信息
· 边界样式显示属性
· 导航属性
· 拖动-停靠属性
这些属性是从TWinControl继承而来它们都是发布属性因此只对于那些适用组件它们才会出现在对象观察器中
1、常规信息属性
常规信息属性包含TWinControl外观信息、客户区尺寸和起点、Windows指定信息、及鼠标信息
· ClientOrigin指定Control控件客户区左上角顶点屏幕坐标(以像素为单位)这个坐标是由TControl而不是从TWinControl中继承而来是该Control控件父代Control控件屏幕坐标加上其Top和Left属性值
· ClientRect返回个矩形其Top和Left属性值设置为零Bottom和Right属性值设置为该Control控件Height和Width属性值ClientRect也就是等价于Rect(00ClientWidthClientHeight)
· Brush确定用于绘制Control控件背景颜色和模式


· Handle提供对Control控件窗口句柄访问途径
· WindowHandle提供对Control控件窗口句柄种访问途径
· HelpContext提供用于上下文相关联机帮助种上下文相关编号
· Controls列出窗口Control控件所有子Control控件
2、边界样式显示属性
斜角(Bevel)属性控制应用中窗体或窗口Control控件斜角行、边框、页面外观
· InnerBevel指定内斜角为凸起、凹进或平面
· BevelKind若Control控件存在斜角边缘、指定斜角类型
· BevelOuter指定外斜角为凸起、凹进或平面BevelWidth指定内斜角和外斜角宽度以像素为单位
· Bevel以像素为单位指定内、外斜角宽度
· BorderWidth给出或设置Control控件边界宽度
· BevelEdges给出或设置Control控件哪些边做斜角处理
3、导航属性
两个附加属性确定用户如何在窗体的中定位Control控件:
· TabOrder指出Control控件在它们父代组件中Tab排序也即用户按Tab键时Control控件收到焦点顺序Tab排序就是组件加入到窗体顺序但是你能通过改变TabOrder来改变这顺序只有当TabStop是true时TabOrder才有意义
· TabStop确定用户是否能按下Tab键顺序转至各Control控件如果TabStop为trueControl控件具有Tab排序功能
4、拖动-停靠属性
下面属性管理拖动-停靠操作:
· UseDockManager指定拖动-停靠操作管理者
· VisibleDockClientCount指定放置于窗口Control控件中可见Control控件数目
· DockManager指定拖动-停靠操作管理者接口
· DockClients给出窗口Control控件中放置Control控件列表
· DockSite指定Control控件是否可以作为拖动-停靠操作目标

2.4.9 TWinControl通用标准事件
下面事件存在于所有从TWinControl派生Control控件(包含所有Windows定义Control控件)这些事件是对于存在于所有Control控件的中事件补充
· _disibledevent=>C Builder中所有可视化设计工作都在窗体中展开当你打开CBuilder或建立个新工程时屏幕上会出现个空白窗体可以用这个窗体来建立应用界面包括窗口、菜单、对话框等
通过可视化组件如按钮、列表框等在窗体上放置和排列可以设计出用户图形界面外观而底层工作细节则由C Builder自动管理同时也可以将些非可视化组件放入窗体的中以便管理数据库信息进行计算管理其他操作等

2.4.11 使用组件
大多数可视化组件由开发环境本身提供放置在组件面板的上从组件面板中选择组件并放置到窗体中即可设计应用用户界面可视化组件被放入窗体中后就能调整它们位置、尺寸、及其他设计时属性
组件面板上CBuilder组件以其功能区别分属于区别例如常用组件比如那些用来创建菜单、编辑框或按钮组件位于组件面板中标准(Standard)页些简便Control控件比如计时器、绘图框、媒体播放机、OLE容器Control控件等在系统()页


乍看的下CBuilder组件和任何其他C类大致但是在CBuilder组件和大多数C员所使用标准C类分层结构的间还是存在些差异下面就是其中些差别:
· 所有CBuilder组件由TComponent类派生而来
· 组件大多数应用是通过改变他们属性来使用而不是作为“基类”以使其子类能够增加或改变其成员当组件被继承时通常是给现有事件处理成员加上具体代码
· VCL组件只可分配在堆中而不能在栈中(它们必须用操作符来创建)组件属性本质上包含运行时类型信息
· 组件可以被加到CBuilder用户界面组件面板中并且可在窗体中操纵
· 组件通常比标准C类封装得更好例如:考虑个包含个按钮对话框在CWindows应用当用户单击按钮时系统产生个WM_LBUTTONDOWN消息必须捕捉这个消息(典型是在Switch状态、消息映象、或响应列表)并将它分派到可响应这个消息例程中
CBuilder组件可处理大多数Windows消息若要响应个Windows消息时只需提供个事件句柄即可

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: