Delphi 如何检查用户是否已在TDateTimePicker中输入值?

Delphi 如何检查用户是否已在TDateTimePicker中输入值?,delphi,delphi-10.3-rio,Delphi,Delphi 10.3 Rio,我正在Delphi10.3中使用VCL表单应用程序。我正在使用TDateTimePicker记录日期和时间 我必须将值保存到什么类型的变量中,如何检查用户是否实际输入了值,而不是将其留空 我必须将值保存到[…]中的变量类型是什么 使用IDE,您可以很容易地发现这一点。实际上,当您键入日期时间选择器控件的名称和句点时,Code Insight允许您探索控件的属性和方法。您的第一次尝试将是关于Date,然后您将看到: 我不知道是否使用控件仅选择日期或日期时间值,但在这两种情况下,这里都有一个很好的

我正在Delphi10.3中使用VCL表单应用程序。我正在使用
TDateTimePicker
记录日期和时间

我必须将值保存到什么类型的变量中,如何检查用户是否实际输入了值,而不是将其留空

我必须将值保存到[…]中的变量类型是什么

使用IDE,您可以很容易地发现这一点。实际上,当您键入日期时间选择器控件的名称和句点时,Code Insight允许您探索控件的属性和方法。您的第一次尝试将是关于
Date
,然后您将看到:

我不知道是否使用控件仅选择日期或日期时间值,但在这两种情况下,这里都有一个很好的选择:
datetime
date
。我假设你只想要日期;这对我的A没有区别

但是现在你想,“这个
Date
属性似乎正是我要寻找的东西,但是我如何才能确定它确实包含控件中显示的日期(而不是,比如说,应用程序编译的日期)?”

然后关闭代码洞察列表,将插入符号放在日期标识符内,然后按F1键,显示:

指示日历上标记的日期

宾果

但是变量应该有什么类型呢?代码透视和文档都告诉您:TDate

[H] 如何检查用户是否实际输入了值,而不是将其留空

实际上,
TDateTimePicker
不能为空

因此,您实际的问题可能是,“当用户更改日期时,如何通知我?”

这也是您可以在IDE中发现的。在表单设计器中选择日期时间选择器,然后转到对象检查器中的事件选项卡:

我将把它作为一个练习留给您来决定使用哪个事件。选择事件时也使用F1键

但利用这样的事件是一个可怕的想法。我想您想使用它来启用下一步提交按钮。不要那样做。如果初始日期恰好是用户想要提交的日期,他们会非常恼火,因为如果不先更改日期,然后再重新更改日期,他们就无法继续(如果他们甚至设法弄清楚这是他们需要做的)

我必须将值保存到哪种类型的变量中

TDateTimePicker
具有、和属性,分别返回和值

如何检查用户是否实际输入了值,而不是将其留空

默认情况下,
TDateTimePicker
不能为“空白”。它的
日期
/
时间
/
日期时间
属性将始终返回一些值

如果希望用户能够指定非值,
TDateTimePicker
有一个用于该目的的属性。将其设置为
True
,然后可以在使用
日期
/
时间
/
日期时间
值之前查询属性

我只需要一种方法来检查用户是否做了任何更改


如果您只想知道用户是否更改了默认值,则可以使用事件来实现此目的。例如,声明一个布尔变量(或者,仅使用属性),最初将其设置为
False
,然后让
OnChange
将其设置为
True
,然后您可以随时检查该值。

一个
TDateTimePicker
甚至可以是“空白”吗?它会自动填充当天的日期。我只需要一种方法来检查用户是否做了任何更改。(如果可能的话。)