TDateTimePicker or TRzDateTimePicker date not changing

      在使用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)
	public
		property 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



你可能感兴趣的:(TDateTimePicker or TRzDateTimePicker date not changing)