5

我注意到选择多个项目时,某些属性会从对象检查器中消失。

为什么会发生这种情况以及在创建组件时如何控制这种行为?

例子:

将 2 个按钮 ( TButton) 添加到表单并选择其中一个。

在此处输入图像描述

Object Inspector中,您可以看到 allTButton的已发布属性(请注意,还有Constraints属性)。

在此处输入图像描述

将另一个按钮添加到当前选择中(按住Shift键时单击)。

在此处输入图像描述

如您所见,一些属性已从Object Inspector中隐藏(请注意,Constraints不再可见)。

在此处输入图像描述

4

1 回答 1

9

选择多个对象时是否显示属性由为该属性配置的属性编辑器控制。属性编辑器(源自DesignEditors.pasTPropertyEditor)有一个方法,该方法返回一组应用于编辑器的属性。如果集合包括,则将显示该属性。GetAttributespaMultiSelect

鉴于属性值显示为约束值,而不仅仅是(TSizeConstraints),我得出的结论是该属性没有使用通用TClassProperty编辑器。该编辑器设置paMultiSelect,但根据您的图片,属性编辑器TSizeConstraints不设置。这可能是一个疏忽。

您可以尝试注册自己的属性编辑器。找到当前注册的属性编辑器TSizeConstraints(例如,通过搜索TSizeConstraints的源代码),并在设计时包中声明一个继承自该类的新类。覆盖GetAttributes以返回您需要的值。最后,按照代码中其他地方的示例调用RegisterPropertyEditor.

于 2016-11-15T15:09:02.897 回答