如何创建自己的控件?
我想创建类似于TCheckBox的新控件,用于实现开关状态。请问如何做?
想要实现的属性有
Caption
bool量
image*2
(停用时以红色显示,运行时以绿色显示,由bool量控制)
问题点数:20、回复次数:10Top
1 楼fafj(什么都不像)回复于 2001-06-20 22:57:00 得分 0
是否能做到在form上也显示出来呢?
我想在form上显示出开关状态Top
2 楼fafj(什么都不像)回复于 2001-06-20 23:10:00 得分 0
要么或者从StaticText创建?Top
3 楼fafj(什么都不像)回复于 2001-06-20 23:12:00 得分 0
为什么没有高手帮啊?
我以前从来都是给分的啊,老天有眼啊!Top
4 楼oldbone(程序阿Q)回复于 2001-06-21 08:07:00 得分 0
需要获得这个控件的句柄吗?Top
5 楼whyjld(白痴)回复于 2001-06-21 08:58:00 得分 0
用个TIMAGE不就行了?
或者从TIMAGE继承一个。Top
6 楼fafj(什么都不像)回复于 2001-06-21 23:22:00 得分 0
但是image没有caption属性啊
to oldbone
不用句柄,只要能给bool量赋值,然后想再自己造个函数根据bool量显示
好像很麻烦?Top
7 楼wolfboy(峰鸟)回复于 2001-06-22 01:40:00 得分 20
我想可以用TCheckBox+TImage做成一个聚集控件
思路如下
从TCustomControl类派生
动态生成TCheckBox和TImage
由TCheckBox的事件改变TImage的图像
想注意一点的是,要重载CreateWnd()
调用基类的CreateWnd(),表明组件已全部生成完毕后才能做TCheckBox和TImage的初始化工作Top
8 楼wolfboy(峰鸟)回复于 2001-06-22 17:43:00 得分 0
昨天我又回去想了一下,最好从wincontrol派生比较好,这个有窗口句柄Top
9 楼fafj(什么都不像)回复于 2001-06-22 23:47:00 得分 0
那么能否做到,不显示出CheckBox的选择框?
哦,我的目的是显示出开关目前的状态,不用改变它,所以大概不用句柄重载了。
不过还是希望您继续按这个思路往下说:)
加分了Top
10 楼wolfboy(峰鸟)回复于 2001-06-26 12:14:32 得分 0
可以不显示的,只要在初始化时,checkbox的parent不指定或相应的visable为false就行了,这样可以另外指定属性来控制,可是既然不想显示,那何必用checkbox,直接指定某个属性来改变状态不就行了,显示目前状态可用图标或其它图像.
至于为什么要重载WndCreate是因为这类控件构造函数中初始化时要判断基类句柄是否已经准备好,否则会出现错误"没有窗口句柄",这样初始化的其它控件没有地方放,只有当基类的WndCreate已经执行完毕,才能实始化
我想要不你直接从TImage派生,这们不用重载任何东西,只要增加相应事件属性就可以了Top




