Table of Contents

Time Ranges and Selection

TTMSFNCDigitalTimePicker uses TTMSFNCDigitalTimeSelector as its drop-down content. The picker generates selectable time values from StartTime, EndTime, TimeInterval, and IntervalUnit.

Digital time picker drop-down

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;

See Also