CnPack Forum » CnVCL 组件包 » 日历控件的BUG


2010-11-7 21:46 sadanboy2010
日历控件的BUG

在用到组件包中的月历组件时候发现一点问题。当日期调整到1582年的时候,月份为11月之后不会出现问题如图:
11月分之前就出现错误

2010-11-8 12:50 Passion
感谢报告,我查一下。

2010-11-8 13:23 sadanboy2010
这个问题应该和1582年的改历有关系,那个月直接被砍掉了10天,日期不连续了,但星期应该是连续。而程序中计算星期的时候好像没有考虑这个问题

[[i] 本帖最后由 sadanboy2010 于 2010-11-8 13:26 编辑 [/i]]

2010-11-8 21:52 Passion
确实是我们绘制的时候没处理好这历史上不存在的10天所致,目前已修正,最新的SVN上已提交了修正版。:handshake

您可通过以下介绍访问我们的SVN:
[url]http://www.cnpack.org/showdetail.php?id=639&lang=zh-cn[/url]

2010-11-9 13:47 sadanboy2010
谢谢,你们!新的文件我一下载,但是发现了新的问题直接进入1582年10月显示是正常的,当用鼠标点击在本月隐形显示的下个月数据时候,却出现问题,不是直接跳转到11月而是1变22,下面的一次类推变化,应该是那不存在的10天又回来了

[[i] 本帖最后由 sadanboy2010 于 2010-11-9 13:49 编辑 [/i]]

2010-11-9 16:39 Passion
:L ,我今晚再改改。

2010-11-9 22:34 sadanboy2010
十分感谢刘潇,我22点的时候去SVN上下载您今天刚修改过的文件,我在5楼提到的问题,表面上看是解决了,实际上还是没有解决,只是用了一个偷巧的方法,就是点击下个月的日期是就跳的11月去了,而10月页面的上的日期是变了的,比如1日就变成了22日,您可以点击日期后鼠标先不要放开看看有没有这个现象。还有一个问题,我没有在5楼提出来,因为中午时间紧没有来的急测试,晚上我把中午和现在编译的程序对比都存在的,就是初次运行程序时把日期调到1582年10月时,当我点击10月的1日到4日任意一日,20日那天的数字会变为15,再跳到别的月份再返回来就不会出现这个问题。如图:

[[i] 本帖最后由 sadanboy2010 于 2010-11-9 22:35 编辑 [/i]]

2010-11-9 22:37 sadanboy2010
还有就是出现上面问题后接着点击17日以及以后的日期直到31日会出现样的问题如图

2010-11-9 22:41 sadanboy2010
如果不点击1日到4日的话,出现的问题就有些诡异了从17日开始点击会变成这样

[[i] 本帖最后由 sadanboy2010 于 2010-11-9 22:42 编辑 [/i]]

2010-11-9 22:46 sadanboy2010
经过对源代码的分析,我初步断定应该不是绘制时候出的问题,应该是delphi本身在计算日期方面存在问题,如果用儒略日数计算应该不会出现这个问题,这好像就要改的地方就很多了,就不能用delphi本身的日期计算函数了。我对delphi刚入门不知道分析的对不,请指教!

2010-11-10 13:05 Passion
好的,感谢楼主的详细分析,我再看看。确实Delphi本身的日期计算也就是TDate中是允许存在1582年10月5日到14日这段不存在的日期的,导致的兼容性问题也很多。CnCalendar.pas单元中对此有处理,但CnMonthCalendar中可能未处理完全。

2010-11-12 21:13 Passion
"点击日期后鼠标先不要放开看看有没有这个现象"——我在D5下和D7下按此实验,倒是没看见“10月页面的上的日期是变了的”这个现象。请问你是用的什么版本的Delphi?

2010-11-13 13:31 sadanboy2010
我用的是2010版,你先把日期条到1582年10月,不是每个月历都有显示上个月和下个月的日期吗?你点击10月页面里11月得日期不要放开鼠标,然后你挪动鼠标看看!不知道我表达清楚了没有

[[i] 本帖最后由 sadanboy2010 于 2010-11-13 13:38 编辑 [/i]]

2010-11-13 14:43 Passion
表达清楚了,我就是这么操作的,D5/7下没出现这个,我呆会2010下看看。

2010-11-14 12:50 Passion
D2010下确实有这个绘制的问题。我跟了一下看看,发现问题出在我们自身Paint时RectVisible的判断上。
修改的版本SVN上已经提交,楼主可以再下过来试一试?

2010-11-14 17:54 sadanboy2010
问题解决了!

问题解决了:victory: 从中学了不少东西!谢谢潇哥

2010-11-14 19:40 Passion
是啸。不少人都打错了。:L

页: [1]
查看完整版本: 日历控件的BUG


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.