急需一制作组件实例!!!!!!!!!

时间:2021-10-20 00:43:44
我刚开始学bcb第三天,想做一个组件,但不知道从何下手,请高手赐教一个实例,越简单越好!

5 个解决方案

#1


39.3 如何创建组件
组件可以是在设计时想操作的任何程序单元( program element)。创建组件意味着从已有的类派生新
类。可以从任何一个已有的组件派生新组件,但通常通过下列步骤创建组件:
• 修改已有的控件。
• 创建窗口控件。
• 创建图形控件。
• 子类Wi n d o w s控件。
• 创建不可视组件。
表3 9 - 1概括了可以作为起点的组件和类。
表39-1 组件创建的起点
要做的事开始类型
修改已有的组件任何已有的组件,如T B u t t o n、T L i s t B o x或抽象组件类型,如T C u s t o m L i s t B o x
创建窗口控件T Wi n C o n t r o l
创建图形控件T G r a p h i c C o n t r o l
子类Wi n d o w s控件任何Wi n d o w s控件
创建不可视组件T C o m p o n e n t
也可以派生不是组件的类和在窗体中无法操作的类, C + + B u i l d e r中有许多这样的类,如T R e g I n i F i l e
和T F o n t。
39.3.1 修改已有的控件
创建组件最简单的方法就是定制已有的组件。可以从C + + B u i l d e r提供的任何组件派生新组件。
有些控件,例如列表框和表格( g r i d),在基本样式中( basic theme)有多个变种。在这种情形下,
V C L提供用于派生定制类型的抽象类(它们的名字中嵌有c u s t o m字样,如T C u s t o m G r i d)。
例如,可能想创建特殊的列表框,它没有标准的T L i s t B o x类所有的一些属性。由于你无法消除(隐
藏)从祖先类继承的属性,不得不从在层次结构中处于T L i s t B o x之上的类派生组件。为了使你无需从抽
象类T Wi n C o n t r o l派生组件而不得不重新实现所有的列表框函数, V C L提供了T C u s t o m L i s t B o x,它实现了
列表框的属性,但并未全部发布它们。当从类似T C u s t o m L i s t B o x的抽象类派生组件时,只需发布需要的
属性,对于其他属性,可以让它们处于原来的保护级别。
第4 1章解释如何发布继承的属性,第4 7章和第4 9章给出了修改已有控件的例子。
下载
39.3.2 创建窗口控件
窗口控件在运行时显现出来,用户可以与之交互。每个窗口控件均有一个窗口句柄,通过访问它的
H a n d l e属性,Wi n d o w s可以标识和操作控件。句柄可以作为参数传给Windows API函数,还允许控件接受
输入焦点。
所有的窗口控件都是从T Wi n C o n t r o l类派生的,其中包括大多数标准的Wi n d o w s控件,如按钮、列表
框、编辑框。当想从T Wi n C o n t r o l派生原始控件(与任何已有的控件均没有关系的控件)时,可以使用
C + + B u i l d e r提供的T C u s t o m C o n t r o l组件。T C u s t o m C o n t r o l是个专用的窗口控件,可以简化复杂的可视图像
的绘制。
第4 9章给出了创建窗口控件的例子。
39.3.3 创建图形控件
如果控件不需要输入焦点,可以将它设计为图形控件。图形控件类似于窗口控件,但是它没有窗口
句柄,占用较少的系统资源。像T L a b e l这样从不需要输入焦点的组件就是图形控件。虽然这些控件不能
获得输入焦点,但可以响应鼠标消息。
C + + B u i l d e r支持通过T G r a p h i c C o n t r o l组件创建定制控件。T G r a p h i c C o n t r o l是个从T C o n t r o l派生的抽
象类。虽然可以从T C o n t r o l直接派生控件,但从T G r a p h i c C o n t r o l开始要好一些。T G r a p h i c C o n t r o l提供了
画图用的画布,并且处理W M _ PA I N T消息,你所要做的就是重载P a i n t方法。
第4 8章给出了创建图形控件的例子。
39.3.4 子类Wi n d o w s控件
在传统的Wi n d o w s编程中,通过定义新的窗口类( window class),然后在Wi n d o w s中注册它来创建
定制控件。窗口类(类似于面向对象编程中的类或对象)包含同类实例的共享信息,可以在已有的窗口
类基础上建立新的窗口类,这种技术称之为子类( s u b c l a s s i n g)。这样,可以将控件放在动态链接库
(D L L)中,如同大多数Wi n d o w s标准控件一样,然后提供一个接口。
可以用C + + B u i l d e r创建组件“包裹( w r a p p e r)”任何已有的窗口类。因此,如果已经有了一个定制
控件库,并且想在C + + B u i l d e r应用程序中使用它,那么可以创建行为表现像你的控件一样的C + + B u i l d e r
组件,然后像对待任何其他组件那样从他们派生新控件。
有关子类Wi n d o w s控件技术的例子,可以查看S T D C T L S头文件中的组件,该头文件描述了Wi n d o w s
标准控件,如T E d i t。
39.3.5 创建不可视组件
不可视组件常常用于诸如数据库( T D a t a S e t)和系统时钟(T Ti m e r)这样的单元的接口,或作为对
话框(T C o m m o n D i a l o g及其后代)的占位符( p l a c e h o l d e r)。编写这样的组件与编写可视组件大同小异。
不可视组件可以直接从T C o m p o n e n t派生,T C o m p o n e n t是所有组件的抽象基类。
下载

#2


谢谢gloom(《一丈丝纶一寸钩,一人独占一江秋》) 
但是我想问一下上面介绍的例子的下载地址
劳驾

#3


upself

#4


我上面的内容摘自《C++Builder 5 开发人员指南》,网上下载的地方有很多,或者在本栏目搜索一下就可以了

#5


谢谢gloom(《一丈丝纶一寸钩,一人独占一江秋》) 
偶试试

#1


39.3 如何创建组件
组件可以是在设计时想操作的任何程序单元( program element)。创建组件意味着从已有的类派生新
类。可以从任何一个已有的组件派生新组件,但通常通过下列步骤创建组件:
• 修改已有的控件。
• 创建窗口控件。
• 创建图形控件。
• 子类Wi n d o w s控件。
• 创建不可视组件。
表3 9 - 1概括了可以作为起点的组件和类。
表39-1 组件创建的起点
要做的事开始类型
修改已有的组件任何已有的组件,如T B u t t o n、T L i s t B o x或抽象组件类型,如T C u s t o m L i s t B o x
创建窗口控件T Wi n C o n t r o l
创建图形控件T G r a p h i c C o n t r o l
子类Wi n d o w s控件任何Wi n d o w s控件
创建不可视组件T C o m p o n e n t
也可以派生不是组件的类和在窗体中无法操作的类, C + + B u i l d e r中有许多这样的类,如T R e g I n i F i l e
和T F o n t。
39.3.1 修改已有的控件
创建组件最简单的方法就是定制已有的组件。可以从C + + B u i l d e r提供的任何组件派生新组件。
有些控件,例如列表框和表格( g r i d),在基本样式中( basic theme)有多个变种。在这种情形下,
V C L提供用于派生定制类型的抽象类(它们的名字中嵌有c u s t o m字样,如T C u s t o m G r i d)。
例如,可能想创建特殊的列表框,它没有标准的T L i s t B o x类所有的一些属性。由于你无法消除(隐
藏)从祖先类继承的属性,不得不从在层次结构中处于T L i s t B o x之上的类派生组件。为了使你无需从抽
象类T Wi n C o n t r o l派生组件而不得不重新实现所有的列表框函数, V C L提供了T C u s t o m L i s t B o x,它实现了
列表框的属性,但并未全部发布它们。当从类似T C u s t o m L i s t B o x的抽象类派生组件时,只需发布需要的
属性,对于其他属性,可以让它们处于原来的保护级别。
第4 1章解释如何发布继承的属性,第4 7章和第4 9章给出了修改已有控件的例子。
下载
39.3.2 创建窗口控件
窗口控件在运行时显现出来,用户可以与之交互。每个窗口控件均有一个窗口句柄,通过访问它的
H a n d l e属性,Wi n d o w s可以标识和操作控件。句柄可以作为参数传给Windows API函数,还允许控件接受
输入焦点。
所有的窗口控件都是从T Wi n C o n t r o l类派生的,其中包括大多数标准的Wi n d o w s控件,如按钮、列表
框、编辑框。当想从T Wi n C o n t r o l派生原始控件(与任何已有的控件均没有关系的控件)时,可以使用
C + + B u i l d e r提供的T C u s t o m C o n t r o l组件。T C u s t o m C o n t r o l是个专用的窗口控件,可以简化复杂的可视图像
的绘制。
第4 9章给出了创建窗口控件的例子。
39.3.3 创建图形控件
如果控件不需要输入焦点,可以将它设计为图形控件。图形控件类似于窗口控件,但是它没有窗口
句柄,占用较少的系统资源。像T L a b e l这样从不需要输入焦点的组件就是图形控件。虽然这些控件不能
获得输入焦点,但可以响应鼠标消息。
C + + B u i l d e r支持通过T G r a p h i c C o n t r o l组件创建定制控件。T G r a p h i c C o n t r o l是个从T C o n t r o l派生的抽
象类。虽然可以从T C o n t r o l直接派生控件,但从T G r a p h i c C o n t r o l开始要好一些。T G r a p h i c C o n t r o l提供了
画图用的画布,并且处理W M _ PA I N T消息,你所要做的就是重载P a i n t方法。
第4 8章给出了创建图形控件的例子。
39.3.4 子类Wi n d o w s控件
在传统的Wi n d o w s编程中,通过定义新的窗口类( window class),然后在Wi n d o w s中注册它来创建
定制控件。窗口类(类似于面向对象编程中的类或对象)包含同类实例的共享信息,可以在已有的窗口
类基础上建立新的窗口类,这种技术称之为子类( s u b c l a s s i n g)。这样,可以将控件放在动态链接库
(D L L)中,如同大多数Wi n d o w s标准控件一样,然后提供一个接口。
可以用C + + B u i l d e r创建组件“包裹( w r a p p e r)”任何已有的窗口类。因此,如果已经有了一个定制
控件库,并且想在C + + B u i l d e r应用程序中使用它,那么可以创建行为表现像你的控件一样的C + + B u i l d e r
组件,然后像对待任何其他组件那样从他们派生新控件。
有关子类Wi n d o w s控件技术的例子,可以查看S T D C T L S头文件中的组件,该头文件描述了Wi n d o w s
标准控件,如T E d i t。
39.3.5 创建不可视组件
不可视组件常常用于诸如数据库( T D a t a S e t)和系统时钟(T Ti m e r)这样的单元的接口,或作为对
话框(T C o m m o n D i a l o g及其后代)的占位符( p l a c e h o l d e r)。编写这样的组件与编写可视组件大同小异。
不可视组件可以直接从T C o m p o n e n t派生,T C o m p o n e n t是所有组件的抽象基类。
下载

#2


谢谢gloom(《一丈丝纶一寸钩,一人独占一江秋》) 
但是我想问一下上面介绍的例子的下载地址
劳驾

#3


upself

#4


我上面的内容摘自《C++Builder 5 开发人员指南》,网上下载的地方有很多,或者在本栏目搜索一下就可以了

#5


谢谢gloom(《一丈丝纶一寸钩,一人独占一江秋》) 
偶试试