Delphi datetimepicker 组件设置最小和最大时间
Delphi datetimepicker component set min and max time
有人知道 Delphi 中是否有办法在组件 kind
属性 设置为 [= 时为 Datetimepicker 组件设置最大时间和最小时间值12=]?
VCL class 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));
有人知道 Delphi 中是否有办法在组件 kind
属性 设置为 [= 时为 Datetimepicker 组件设置最大时间和最小时间值12=]?
VCL class 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));