作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个带有两个 TAdvDateTimePicker 组件的表单,以及一些其他编辑(在 delphi XE7 中)。两个日期时间字段都是可选的,因此如果用户不想填写它们,则数据库中的两者都将为空。
问题是,与旧的 TDateEdit 不同,TAdvDateTimePicker 即使默认也不接受空白值。我知道,像“空日期时间”这样的东西不存在,但我需要知道用户是否想要填充这些日期。因此,将今天的日期保留为默认日期,并使用 onChange、onEnter 或任何操作来检查值是否已设置,并不是解决方案 - 他可能想使用今天的日期,所以他就这样保留。
当然可以将默认值设置为 1.1.1900(显然是无意义的),然后检查它是否已更改,但这是我最不想做的事情。有更好的办法吗?
谢谢
最佳答案
感谢 Sertac Akyuz,这是最简单的解决方案:
表单的onActivate,将.Format属性设置为空格(' '):
procedure TfrmDeliveriesEdit.FormActivate(Sender: TObject);
begin
DateTimePicker1.Format:= ' ';
end;
然后,如果用户想填充真实值,则在选择器的 onEnter 时,将格式设置为空字符串 ('') 以恢复原状
procedure TfrmDeliveriesEdit.DateTimePicker1Enter(Sender: TObject);
begin
DateTimePicker1.Format:= '';
end;
编辑:要返回到“null”值,请检查 onKeyDown 事件中的删除键,如下所示:
procedure TfrmDeliveriesEdit.dpTaxDateKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_DELETE then dpTaxDate.Format:= ' ';
end;
关于Delphi TAdvDateTimePicker 空白默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35973926/
我有一个带有两个 TAdvDateTimePicker 组件的表单,以及一些其他编辑(在 delphi XE7 中)。两个日期时间字段都是可选的,因此如果用户不想填写它们,则数据库中的两者都将为空。
我是一名优秀的程序员,十分优秀!