我使用的是Delphi10.3中的VCL窗体应用程序。我正在使用TDateTimePicker来记录日期和时间。
我必须将值保存到哪种类型的变量中,以及如何检查用户是否实际输入了值而不是将其留空?
发布于 2020-08-06 21:20:43
我必须将值保存到哪种类型的变量...?
这是您可以使用IDE自己轻松发现的东西。实际上,当您键入日期时间选取器控件的名称和句点时,Code Insight允许您探索控件的属性和方法。您的第一次尝试将是关于Date的内容,然后就可以开始了:

我不知道您是否使用自己的控件只选择日期或日期时间值,但无论哪种情况,这里都有一个很好的选择:DateTime或Date。我假设你只想要日期,这对我的A没有什么不同。
但是现在您会想,“这个Date属性似乎正是我要找的东西,但是我如何确定它真的包含控件中显示的日期(而不是应用程序的编译日期)?”
然后关闭[ Code Insight ]列表,将插入符号放在Date标识符内,然后按F1键,这将显示the help
表示日历上标记的日期。
对啰!
但是变量应该是什么类型呢?好吧,Code Insight和文档都告诉你这一点:TDate。
如何检查用户是否实际输入了值,而不是将其留空?
实际上,TDateTimePicker不能为空。
因此,您的实际问题可能是,“当用户更改日期时,我如何才能得到通知?”
这也是您可以在IDE中发现的东西。在窗体设计器中选择日期时间选取器,然后转到对象检查器中的Events选项卡

我将把它作为练习,让您找出要使用哪个事件。选择事件时,也可以使用F1键。
但是使用这样的事件是一个可怕的想法。我想您想使用它来启用Next或Submit按钮。别干那事。如果初始日期恰好是用户想要提交的日期,他们将非常恼火,因为如果不更改日期并将其改回,他们将无法继续(如果他们甚至设法弄清楚这是他们需要做的)。
发布于 2020-08-07 00:53:31
我必须将值保存到哪种类型的变量中
TDateTimePicker具有Date、Time和DateTime属性,它们分别返回TDate、TTime和TDateTime值。
如何检查用户是否实际输入了值,而不是将其留空?
默认情况下,TDateTimePicker不能为“空”。它的Date/Time/DateTime属性总是会返回一些值。
如果您希望用户能够指定非值,则TDateTimePicker有一个用于此目的的ShowCheckbox属性。将其设置为True,然后可以在使用Date/Time/DateTime值之前查询Checked属性。
我只需要一种方法来检查用户是否做了更改。
如果只想知道用户是否更改了默认值,则可以使用OnChange事件来实现此目的。例如,声明一个布尔变量(或者只使用Tag属性),最初将其设置为False,然后让OnChange将其设置为True,然后您可以在需要时检查该值。
https://stackoverflow.com/questions/63284170
复制相似问题