初次做控件(双滑块滑杆),向各位求教!(200分)

  • 主题发起人 主题发起人 fenghualiang
  • 开始时间 开始时间
F

fenghualiang

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做一个带两了滑块的滑杆控件,用于选择一个区间。
与TTrackBar相比应去掉其Position属性,新建StartPosition和
EndPosition用以指明区间的起始和终止位置,还需要添加一个滑块。
滑杆有现成的类可以画出,但滑块却似乎要自己画。
我有一些思路,但不知哪种方案更可行,请各位高手指点迷津。

1、从TTrackBar继承,但无法隐藏其Position属性,所以这种方法似乎不可行。
2、从TWinControl继承,用两个TShap或TSpeedButton做滑块。
3、从TCustomControl继承,自己画出两个滑块。
4、从TGraphicControl继承,自己画出控件外行。

请各位给我讲讲各种方法的利弊,谢谢!
 
最好的办法是从TWinControl继承,将TTrackBar的代码拷贝一份,改一改,加一加。OK了
 
TTrackBar的代码实际上只是封装了Windows的TRACKBARCLASS,
几乎没有做任何事情。但TRACKBARCLASS只能画出一个滑块,所
以不能照搬,滑块还是得自己做。如果从TWinControl继承就只能
用TShap或TSpeedButton之类的东东做滑块了,不知我分析得是否
正确,请各位指教!
 
>>是什么意思?
我用试着从TGraphicControl继承,结果遇到一个问题:
当我改变Width属性时控件不能自动重绘,但改变Height时又能自动重绘。
我映射了消息WM_SIZE想在它的处理函数里重绘,
MESSAGE_HANDLER(WM_RESIZE,TMessage,OnResize);
但这个函数从来不被调用。为什么?
请各位指教。
 
不是应该在WM_Paint 的 Handler 中绘图吗?大小变了调用Invalidate就行了吧?
 
从TGraphiControl继承是对的
从TTrackBar继承肯定不行。
如果从TWinControl或TCoustomControl继承则可获得窗口句柄,
支持键盘操作,但占用更多的资源。双滑快似乎不好定义键盘
操作,所以没必要。
从TGraphicControl继承的控件在大小改变时会自动调用Paint
方法,不用处理WM_SIZE消息.
 
我弄错了,不用处理SIZE消息。
谢谢大家!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部