从TCommonCalendar继承的一个控件(200分)

  • 主题发起人 主题发起人 小笨狐狸
  • 开始时间 开始时间

小笨狐狸

Unregistered / Unconfirmed
GUEST, unregistred user!
我想做一个类似于TDateTimePicker的控件,可是不知道从哪里下手,我搞不清楚TDateTimePicker
是怎么实现的?哪位大虾拉兄弟一把,头让我两天做出来,我都急的睡不着觉了!!
小弟刚来,无以为谢,愿将200分全部奉送!!!
 
当然是从源码入手了!
问题是你想实现什么样的效果啊?
 
看看VCL 源码, 但如果你对于面向对象的基本概念如:
类的派生/继承/多态等还不太清楚,先不要考虑写控件.
 
我的主要问题是对TDateTimePicker的实现原理不清楚,我想要做的控件(MyDatetimePicker)
与TDateTimePicker相比,效果如下:
1 编辑框的底色要变
2 编辑框右边的按钮图案要变
3 标题栏宽度要变
4 标题栏左右两边的递增、递减按钮的大小要变
5 “星期日 星期一…”要变为“一 二…”
6 “今天”要去掉,代之以一个Label,标题为“今天”,点击之后的效果跟点击TDateTimePicker
的“今天”一致

 
TDateTimePicker师标准win32控件。可以说vcl根本就没有实现它。vcl中只是确定它为标准类而已
 
看了一下源码,好象够呛,TDateTimePicker的源码里没有体现任何的界面操作:(
因为它用了一个现成的东西,在它的CreateParams里有这么一句:
CreateSubClass(Params, DATETIMEPICK_CLASS);
而帮助里对CreateSubClass的解释是:
Creates a windowed control derived from an existing Windows window class.
CreateSubClass allows VCL controls to create registered Windows controls.
也就是说DATETIMEPICK_CLASS代表了一个已注册的窗口类别,在Commctrl里有它的定义:
const
DATETIMEPICK_CLASS = 'SysDateTimePick32';
看来这是个系统的东东,应该不是VCL的,所以要修改它恐怕……

建议你参考一下TCalendar的源码自己写一个:)
C:/Program Files/Borland/Delphi5/Source/Samples/calendar.pas

看看大侠们还有什么高见吧。
 
多人接受答案了。
 
后退
顶部