gpt4 book ai didi

Delphi TAdvDateTimePicker 空白默认值

转载 作者:行者123 更新时间:2023-12-02 21:07:44 27 4
gpt4 key购买 nike

我有一个带有两个 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com