CnPack Forum


 
Subject: 日历控件的BUG
sadanboy2010
新警察
Rank: 1



UID 54590
Digest Posts 0
Credits 35
Posts 11
点点分 35
Reading Access 10
Registered 2010-11-7
Status Offline
Post at 2010-11-7 21:46  Profile | Blog | P.M. 
日历控件的BUG

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


Image Attachment: cuo.jpg (2010-11-7 21:46, 35.15 K)

Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2010-11-8 12:50  Profile | Blog | P.M. 
感谢报告,我查一下。
Top
sadanboy2010
新警察
Rank: 1



UID 54590
Digest Posts 0
Credits 35
Posts 11
点点分 35
Reading Access 10
Registered 2010-11-7
Status Offline
Post at 2010-11-8 13:23  Profile | Blog | P.M. 
这个问题应该和1582年的改历有关系,那个月直接被砍掉了10天,日期不连续了,但星期应该是连续。而程序中计算星期的时候好像没有考虑这个问题

[ 本帖最后由 sadanboy2010 于 2010-11-8 13:26 编辑 ]
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2010-11-8 21:52  Profile | Blog | P.M. 
确实是我们绘制的时候没处理好这历史上不存在的10天所致,目前已修正,最新的SVN上已提交了修正版。

您可通过以下介绍访问我们的SVN:
http://www.cnpack.org/showdetail.php?id=639&lang=zh-cn
Top
sadanboy2010
新警察
Rank: 1



UID 54590
Digest Posts 0
Credits 35
Posts 11
点点分 35
Reading Access 10
Registered 2010-11-7
Status Offline
Post at 2010-11-9 13:47  Profile | Blog | P.M. 
谢谢,你们!新的文件我一下载,但是发现了新的问题直接进入1582年10月显示是正常的,当用鼠标点击在本月隐形显示的下个月数据时候,却出现问题,不是直接跳转到11月而是1变22,下面的一次类推变化,应该是那不存在的10天又回来了

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


Image Attachment: xin.jpg (2010-11-9 13:49, 40.45 K)

Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2010-11-9 16:39  Profile | Blog | P.M. 
,我今晚再改改。
Top
sadanboy2010
新警察
Rank: 1



UID 54590
Digest Posts 0
Credits 35
Posts 11
点点分 35
Reading Access 10
Registered 2010-11-7
Status Offline
Post at 2010-11-9 22:34  Profile | Blog | P.M. 
十分感谢刘潇,我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)

Top
sadanboy2010
新警察
Rank: 1



UID 54590
Digest Posts 0
Credits 35
Posts 11
点点分 35
Reading Access 10
Registered 2010-11-7
Status Offline
Post at 2010-11-9 22:37  Profile | Blog | P.M. 
还有就是出现上面问题后接着点击17日以及以后的日期直到31日会出现样的问题如图


Image Attachment: 1192.jpg (2010-11-9 22:38, 39.38 K)

Top
sadanboy2010
新警察
Rank: 1



UID 54590
Digest Posts 0
Credits 35
Posts 11
点点分 35
Reading Access 10
Registered 2010-11-7
Status Offline
Post at 2010-11-9 22:41  Profile | Blog | P.M. 
如果不点击1日到4日的话,出现的问题就有些诡异了从17日开始点击会变成这样

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


Image Attachment: 1193.jpg (2010-11-9 22:42, 39.74 K)

Top
sadanboy2010
新警察
Rank: 1



UID 54590
Digest Posts 0
Credits 35
Posts 11
点点分 35
Reading Access 10
Registered 2010-11-7
Status Offline
Post at 2010-11-9 22:46  Profile | Blog | P.M. 
经过对源代码的分析,我初步断定应该不是绘制时候出的问题,应该是delphi本身在计算日期方面存在问题,如果用儒略日数计算应该不会出现这个问题,这好像就要改的地方就很多了,就不能用delphi本身的日期计算函数了。我对delphi刚入门不知道分析的对不,请指教!
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2010-11-10 13:05  Profile | Blog | P.M. 
好的,感谢楼主的详细分析,我再看看。确实Delphi本身的日期计算也就是TDate中是允许存在1582年10月5日到14日这段不存在的日期的,导致的兼容性问题也很多。CnCalendar.pas单元中对此有处理,但CnMonthCalendar中可能未处理完全。
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2010-11-12 21:13  Profile | Blog | P.M. 
"点击日期后鼠标先不要放开看看有没有这个现象"——我在D5下和D7下按此实验,倒是没看见“10月页面的上的日期是变了的”这个现象。请问你是用的什么版本的Delphi?
Top
sadanboy2010
新警察
Rank: 1



UID 54590
Digest Posts 0
Credits 35
Posts 11
点点分 35
Reading Access 10
Registered 2010-11-7
Status Offline
Post at 2010-11-13 13:31  Profile | Blog | P.M. 
我用的是2010版,你先把日期条到1582年10月,不是每个月历都有显示上个月和下个月的日期吗?你点击10月页面里11月得日期不要放开鼠标,然后你挪动鼠标看看!不知道我表达清楚了没有

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


Image Attachment: cuo.png (2010-11-13 13:37, 223.71 K)



Image Attachment: 1.jpg (2010-11-13 13:38, 28.02 K)

Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2010-11-13 14:43  Profile | Blog | P.M. 
表达清楚了,我就是这么操作的,D5/7下没出现这个,我呆会2010下看看。
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2010-11-14 12:50  Profile | Blog | P.M. 
D2010下确实有这个绘制的问题。我跟了一下看看,发现问题出在我们自身Paint时RectVisible的判断上。
修改的版本SVN上已经提交,楼主可以再下过来试一试?
Top
sadanboy2010
新警察
Rank: 1



UID 54590
Digest Posts 0
Credits 35
Posts 11
点点分 35
Reading Access 10
Registered 2010-11-7
Status Offline
Post at 2010-11-14 17:54  Profile | Blog | P.M. 
问题解决了!

问题解决了 从中学了不少东西!谢谢潇哥
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2010-11-14 19:40  Profile | Blog | P.M. 
是啸。不少人都打错了。
Top
 




All times are GMT++8, the time now is 2024-11-22 01:30

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.010733 second(s), 8 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP