2016-11-15 90 views
5

我注意到當選擇多個項目時,某些屬性從對象檢查器中消失。選擇多個項目時,爲什麼某些屬性在Object Inspector中隱藏?

爲什麼會發生這種情況,以及如何在創建組件時控制此行爲?

實施例:

添加2個按鈕(TButton),以一種形式,並選擇其中之一。

enter image description here

Object Inspector中你可以看到published的屬性的TButton的(請注意,另外還有Constraints屬性)。

enter image description here

添加其他按鈕,將當前選擇(點擊的同時按下Shift鍵關鍵)。

enter image description here

正如你所看到的,有些屬性已經從Object Inspector中隱藏的(請注意,Constraints不再可見)。

enter image description here

回答

8

無論當選擇了多個對象被配置爲用於該屬性的屬性編輯器控制被顯示的性質。屬性編輯器(TPropertyEditor中的DesignEditors.pas)有一個GetAttributes方法,該方法返回一組適用於編輯器的屬性。如果該集合包含paMultiSelect,則會顯示該屬性。

鑑於屬性值顯示爲約束值,而不僅僅是(TSizeConstraints),我斷定該屬性不使用通用TClassProperty編輯器。該編輯器設置paMultiSelect,但根據您的圖片,屬性編輯器TSizeConstraints沒有。這可能是一個疏忽。

你可以嘗試註冊自己的屬性編輯器。查找當前註冊爲TSizeConstraints的屬性編輯器(例如,通過搜索源代碼TSizeConstraints,例如),並在設計時包中聲明一個新的類。覆蓋GetAttributes返回您需要的值。最後,請按照代碼中的其他示例調用RegisterPropertyEditor

相關問題