![](/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.