这个问题是由于操作系统的日期格式与用StrToDate给UniDateTimePicker.dateTime赋值格式不一致造成的。
注意:这个问题在使用UniGui的Standalone模式下没问题,在Windows service模式下会出现上述问题。
可以在系统的主程序中设置一下系统日期格式:
procedure SetDateTimeFormat();
var
p:DWORD;
begin
SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SSHORTDATE,pchar('yyyy-MM-dd')); //短日期
SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SLONGDATE,pchar('yyyy''年''M''月''d''日'''));
SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_STIMEFORMAT,pchar('HH:mm:ss')); //设置时间
SendMessageTimeOut(HWND_BROADCAST,WM_SETTINGCHANGE,0,0,SMTO_ABORTIFHUNG,10,p);
//设置完成后必须调用,通知其他程序格式已经更改,否则即使是程序自身也不能使用新设置的格式
end;
在UniFormCreate(Sender: TObject)中,加一句:SetDateTimeFormat();