![](/img/trans.png)
[英]Delphi: Can I extend TDateTimePicker to support another calendar system? How?
[英]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:
我不知道您是否使用控件仅选择日期或日期时间值,但无论哪种情况,这里都有一个不错的选择: DateTime
或Date
。 我假设您只想要日期; 这对我的A没有任何影响。
但是现在你自己想,“这个Date
属性似乎正是我正在寻找的东西,但我怎么能确定它确实包含控件中显示的日期(而不是,比如说,应用程序的编译日期) )?”
然后关闭 Code Insight 列表,将插入符号放在Date
标识符中,然后按 F1,它会显示帮助:
表示日历上标记的日期。
答对了!
但是变量应该有什么类型呢? 好吧,Code Insight 和文档都告诉您: TDate
。
[H]如何检查用户是否实际输入了一个值,而不是将其留空?
好吧,实际上, TDateTimePicker
不能为空。
所以你的实际问题可能是,“当用户更改日期时,我怎样才能得到通知?”
这也是您可以在 IDE 中发现的内容。 Select 表单设计器中的日期时间选择器和 go 到Object 检查器中的事件选项卡:
我将把它留作练习,让您确定要使用哪个事件。 选择事件时也使用 F1 键。
但是使用这样的事件是一个可怕的想法。 我想您想使用它来启用“下一步”或“提交”按钮。 不要那样做。 如果初始日期恰好是用户想要提交的日期,他们会非常恼火,因为如果不更改日期然后将其更改回来(如果他们甚至设法弄清楚这是他们需要做的),他们将无法继续。
我必须将值保存到什么类型的变量中
TDateTimePicker
具有Date
、 Time
和DateTime
属性,它们分别返回TDate
、 TTime
和TDateTime
值。
如何检查用户是否实际输入了一个值而不是将其留空?
默认情况下, 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.