┊
linux社区
┊
爱心援助
┊
Linux认证
┊
系列教程
┊
业界动态
┊
站务新闻
┊
公司招聘
┊
建议留言
┊
网址大全
┊
LPI专题
┊
CISCO专题
设为首页
加入收藏
管理团队
联盟首页
入门区
安装配置
使用技巧
桌面应用
开发区
WEB开发
数据库
内核研究
SHELL
软件开发
软件下载
网络区
服务器
网络应用
网络安全
UNIX区
UNIX入门
UNIX提高
C专题
JAVA专题
嵌入应用
开发语言
PHP
JSP
ASP
ASP.NET
JAVA
C/C++/C#
PERL
JavaScript
Basic
Delphi
您的位置:
首页
>
开发语言
>
c/c++/c#
>
栏目导栏
php
JSP
ASP
asp.net
JAVA
c/c++/c#
perl
JavaScript
Basic
Delphi
资料搜索
标题
全文
作者
热门文章
·
Windows/Linux下配置Eclipse+C
·
VC++(Ctime日期函数)应用
·
c语言static与extern的用法
·
C#发送Email邮件方法总结
·
typedef struct和struct的区别
·
C/C++对文件操作
·
struct的初始化,拷贝及指针成
·
C常用算法程序实例-线性代数方
·
C语言入门实例 switch使用
·
c++二叉树实现源代码
·
对初学者的建议:如何学习C语言
·
使用C/C++扩展Python
·
C++ Builder 处理控件中的文本
·
一道C#面试题目引发的思考
·
C++ Builder 创建程序包和DLL方
最新文章
·
使用C/C++扩展Python
·
C语言入门实例 switch使用
·
在C#里实现DATAGRID的打印预览
·
如何使用 Visual C# .NET 创建
·
C#发送Email邮件方法总结
·
一道C#面试题目引发的思考
·
c语言艺术清屏
·
c语言static与extern的用法
·
大数的阶乘算法
·
C#编码好习惯
·
构造函数,复制构造函数
·
typedef struct和struct的区别
·
struct的初始化,拷贝及指针成
·
超强的指针学习笔记推荐
·
STL中erase方法对链表类容器的
输入您的搜索字词
提交搜索表单
Web
xxlinux.com
C++ Builder 在控件中加入图形
[ 作者: 加入时间:2007-11-02 13:31:11 来自:
Linux联盟收集整理
]
5.4 在控件中加入图形
有一些窗口控件可让你定制其绘制的方式。这些控件包括列表框、组合框、菜单、标题、标签控制、列表视图、状态栏、树视图及工具栏等。在运行时,它们由其属主(通常是窗体)绘制,而不是使用Windows标准的绘制方式。这些属主绘制控件最常用于提供图形以代替文本项或附加给文本项。有关使用属主绘制给菜单添加图像信息,请参见4.7.2节中的“在菜单项中加入图像”。
所有的属主绘制控件都包含项列表。通常,这些列表是Windows显示为文本的串的列表,或是包含Windows显示为文本的串的对象列表。可为每个项分配一个对象,这样,当绘制项时就可方便地使用这些对象。
通常,在C++Builder中创建属主绘制控件包括下列步骤:
1) 指定控件为属主绘制控件。
2) 给串列表增加图形对象。
3) 绘制这些属主绘制的项。
5.4.1 指定控件为属主绘制控件
要定制控件的绘制,必须为在需要时画出控件图像提供事件处理程序。一些控件可自动接受这些事件。例如,列表视图、树视图及工具栏都会在绘制过程的不同阶段收到这些事件,同时并不需要设置任何属性。这些事件的名字一般为OnCustomDraw或OnAdvancedCustomDraw。
其他控件,在接受属主绘制事件之前需要设置属性。列表框、组合框、标题控件及状态栏有一个Style属性。它确定控件是使用缺省绘制方式(称为standard)还是属主绘制方式。网格使用DefaultDrawing属性来启用或禁用缺省绘制方式。列表视图和标签控制有一OwnerDraw属性用于启用或禁用缺省绘制方式。
列表框和组合框有附加的属主绘制样式,称为fixed和variable,如表5-2中所述。其他控件则总是fixed样式,虽然其包含文本的项的大小可能是多样的,但在绘制控件之前各项的大小已被决定。
5.4.2 给串列表增加图形对象
每个串列表都有将一个对象列表附加于其串列表上的能力。
例如,在一个文件管理器应用程序中,可能需要在驱动器盘符边附加位图以指示驱动器的类型。要完成此任务,首先需将位图图像加入应用程序中,然后将图像放到串列表中适当的位置,如下所述。
1.将图像加入应用程序
图像控件是不可视的包含图形化图像的控件,如位图。可使用图像控件在窗体中显示图形化图像。还可使用它们来保留应用程序将会用到的隐藏图像。例如,可以为属主绘制控件将位图存储在隐藏的图
像控件中,像这样:
1) 将图像控件加入主窗体。
2) 设置它们的Name属性。
3) 将每个图像控件的Visible属性设为false。
4) 在对象观察器中使用图片编辑器将各图像控件的Picture属性设为需要的位图。
运行应用程序时图像控件不可见。
2.将图像加入串列表
当在应用程序中加入图形化图像后,可将它们与串列表中的串联系起来。可在加入串的同时加入这些对象或将其与现有的串联系起来。若所有需要的数据都可用,则首选的方法是在加入串的同时加入这些对象。
下例说明如何将图像加入串列表。这是一个文件管理器应用程序的一部分,在各驱动器的有效盘符旁,加入位图以指示各驱动器类型。OnCreate事件处理程序为:
3.绘制属主绘制的项
当通过设置属性或提供定制的绘制事件处理程序指定控件为属主绘制控件时,Windows不再在屏幕中绘制该控件。它会为控件的各可见项产生事件。应用程序处理这些事件来绘制这些项。要绘制属主绘制控件中的项,对控件中各可见项进行下列步骤。对所有的项使用统一的事件处理程序。
1) 若需要则设置该项的尺寸。同样大小的项(例如:样式为lsOwnerDrawFixed的列表框)不需要调整大小。
2) 绘制该项。
5.4.3 调整属主绘制项的大小
在应用程序绘制可变的属主绘制控件中的各个项之前,Windows产生一个measure-item事件。这个measure-item事件通知应用程序控件在哪里显示项。
Windows确定项的大小(通常其大小刚够以当前字体显示该项文本)。应用程序可处理事件并改变Windows选择的矩形区域。例如,若计划用位图代替该项文本,可将矩形区域改为位图的大小。若要同时显示位图和文本,将矩形区域调整为足够显示两者。要改变属主绘制项的大小,可为属主绘制控件的measure-item事件分配处理程序。根据控件的不同,measure-item事件的名字也不相同。列表框和组合框使用OnMeasureItem。网格则没有measure-item事件。
这个调整大小的事件有两个重要的参数:项的索引值及项的大小。项的大小是变量,应用程序可增大或减小它。后面项的位置依赖于前面项的大小。例如,在一个可变的属主绘制列表框中,若应用程序指定第一个项的高度为5个像素,则第2项由第6个像素向下开始显示等等。在列表框和组合框中,应用程序只能改变项的高度。项的宽度总是控件的宽度。
属主绘制网格在绘制时不能改变其单元的大小。各行和列的大小在绘制之前由ColWidths及RowHeights属性决定。下列代码,为属主绘制列表框的OnMeasureItem事件处理程序,其中将各列表项高度增加以适应与之关联的位图。
注意
必须将项的类型转换为与串列表的Objects属性值的类型一致。Objects是一个TObject类型的属性,所以它能够存放任意对象。当从数组中获取对象时,需要将它们的类型转换为与实际项类型一致。
5.4.4 绘制各属主绘制项
当应用程序需要绘制或重画一个属主绘制控件时,Windows为控件中各可见项产生draw-item事件。根据控件的不同,项还可能会作为一个整体或子项收到绘制事件。要在一个属主绘制控件中绘制各项,可为该控件的draw-item事件分配处理程序。
属主绘制控件中的这类事件的名字通常以下列方式开头:
· OnDraw,如OnDrawItem或OnDrawCell。
· OnCustomDraw,如OnCustomDrawItem。
· OnAdvancedCustomDraw,如OnAdvancedCustomDrawItem。
draw-item事件包含的参数可用于识别要绘制的项,包含项的矩形区域及一些项的相关信息(如项是否有焦点)。应用程序通过在给定的矩形区域中绘制适当的项来处理各个事件。例如,下列代码说明如何绘制列表框中带有关联位图的项。它是列表框的OnDrawItem事件处理程序:
Linux联盟
收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站
Linux论坛
讨论
【
评论
】【
加入收藏夹
】【
大
中
小
】【
打印
】【
关闭
】
※ 相关链接
·
C++ Builder 处理控件中的文本
(2007-11-02 13:29:39)
·
C++ Builder 实现控件的拖动-停靠操作
(2007-11-02 13:28:44)
·
C++ Builder 实现控件拖放操作
(2007-11-02 13:28:01)
·
D7中使用D5 D6的控件
(2007-11-02 13:05:25)
·
使用Delphi快速开发ActiveX控件
(2007-11-02 12:05:54)
·
delphi设置控件透明
(2007-11-01 10:48:50)
·
无需编程直接利用图形界面导入导出的方法
(2007-10-31 18:09:51)
·
Delphi中树型控件的使用技巧
(2007-10-30 15:41:50)
·
使控件在设计期间也响应消息
(2007-10-30 15:15:08)
·
delphi动态创建控件
(2007-10-30 15:07:56)
© CopyRight 2006-2009 xxlinux.com.Inc All Rights Reserved
Powered by xxlinux.com