2016-06-30 3 views
2

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

+0

Nein, ich glaube nicht, dass diese Kontrolle bietet eine solche Funktionalität –

+0

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. –

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));