我在 D7 应用程序上使用具有以下属性的 TDateTimePicker:
Format = 'MMM-yyyy'
DateMode = dmUpDown
当我尝试使用 dt1.DateTime := Now 设置当前日期时间时,它正确设置了时间和日期,但当我尝试导航月份时,它显示异常。特别是,我不能在三月以下流通。
是什么导致了这个问题?
最佳答案
问题在于日期时间选择器控件正在使用当前日期进行初始化。其中包括该月中某些月份无效的某一天。
所以,需要明确的是,您在 2013 年 1 月 29 日问这个问题。当您单击向上/向下控件移至二月时,该控件无法执行更改,因为 2013 年没有 2 月 29 日.
对于任何发现难以重现的 future 访问者,这是您需要演示该问题的代码:
DateTimePicker1.Format := 'MMM-yyyy';
DateTimePicker1.DateMode := dmUpDown;
DateTimePicker1.DateTime := EncodeDateTime(2013, 1, 29, 0, 0, 0, 0);
解决此问题的简单方法是确保控件的 DateTime
属性是指月初。您可以通过在初始化控件时执行以下代码来实现这一点:
DateTimePicker1.DateTime := StartOfTheMonth(DateTimePicker1.DateTime);
或者如果你想更明确的话:
DateTimePicker1.DateTime := StartOfTheMonth(Date);
StartOfTheMonth
辅助函数位于 DateUtils
单元中。
关于delphi - 为什么 TDateTimePicker 不允许我导航到二月?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14583598/