代码之家  ›  专栏  ›  技术社区  ›  Marus Gradinaru

eCommonCalendar错误:无法设置日历日期或时间

  •  1
  • Marus Gradinaru  · 技术社区  · 7 年前

    我启动了一个新的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 回复  |  直到 7 年前
        1
  •  1
  •   Victoria zac    7 年前

    Delphi2009 VCL中存在一个错误。问题是 MaxDate 属性没有将最大时间范围限制为23∶59:59的时间部分。然后,当一个人离开 Time 属性的打开时间与00:00:00不同,并且只设置 Date 财产 DateTime_SetSystemTime 宏失败,因为日期时间范围的日期时间溢出(导致该异常)。

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