Delphi TAdvDateTimePicker空白默认值

时间:2016-03-13 18:16:58

标签: delphi

我有一个包含两个TAdvDateTimePicker组件的表单,以及很少的其他编辑(在delphi XE7中)。这两个datetime字段都是可选的,因此如果用户不想填充它们,那么在数据库中都将为null。

问题是,与旧的TDateEdit不同,TAdvDateTimePicker即使默认也不接受空值。我知道,像" null datetime"不存在,但我需要知道,如果用户确实或不想填写这些日期。因此,将今天的日期保留为默认日期,并使用onChange,onEnter或任何操作来检查是否已设置值,不是解决方案 - 他可能想要使用今天的日期,所以他离开了就是这样。

当然有可能将默认值设置为,让我们说1.1.1900(一个明显的废话),然后检查它是否已经改变,但这是我想做的最后一件事。还有更好的方法吗?

由于

1 个答案:

答案 0 :(得分:2)

感谢Sertac Akyuz,这是最简单的解决方案:

onActivate表单,将.Format属性设置为空格(''):

procedure TfrmDeliveriesEdit.FormActivate(Sender: TObject);
begin
  DateTimePicker1.Format:= ' ';
end;

然后,在选择器的输入中,将格式设置为空字符串('')以恢复,如果用户想要填充实际值

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;