Delphi datetimepicker组件设置最小和最大时间

Jua*_*mez 2 delphi datetimepicker

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

Ond*_*lle 7

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;
Run Code Online (Sandbox Code Playgroud)

用法示例:

  SetTimeRange(DateTimePicker1, EncodeTime(18, 0, 0, 0), EncodeTime(19, 0, 0, 0));
Run Code Online (Sandbox Code Playgroud)