初学开发控件,想修改TDateTimePicker控件,让他显示阴历。我应该怎么做?帮帮菜鸟吧! ( 积分: 100 )

  • 主题发起人 主题发起人 斑点狗
  • 开始时间 开始时间

斑点狗

Unregistered / Unconfirmed
GUEST, unregistred user!
阴阳历转换的算法我知道了,只是不知道该如何才能让算出来的结果显示出来。应该修改或添加哪些事件和属性?
 
阴阳历转换的算法我知道了,只是不知道该如何才能让算出来的结果显示出来。应该修改或添加哪些事件和属性?
 
直接修改TDateTimePicker的思路是不对的,因为这个控件是从WinAPI中直接导出来的。如果要写个新的控件应该从TPanel开始写。
 
我感觉也是这样,如果直接改没下手的地方。直接写吗为什么要从TPanel来开始呢?请仔细讲讲,分不够再加,只能要学到东西就行
 
关于农历日期算法,看看网易的163邮箱里面的万年历的方法,里面的东西很多的。
还有借鉴第三方控件的实现方法,有这样的第三方控件。
 
想修改TDateTimePicker控件,让他显示阴历???
不可能实现!
自己写一个, 继承与 TCustomControl 就可以了。。。
 
我是这样想的,不知道可行不可行,请大家看看
不做DateTimePicker那样的了,新控件上面是一个Edit和一个SpeedButton,重载SpeedButton的OnMouseDown事件来显示出下面的能显示阴历的控件。可是我是自己照人家的写一个好,还是直接用?感觉好像不能直接用,那个控件不是TCustonXXXX类的。
 
你是做 TDateTimePicker,使用需要的ropDrown, 必须用两个 控件, 一个主控件, 就是你的 所谓是 speedbutton(当然我不建议用 TSpeedButton), 一个 是 DropDown Control, 就是 你 的 所谓 的 中文日历控件,

难度还是有的, 第一。 你 是 中文日历 的 paint, 要小心处理, 还有 mouse 的 消息;
第二: DropDown, CloseUp, 建议你用 CM_CancelMode 消失处理, 如果用 Mouse Hook就比较复杂(不过两者都可以)
 
那我用Combobox控件,控制它的DropDown和CLoseUp,当收到这两个消息时对中文日历控件Visible 和 Visible := false;处理,这时什么时候要处理日历的Paint?中文日历本身就有Paint事件,我是不是只要继承就行了?
 
用ComBoBox 是个 好方法(我也这样用,不过是自己写的ComboBox), 不能简单用visible
用 showWindow, 或者 setwindowpos, 因为需要 Topmost。
中文日历有paint, 那就方便了,建议你override CreateParamas 就可以了。

注意, ComBoBox 需要setFocus 才能收到 CM_CANCELMODE,
 
那Combobox要在DropDown时把那个空白的列表换成日历,那它继承自TCustomComboBox还是继承自TCustomCombo?我现在有点晕了,对VCL的内部没什么了解,现在在看Delphi自己的控件源码和rxlib的源码,可是还是不明白Combobox控件是什么时候有的空白下拉表的,应该如何继承,以及以后如何按自已的需要来写控件,一头雾水[:(]
 
不能用 vcl 的 Combobox , (对不起,之前我说错了)要自己写个, 或者用 改写过的 TEdit 也可以呀,你看看 rxlib 的代码,细心看,有的,
 
还好我及时发现了不能用Combobox来写,现在在用TEdit+TSpeedButton来当Combobox的
 
其实就用 继承 TEdit 也可以的, 不用 TSpeedButton, TEit 可以用
procedure WMNCCalcSize(var Message: TWMNCCalcSize); message WM_NCCALCSIZE;
来设定Client 区域的,
例子
procedure TmslGrid.WMNCCalcSize(var Message: TWMNCCalcSize);
begin
inherited;
with Message.CalcSize_Params^.rgrc[0] do begin
Dec(Bottom, NC_HEIGHT);
Inc(Top, NC_HEIGHT);
end;
end;
不知道你明不明白我的意思。这样少了一个 TSpeedButton, 但需要用 mouseDown 判断鼠标是否在按钮(这其实已经不是按钮,其TEdit的一部分)的位置。
标准的控件都是这样写的。
 
可否给我这算法,barton 有这个算法并曾经写过这种控件。
 
最后继承自TCustomMask类。解决了,忘了分分数了。呵呵。。。
 
后退
顶部