delphi – TMonthCalendar行为发生了变化

delphi – TMonthCalendar行为发生了变化,第1张

概述在将我的一个Win32 VCL应用程序从Delphi 2006迁移到delphi XE6的过程中,我遇到了以下问题: 我的一个表单有一个TMonthCalendar(插入TPanel用于记录),以帮助用户选择一周在图表中查看.按周我的意思是星期一是第一天,星期日是最后一天(法国语言环境).为了实现这样的周选择模式,我将multiSelect属性设置为true,并将以下代码放在CalendarCli 在将我的一个Win32 VCL应用程序从Delphi 2006迁移到delphi XE6的过程中,我遇到了以下问题:

我的一个表单有一个TMonthCalendar(插入TPanel用于记录),以帮助用户选择一周在图表中查看.按周我的意思是星期一是第一天,星期日是最后一天(法国语言环境).为了实现这样的周选择模式,我将multiSelect属性设置为true,并将以下代码放在CalendarClick事件中:

MonthCalendar1.MultiSelect := True;//Temporarily storing the selected day in a variableTempoDate := MonthCalendar1.Date;//searching for the monday right before the selected day (by user)while dayOfWeek(TempoDate) <> 2 do  TempoDate := Incday( TempoDate,-1 );//Setting the monday as the start date of the selectionMonthCalendar1.Date := TempoDate;//Setting the Sunday as the last day of selectionMonthCalendar1.EndDate := Incday(tempoDate,6);

以前在Delphi 2006上运行良好(在win XP计算机上编译).
现在我已经将相同的代码移植到Delphi XE6(在win7计算机上编译),我有以下问题:

>当单击右箭头(>)切换到下个月时,它大部分时间都会失败.当包含下个月的第一个星期的星期一仍然在上个月时,它实际上失败了.例如:从9月14日到2014年10月的转换失败是因为10月1日之前的星期一是9月(9月29日星期一).
这让我回到九月.
另一方面,从8月14日到9月14日的转换是因为9月1日是星期一.
>当点击下个月的第一天(可以点击的几个灰色的那个)时,月份不再切换.

之前曾经工作的所有东西.

我做了一些特定的隔离测试:

>在XE6下创建具有相同行为的最小应用程序 – >仍然失败(当然)
>在Delphi 2006下创建相同的最小应用程序 – >这一切都按预期工作.

我的直觉是,TMonthCalendar现在使用.Date属性来定义要显示的月份,而在D2006上,它使用.EndDate属性.
不知道这是VCL演变还是微软MonthCalendar底层组件行为改变(因为我在XP上编译然后SEVEN).

谢谢你的帮助

有用的文件:

http://docwiki.embarcadero.com/Libraries/XE7/en/Vcl.ComCtrls.TMonthCalendar
 http://msdn.microsoft.com/en-us/library/system.windows.forms.monthcalendar(v=vs.110).aspx

解决方法 不幸的是我不能为你提供解决方案,但是我已经为当前行为提供了解释.

您面临的问题是TMonthCalender控件本身以及哪些日期字段即使在使用多选时也会被选中.
如果你仔细观察,你会注意到,即使有一天使用多选,也总是在它周围加上方形.该日期控制着哪个月的重点.
因此,现在您需要弄清楚如何在启用多个选择的情况下更改该行为.我laredy尝试设置Date和EndDate属性,以便EndDate值实际上更低,因为我认为这样做miygt强制MonthCalendar来处理弱者的最后一天被选中当decrmining哪个月集中但是它没有效果.但它没有效果.

至于查找开始和结束周日期,请使用以下函数:

TempDate := MonthCalendar1.Date;WeekStart := StartOfTheWeek(TempDate);WeekEnd := EndOfTheWeek(TempDate);

这两个函数都将星期一视为一周中的第一天.

我希望我能帮助你更多.

总结

以上是内存溢出为你收集整理的delphi – TMonthCalendar行为发生了变化全部内容,希望文章能够帮你解决delphi – TMonthCalendar行为发生了变化所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1234130.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存