如何让DateTimePicker控件既能显示日期又能显示时间,并且可以修改保存?

如何让DateTimePicker控件既能显示日期又能显示时间,并且可以修改保存?

我的解决方法:
 首先设置控件的format属性为yyyy年MM月dd日 HH时mm分ss秒,kind属性为dtkTime.
 在想要保存控件里的值的地方,比如change事件中(当然这不是较好的地方,只取一次就够,这样只是方便各位查看效果),写下列代码:
procedure Tfrom_sms.DateTimePicker2Change(Sender: TObject);
var
 ss:string;
 pp:pchar;
begin
 //time1:=formatdatetime('yyyy年MM月dd日 HH时mm分ss秒',DateTimePicker2.Datetime);
 //用控件的Datetime属性不行.因为它只记录kind属性规定的部分(或者是dtkDate或者是dtkTime)的改变,而对另一部分不会记录改变.
 pp:=StrAlloc(20); //为PChar分配内存
 DateTimePicker2.GetTextBuf(pp,20);
 ss:=pp;
 showmessage(ss);
 StrDispose(pp); //为PChar释放内存,必须要有,否则报错.
end;

需要注意或者说是目前一个BUG的地方是:
    如果先修改日期,则在修改时间时日期会自动还原.
    所以只能先修改时间,然后再修改日期.

不知各位是否可以解决这个问题.

 

之所以不用MASKEDIT(或者干脆就是EDIT)控件,是希望能借助DateTimePicker的一些优点:
  1.输入有效验证(年月日时分秒都有边界,还涉及闰年闰月等问题)
  2.上下调整箭头.各位可以试试,虽然平时它是时间部分专用的,但在我改过的这个例中,它对日期部分也有效果.当然,这是次要的,可有可无.主要是第1点. 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值