2011-11-01 115 views
1

我已經寫了TCustomEdit的後代控件,但是在StdCtrls中定義的組件的默認大小(即width = 121,height = 21)時遇到問題。設置自定義控件的默認屬性

因此,在創建我有:

inherited Create(AOwner); 
width:=40; 
height:=20; 

但是,當控件放置在窗體上畫有默認的寬度和高度TCustomEdit。我將測試用例簡化爲一個簡單的組件,它只有上面的構造函數,沒有別的。我也嘗試在構造函數中設置autosize:=false,但沒有喜悅。

從四周搜索我認爲我做正確的事情,但顯然它不工作。如何獲得我之後的行爲?

+4

你的構造函數被調用了嗎?你有沒有標記爲「覆蓋」? – jpfollenius

+0

總是解決所有編譯器提示,警告和錯誤。 – NGLN

回答

4

這對我很有用(XE2)。確保你的構造標記override使得它實際上是所謂:

constructor Create(AOwner : TComponent); override; 

這是必要的,因爲TComponent有一個虛擬的構造函數。

+0

D'oh,謝謝! :) – RobS

+0

另外不要忘記將已發佈屬性的默認值設置爲相同的值。屬性Width默認40;這有助於表單拖放器,並在將來要更改默認值時幫助您。 –

+1

@Lars,我不這麼認爲。 'default'不設置屬性值;這是在構造函數中完成的。關於幫助未來改變價值;從設計師的角度來看,這很好,因爲如果輸入的值等於默認值,則「Object Inspector」突出顯示與「default」不同的值,如粗體和粗體。從組件開發人員的角度來看,您可以輕易忘記在構造函數中更改'default'和實際的默認屬性值。 – TLama

相關問題