首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delphi 2009 -对象检查器中的自定义枚举类型属性

Delphi 2009 -对象检查器中的自定义枚举类型属性
EN

Stack Overflow用户
提问于 2009-04-08 09:58:27
回答 1查看 2.4K关注 0票数 2

我已经创建了一个自定义的TAction类型,它有两个额外的属性,分别是字符串类型和枚举类型。

字符串值显示在对象检查器中,但是枚举类型根本不显示。如何让自定义枚举类型在对象检查器中显示为下拉属性值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-04-08 11:42:13

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

似乎找不到RTTI信息。枚举类型在哪里定义?在与组件相同的文件中?

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

代码语言:javascript
复制
TMyEnum = (aA = 1, aB = 3);

说明:如果使用值定义枚举,则会使用预定义的常量创建子范围类型。因此,上面的内容应该解释为:

代码语言:javascript
复制
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注册属性编辑器。

只需查看组件编写者指南即可了解更多信息。

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/729315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档