For this work I am on now I need to enter sports times in milliseconds.
I decided to use DateTimepicker which works great and makes it possible to show minutes:sec:ms and edit and so on.
I need to come from string to datetime and back. I use SQLlite3 to store the records as floats.
Please have a look at the code
Can I avoid to use FormatSettings
unit TestUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
DateTimePicker;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
DateTimePicker1: TDateTimePicker;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
Var HelpFormat : TFormatSettings;
HelpStr : String;
HelpTime : TDateTime;
begin
HelpFormat := DefaultFormatSettings;
HelpFormat.TimeSeparator:=':';
HelpFormat.ShortTimeFormat:='nn:ss:zzz';
ShowMessage(TimeToStr(DateTimePicker1.Time,HelpFormat)); // Display hours too
HelpSTr := FormatDateTime('nn:ss:zzz',DateTimePicker1.Time); // Works
Helptime := StrToDateTime(HelpSTr,HelpFormat); // Gives Econvert error that millisec is not time format
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DateTimePicker1.Kind := dtkTime;
DateTimePicker1.HideDateTimeParts := DateTimePicker1.HideDateTimeParts + [dtpHour]
- [dtpMiliSec];
DateTimePicker1.TimeDisplay:=tdHMSMs;
end;
end.