2016-11-15 101 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

相关问题