在 Delphi 11 Alexandria 的 Windows 10 中的 32 位 VCL 應用程式中,我嘗試使用一個TNumberBox控制元件:
object nbRowheight: TNumberBox
Left = 20
Top = 225
Width = 77
Height = 23
Hint = 'Set the Row height.'
Anchors = []
MinValue = 18.000000000000000000
TabOrder = 8
SpinButtonOptions.ButtonWidth = 20
SpinButtonOptions.Placement = nbspInline
end
在設計時,我嘗試在 ObjectInspector 中將其預設為 21。但是只要我在 ObjectInspector 的Value欄位中輸入 21 然后按 Enter 鍵,Value就會切換回0!
那么如何在設計時將 TNumberBox 的值預設為特定的整數值?
更新:顯然,這個問題是由MaxValue左邊的默認值0引起的:如果我在ObjectInspector中設定MaxValue為例如32,那么我可以Value在ObjectInspector中輸入21而沒有問題。但是默認值MaxValue0 是否意味著它是不確定的(即它可以是任何值)?
uj5u.com熱心網友回復:
好吧,如果MinValue = 0和MaxValue = 0,則沒有限制。
這是有道理的,并且是 API 中相當普遍的約定。
但是,為了絕對確定,您應該始終查閱檔案。在這種情況下,檔案是MaxValue這樣說的:
Embarcadero Technologies 目前沒有任何其他資訊。
那是一個錯誤。檔案非常重要。
我最初的猜測是,MinValue = 0并且MaxValue = 0意味著“沒有限制”,任何其他對都意味著存在限制,由這些屬性指定的界限給出。因此,如果您設定其中之一,則必須同時設定兩者。
在您的情況下,您設定MinValue但未能設定MaxValue。由于您不需要上限,因此可以通過設定MaxValue屬性的最大可能值來實作。(由于這個屬性是 type Extended,取決于你的應用是 32 位還是 64 位。但在實踐中,我敢打賭類似的東西1E20對你很有效。)
現在,我的猜測正確嗎?
的種類。
查看TNumberBox源代碼,我發現沒有限制iff MinValue = MaxValue(不是MinValue = 0和MaxValue = 0我猜的那樣)。
IMMNSHO,這是一個奇怪而糟糕的設計選擇。我的意思是,如果我將MinValueand設定MaxValue為20(在運行時,由于程式的狀態),我希望該值固定為20. 但不是!現在它可以是任何值。
恕我直言,這是一個錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/424509.html
標籤:德尔福 vcl delphi-11-亚历山大
上一篇:[bx]的尋址模式型別?
