【问题标题】:Delphi datetimepicker component set min and max timeDelphi datetimepicker 组件设置最小和最大时间
【发布时间】:2016-06-30 14:20:54
【问题描述】:

有人知道当组件kind 属性设置为dtkTime 时,Delphi 中是否有办法为 Datetimepicker 组件设置最大时间和最小时间值?

【问题讨论】:

  • 不,我不认为这个控件提供这样的功能
  • 不,它没有。它支持 min/max dates,但不支持 min/max times。您必须使用 OnChangeOnUserInput 事件根据需要调整输入的时间。

标签: delphi datetimepicker


【解决方案1】:

VCL 类TDateTimePicker 似乎故意阻止设置时间范围值。但是,底层的公共控件支持它,至少在 Windows 7 中,我成功地尝试了以下代码:

uses
  System.DateUtils,
  Winapi.CommCtrl,
  Vcl.ComCtrls;

procedure SetTimeRange(CommonCalendar: TCommonCalendar; MinTime, MaxTime: TTime);
var
  STA: TSystemTimeRangeArray;
begin
  DateTimeToSystemTime(TimeOf(MinTime), STA[0]);
  DateTimeToSystemTime(TimeOf(MaxTime), STA[1]);
  Win32Check(DateTime_SetRange(CommonCalendar.Handle, GDTR_MIN or GDTR_MAX, @STA));
end;

示例用法:

  SetTimeRange(DateTimePicker1, EncodeTime(18, 0, 0, 0), EncodeTime(19, 0, 0, 0));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多