Delphi 2009 - Object Inspector中的Custom Enum type属性

时间:2009-04-08 09:58:27

标签: delphi delphi-2009 custom-component

我创建了一个自定义TAction类型,它有2个附加属性,类型为string和enumeration。

字符串值在对象检查器中显示正常,但是枚举类型根本没有出现。如何在对象检查器中显示自定义枚举类型以显示为下拉属性值?

1 个答案:

答案 0 :(得分:11)

枚举属性应使用默认的TEnumProperty类来编辑属性。

看起来无法找到RTTI信息。枚举类型在哪里定义?在与组件相同的文件中?

您是否使用具有自定义值的枚举类型:

TMyEnum = (aA = 1, aB = 3);

说明:如果使用值定义枚举,则创建具有预定义常量的子范围类型。所以上面的解释是:

type
  TMyEnum = 1..3;
const
  aA : TMyEnum = 1;
  aB : TMyEnum = 3;

这可能导致奇怪的情况,例如:Succ(aA)不是aB而是2。 信息在帮助中(语言指南)简单类型[具有明确分配的普通性的枚举类型]。

这可能是问题的根源。

如果所有其他方法都失败了,您可以创建自己的属性编辑器。哪个能够更改对象检查器中的枚举属性。通常,您将能够使用默认的TEnumProperty。但如果这还不够,你可以自己动手:

步骤1,派生属性编辑器。在您的情况下,可能TEnumProperty(单位DesignEditors)可能只需要很少的更改。

第2步,确保GetValue和SetValue方法正常工作。他们需要将字符串转换为枚举属性并返回。

步骤3,如果您想进行真正的特殊编辑,请确保覆盖编辑方法。

步骤4,确保eeditor属性有效。

步骤5,使用RegisterPropertyEditor注册属性编辑器。

请查看组件编写指南以获取更多信息。