我注意到选择多个项目时,某些属性会从对象检查器中消失。
为什么会发生这种情况以及在创建组件时如何控制这种行为?
例子:
将 2 个按钮 ( TButton) 添加到表单并选择其中一个。
在Object Inspector中,您可以看到 allTButton的已发布属性(请注意,还有Constraints属性)。
将另一个按钮添加到当前选择中(按住Shift键时单击)。
如您所见,一些属性已从Object Inspector中隐藏(请注意,Constraints不再可见)。
我注意到选择多个项目时,某些属性会从对象检查器中消失。
为什么会发生这种情况以及在创建组件时如何控制这种行为?
例子:
将 2 个按钮 ( TButton) 添加到表单并选择其中一个。
在Object Inspector中,您可以看到 allTButton的已发布属性(请注意,还有Constraints属性)。
将另一个按钮添加到当前选择中(按住Shift键时单击)。
如您所见,一些属性已从Object Inspector中隐藏(请注意,Constraints不再可见)。
选择多个对象时是否显示属性由为该属性配置的属性编辑器控制。属性编辑器(源自DesignEditors.pasTPropertyEditor)有一个方法,该方法返回一组应用于编辑器的属性。如果集合包括,则将显示该属性。GetAttributespaMultiSelect
鉴于属性值显示为约束值,而不仅仅是(TSizeConstraints),我得出的结论是该属性没有使用通用TClassProperty编辑器。该编辑器设置paMultiSelect,但根据您的图片,属性编辑器TSizeConstraints不设置。这可能是一个疏忽。
您可以尝试注册自己的属性编辑器。找到当前注册的属性编辑器TSizeConstraints(例如,通过搜索TSizeConstraints的源代码),并在设计时包中声明一个继承自该类的新类。覆盖GetAttributes以返回您需要的值。最后,按照代码中其他地方的示例调用RegisterPropertyEditor.