Weiß jemand, ob es einen Weg in Delphi gibt, um eine maximale Zeit und einen minimalen Zeitwert für eine Datetimepicker Komponente zu setzen, wenn die Komponente kind
Eigenschaft auf dtkTime
gesetzt ist?Delphi datetimepicker Komponente Min- und Max-Zeit
2
A
Antwort
6
Die VCL-Klasse TDateTimePicker
scheint absichtlich die Einstellung der Zeitbereichswerte zu verhindern. Unterstützt jedoch die zugrunde liegende gemeinsame Kontrolle es, zumindest in Windows 7, wo ich habe den folgenden Code mit Erfolg versucht:
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;
Beispiel Nutzung:
SetTimeRange(DateTimePicker1, EncodeTime(18, 0, 0, 0), EncodeTime(19, 0, 0, 0));
Nein, ich glaube nicht, dass diese Kontrolle bietet eine solche Funktionalität –
Nein, tut es nicht. Es unterstützt min/max * Daten *, aber nicht min/max * mal *. Sie müssen die OnChange- und OnUserInput-Ereignisse verwenden, um die Zeiten nach Bedarf zu ändern. –