TDateTimePicker or TRzDateTimePicker date not changing

来源:互联网 发布:mac内胆包 编辑:程序博客网 时间:2024/06/07 09:32

      在使用TRzDateTimePicker的时候。手动设置TRzDateTimePicker的时间后,要么只能设置日期,要么只能设置时间,这个根据该控件的kind属性决定的,且该属性只有dtkTime 和dtkDate两种情况。我们既不想放2个这样的控件,又想同时修改date和time。那么需要做如下处理:

     this problem can be solved by reading the Text property, but in delphi this property is protected. so...

TDTPicker = class(TControl)publicproperty Text;end;



in DTPicker onChange read the text and convert to DateTime property

DT1.DateTime := StrToDateTime(TDTPicker(DT1).Text);

   上面的DT1是你的TDateTimePicker or  TRzDateTimePicker。


说明:StrToDateTime 和电脑的本地时间格式有关系,如果设定的格式和电脑的格式不一致就会报错。


我们可以这么做:

var  FSetting : TFormatSettings;  DateTime1: tDateTime;begin  FSetting := TFormatSettings.Create(LOCALE_USER_DEFAULT);  try  FSetting.ShortDateFormat:='yyyy-MM-dd';  FSetting.DateSeparator:='-';  FSetting.TimeSeparator:=':';  FSetting.LongTimeFormat:='hh:mm:ss';  DT1.DateTime := StrToDateTime(TDTPicker(DT1).Text,FSetting);  finally  freeandnil(FSetting);  end;end;

也可以这么做:

var  formatsetting:TFormatSettings;begin  GetLocaleFormatSettings(GetUserDefaultLCID,formatsetting);  formatsetting.DateSeparator:='-';  formatsetting.TimeSeparator:=':';  formatsetting.ShortDateFormat:='yyyy-MM-dd';  formatsetting.ShortTimeFormat:='HH:mm:ss';  dtp1.DateTime := StrToDateTime(TDTPicker(dtp1).Text,formatsetting);end;

 

 

参考:https://forums.embarcadero.com/message.jspa?messageID=354510


原创粉丝点击