Hi,
I'm testing the TMSFMXSpinner component (Delphi 10).
I would like to have 3 columns (day, month, year) in order to let choose a date.
So, I added 3 colums, and I set these properties :
- Column 1 :
Cyclic = True
DateRangeFrom = 01/01/1970
DateRangeTo = 30/12/2020
DateTimeValueFormat = dd
OnlyDate = True
RangeType = srtDateTime
Step = 1
StepType = sstDay
- Column 2, same values except :
DateTimeValueFormat = mm
StepType = sstMonth
- Column 3, same values except :
DateTimeValueFormat = yyyy
StepType = sstYear
In my code, I initialize the values of the 3 columns :
TMSFMXSpinner.Columns[0].SelectedDateTime := Now;
TMSFMXSpinner.Columns[1].SelectedDateTime := Now;
TMSFMXSpinner.Columns[2].SelectedDateTime := Now;
I use the onSelectedValueChanged to get the date seleted (I write the value in a TMemo):
procedure TForm1.TMSFMXSpinnerSelectedValueChanged(Sender: TObject; Column: Integer; SelectedValue: Double; RangeType: TTMSFMXSpinnerRangeType);
begin
Memo.Lines.Add(FormatDateTime('dd/mm/yyyy', EncodeDate(YearOf(TMSFMXSpinner.Columns[2].SelectedDateTime), MonthOf(TMSFMXSpinner.Columns[1].SelectedDateTime), DayOf(TMSFMXSpinner.Columns[0].SelectedDateTime))));
Memo.Lines.Add('');
Memo.SelStart := Length(Memo.Lines.Text);
end;
It works well, except the value displayed at the beginning.
Each column's value are incremented by 1.
So when I set the date 24/01/2017, I see 25/02/2018.
But, if I scroll the columns, the values displayed are the same as the values I get in onSelectedValueChanged.
For testing, I added this line after the initialization lines :
Memo.Lines.Add(FormatDateTime('dd/mm/yyyy', EncodeDate(YearOf(TMSFMXSpinner.Columns[2].SelectedDateTime), MonthOf(TMSFMXSpinner.Columns[1].SelectedDateTime), DayOf(TMSFMXSpinner.Columns[0].SelectedDateTime))));
And I get the good date.
So, I think it's only a little bug of the display at the begining.