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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值