Time Ranges and Selection
TTMSFNCDigitalTimePicker uses TTMSFNCDigitalTimeSelector as its drop-down content. The picker generates selectable time values from StartTime, EndTime, TimeInterval, and IntervalUnit.
Configure Time Values
Set the time range and interval before the picker opens. Use TimeFormat to control how each generated value is shown.
TMSFNCDigitalTimePicker1.StartTime := EncodeTime(8, 0, 0, 0);
TMSFNCDigitalTimePicker1.EndTime := EncodeTime(18, 0, 0, 0);
TMSFNCDigitalTimePicker1.IntervalUnit := tsuMinutes;
TMSFNCDigitalTimePicker1.TimeInterval := 15;
TMSFNCDigitalTimePicker1.TimeFormat := 'hh:nn';
TMSFNCDigitalTimePicker1.SelectedTime := EncodeTime(9, 30, 0, 0);
TMSFNCDigitalTimePicker1.OnTimeSelected := TMSFNCDigitalTimePicker1TimeSelected;
Handle Selection
Handle OnTimeSelected when the selected time should update another control or stored setting. The event passes the chosen TTime value.
procedure TForm1.TMSFNCDigitalTimePicker1TimeSelected(Sender: TObject; ATime: TTime);
begin
Caption := FormatDateTime('hh:nn', ATime);
end;
Use the Selector Directly
Use TTMSFNCDigitalTimeSelector directly when the time list should stay visible instead of living in a drop-down editor.
TMSFNCDigitalTimeSelector1.StartTime := EncodeTime(8, 0, 0, 0);
TMSFNCDigitalTimeSelector1.EndTime := EncodeTime(12, 0, 0, 0);
TMSFNCDigitalTimeSelector1.IntervalUnit := tsuMinutes;
TMSFNCDigitalTimeSelector1.TimeInterval := 30;
TMSFNCDigitalTimeSelector1.TimeFormat := 'hh:nn';
TMSFNCDigitalTimeSelector1.SelectedTime := EncodeTime(10, 0, 0, 0);
Allow a Blank Value and Clear It
SelectedTime is a TTime, so there is no separate "no value" state at the type level — midnight (00:00:00) doubles as the sentinel for "nothing selected". AllowNumericNullValue (default True) controls how that sentinel is displayed: whenever the picker's time value has no fractional (time-of-day) part left, i.e. it equals midnight, the edit field shows an empty string instead of a formatted 00:00:00. Set AllowNumericNullValue := False when midnight is a legitimate time value that should always be shown as text.
Call Clear to reset the picker to that blank state programmatically, for example when wiring up a "Clear" button. Clear sets SelectedTime := 0.0, which — together with AllowNumericNullValue := True — blanks the edit field; it does not change AllowNumericNullValue itself, and it does not affect the time slots already generated for the drop-down.
procedure TForm1.ConfigureBlankableTimePicker;
begin
TMSFNCDigitalTimePicker1.AllowNumericNullValue := True;
TMSFNCDigitalTimePicker1.SelectedTime := EncodeTime(9, 30, 0, 0);
end;
procedure TForm1.ButtonClearClick(Sender: TObject);
begin
TMSFNCDigitalTimePicker1.Clear;
end;
Combining time configuration, selection handling, and a visible selector
Configure a picker and a selector together so both controls share the same time range and stay in sync when a value is chosen:
procedure TForm1.FormCreate(Sender: TObject);
begin
TTMSFNCDigitalTimePicker1.StartTime := EncodeTime(8, 0, 0, 0);
TTMSFNCDigitalTimePicker1.EndTime := EncodeTime(18, 0, 0, 0);
TTMSFNCDigitalTimePicker1.TimeInterval := 30;
TTMSFNCDigitalTimePicker1.TimeFormat := 'hh:nn';
TTMSFNCDigitalTimeSelector1.StartTime := TTMSFNCDigitalTimePicker1.StartTime;
TTMSFNCDigitalTimeSelector1.EndTime := TTMSFNCDigitalTimePicker1.EndTime;
TTMSFNCDigitalTimeSelector1.TimeInterval := 30;
TTMSFNCDigitalTimeSelector1.TimeFormat := 'hh:nn';
end;
procedure TForm1.TTMSFNCDigitalTimePicker1TimeSelected(Sender: TObject; ATime: TTime);
begin
TTMSFNCDigitalTimeSelector1.SelectedTime := ATime;
end;