繁体   English   中英

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

[英]How can I check if the user has entered a value into a TDateTimePicker?

我在 Delphi 10.3 中使用 VCL Forms 应用程序。 我正在使用TDateTimePicker记录日期和时间。

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

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

您可以使用 IDE 轻松发现这一点。 实际上,当您键入日期时间选择器控件的名称和句点时,Code Insight 可让您探索控件的属性和方法。 您的第一次尝试将是有关Date的内容,然后是 go:

Code Insight 的屏幕截图向我们展示了 TDateTimePicker 的一些属性

我不知道您是否使用控件仅选择日期或日期时间值,但无论哪种情况,这里都有一个不错的选择: DateTimeDate 我假设您只想要日期; 这对我的A没有任何影响。

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

然后关闭 Code Insight 列表,将插入符号放在Date标识符中,然后按 F1,它会显示帮助

表示日历上标记的日期。

答对了!

但是变量应该有什么类型呢? 好吧,Code Insight 和文档都告诉您: TDate

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

好吧,实际上, TDateTimePicker不能为空。

所以你的实际问题可能是,“当用户更改日期时,我怎样才能得到通知?”

这也是您可以在 IDE 中发现的内容。 Select 表单设计器中的日期时间选择器和 go 到Object 检查器中的事件选项卡:

RAD Studio IDE 中对象检查器的屏幕截图,显示了 TDateTimePicker 控件的事件。

我将把它留作练习,让您确定要使用哪个事件。 选择事件时也使用 F1 键。

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

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

TDateTimePicker具有DateTimeDateTime属性,它们分别返回TDateTTimeTDateTime值。

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

默认情况下, TDateTimePicker不能为“空白”。 它的Date / Time / DateTime属性总是会返回一些值。

如果您希望用户能够指定非值,则TDateTimePicker具有用于此目的的ShowCheckbox属性。 将其设置为True ,然后您可以在使用Date / Time / DateTime值之前查询Checked属性。

我只需要一种方法来检查用户是否进行了更改。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM