Subject:
日历控件的BUG
[Print This Page]
Author:
sadanboy2010
Time:
2010-11-7 21:46
Subject:
日历控件的BUG
在用到组件包中的月历组件时候发现一点问题。当日期调整到1582年的时候,月份为11月之后不会出现问题如图:
11月分之前就出现错误
Image Attachment:
cuo.jpg
(2010-11-7 21:46, 35.15 K) / Download count 37
http://bbs.cnpack.org/attachment.php?aid=773
Author:
Passion
Time:
2010-11-8 12:50
感谢报告,我查一下。
Author:
sadanboy2010
Time:
2010-11-8 13:23
这个问题应该和1582年的改历有关系,那个月直接被砍掉了10天,日期不连续了,但星期应该是连续。而程序中计算星期的时候好像没有考虑这个问题
[
本帖最后由 sadanboy2010 于 2010-11-8 13:26 编辑
]
Author:
Passion
Time:
2010-11-8 21:52
确实是我们绘制的时候没处理好这历史上不存在的10天所致,目前已修正,最新的SVN上已提交了修正版。
您可通过以下介绍访问我们的SVN:
http://www.cnpack.org/showdetail.php?id=639&lang=zh-cn
Author:
sadanboy2010
Time:
2010-11-9 13:47
谢谢,你们!新的文件我一下载,但是发现了新的问题直接进入1582年10月显示是正常的,当用鼠标点击在本月隐形显示的下个月数据时候,却出现问题,不是直接跳转到11月而是1变22,下面的一次类推变化,应该是那不存在的10天又回来了
[
本帖最后由 sadanboy2010 于 2010-11-9 13:49 编辑
]
Image Attachment:
xin.jpg
(2010-11-9 13:49, 40.45 K) / Download count 37
http://bbs.cnpack.org/attachment.php?aid=774
Author:
Passion
Time:
2010-11-9 16:39
,我今晚再改改。
Author:
sadanboy2010
Time:
2010-11-9 22:34
十分感谢刘潇,我22点的时候去SVN上下载您今天刚修改过的文件,我在5楼提到的问题,表面上看是解决了,实际上还是没有解决,只是用了一个偷巧的方法,就是点击下个月的日期是就跳的11月去了,而10月页面的上的日期是变了的,比如1日就变成了22日,您可以点击日期后鼠标先不要放开看看有没有这个现象。还有一个问题,我没有在5楼提出来,因为中午时间紧没有来的急测试,晚上我把中午和现在编译的程序对比都存在的,就是初次运行程序时把日期调到1582年10月时,当我点击10月的1日到4日任意一日,20日那天的数字会变为15,再跳到别的月份再返回来就不会出现这个问题。如图:
[
本帖最后由 sadanboy2010 于 2010-11-9 22:35 编辑
]
Image Attachment:
119.jpg
(2010-11-9 22:35, 41.87 K) / Download count 36
http://bbs.cnpack.org/attachment.php?aid=775
Author:
sadanboy2010
Time:
2010-11-9 22:37
还有就是出现上面问题后接着点击17日以及以后的日期直到31日会出现样的问题如图
Image Attachment:
1192.jpg
(2010-11-9 22:38, 39.38 K) / Download count 31
http://bbs.cnpack.org/attachment.php?aid=776
Author:
sadanboy2010
Time:
2010-11-9 22:41
如果不点击1日到4日的话,出现的问题就有些诡异了从17日开始点击会变成这样
[
本帖最后由 sadanboy2010 于 2010-11-9 22:42 编辑
]
Image Attachment:
1193.jpg
(2010-11-9 22:42, 39.74 K) / Download count 32
http://bbs.cnpack.org/attachment.php?aid=777
Author:
sadanboy2010
Time:
2010-11-9 22:46
经过对源代码的分析,我初步断定应该不是绘制时候出的问题,应该是delphi本身在计算日期方面存在问题,如果用儒略日数计算应该不会出现这个问题,这好像就要改的地方就很多了,就不能用delphi本身的日期计算函数了。我对delphi刚入门不知道分析的对不,请指教!
Author:
Passion
Time:
2010-11-10 13:05
好的,感谢楼主的详细分析,我再看看。确实Delphi本身的日期计算也就是TDate中是允许存在1582年10月5日到14日这段不存在的日期的,导致的兼容性问题也很多。CnCalendar.pas单元中对此有处理,但CnMonthCalendar中可能未处理完全。
Author:
Passion
Time:
2010-11-12 21:13
"点击日期后鼠标先不要放开看看有没有这个现象"——我在D5下和D7下按此实验,倒是没看见“10月页面的上的日期是变了的”这个现象。请问你是用的什么版本的Delphi?
Author:
sadanboy2010
Time:
2010-11-13 13:31
我用的是2010版,你先把日期条到1582年10月,不是每个月历都有显示上个月和下个月的日期吗?你点击10月页面里11月得日期不要放开鼠标,然后你挪动鼠标看看!不知道我表达清楚了没有
[
本帖最后由 sadanboy2010 于 2010-11-13 13:38 编辑
]
Image Attachment:
cuo.png
(2010-11-13 13:37, 223.71 K) / Download count 36
http://bbs.cnpack.org/attachment.php?aid=781
Image Attachment:
1.jpg
(2010-11-13 13:38, 28.02 K) / Download count 31
http://bbs.cnpack.org/attachment.php?aid=782
Author:
Passion
Time:
2010-11-13 14:43
表达清楚了,我就是这么操作的,D5/7下没出现这个,我呆会2010下看看。
Author:
Passion
Time:
2010-11-14 12:50
D2010下确实有这个绘制的问题。我跟了一下看看,发现问题出在我们自身Paint时RectVisible的判断上。
修改的版本SVN上已经提交,楼主可以再下过来试一试?
Author:
sadanboy2010
Time:
2010-11-14 17:54
Subject:
问题解决了!
问题解决了
从中学了不少东西!谢谢潇哥
Author:
Passion
Time:
2010-11-14 19:40
是啸。不少人都打错了。
Welcome to CnPack Forum (http://bbs.cnpack.org/)
Powered by Discuz! 5.0.0