ECommonCalendarError:无法设置日历日期或时间

时间:2018-07-30 14:03:31

标签: delphi runtime-error delphi-2009

我启动了一个新的Delphi应用程序,在主窗体上放置了TDateTimePicker,并添加了以下代码:

procedure TForm1.FormShow(Sender: TObject);
begin
 DateTimePicker1.MaxDate:= Now - 9;
 DateTimePicker1.Date:= Now - 10;
end;

当我运行程序并尝试通过键盘上的UP ARROW更改日期时,出现此错误消息。但是,如果我将MOUSE的日期更改为最后一个可能的日期,则不会收到错误消息。之后,我也可以使用箭头键更改日期。

我不明白哪里出了问题以及如何解决这个问题。

更新: 当发生该错误时,我发现了另一种情况:当我下拉列表并再次关闭它时,没有选择任何东西,但是使用了以下设置:

procedure TForm1.FormShow(Sender: TObject);
var D:TDate;
begin
 D:= Date;
 DateTimePicker1.Date:= D;
 DateTimePicker1.MaxDate:= D;
end;

1 个答案:

答案 0 :(得分:1)

Delphi 2009 VCL中存在一个错误。问题是MaxDate属性的设置器没有将23:59:59的时间部分添加到最大范围限制。然后,当一个人离开Time属性的时间不同于00:00:00并且仅设置Date属性时,DateTime_SetSystemTime宏由于日期时间范围的日期时间溢出而失败(导致该异常)。

为避免这种情况,您可以将Time属性重置为00:00:00,或仅将日期(保持时间部分为零)分配给DateTime属性。