Pergunta

Eu criei um tipo TAction costume que tem 2 propriedades adicionais que são do tipo string e enumeração.

O valor da cadeia está mostrando no bem objeto inspector, no entanto, o tipo de enumeração é que não aparecem em tudo. Como posso obter um tipo de enumeração personalizado para exibir como um drop down valor da propriedade no Inspetor de objeto?

Foi útil?

Solução

Propriedades Enum deve usar a classe TEnumProperty padrão para editar as propriedades.

Parece que a informação RTTI não pode ser encontrado. Onde está o tipo enum definido? No mesmo arquivo como o componente?

E você usa um tipo enum com valores personalizados como:

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

Explicação: se você definir um enum com valores, você cria um tipo de subfaixa com constantes predefinidas. Assim, o acima é para ser interpretado como:

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

Isso pode levar a situações estranhas como: Succ (AA) não é aB mas 2. A informação está na ajuda (Guia Linguístico) Tipos simples [tipos enumerados com ordinalidade explicitamente atribuído].

Esta pode ser a origem do problema.

Se tudo isso falhar, você pode criar o seu próprio editor de propriedades. Que é capaz de alterar a propriedade enum no Inspetor de objeto. Normalmente, você será capaz de usar o TEnumProperty padrão. Mas se isso não for suficiente, você pode lançar seu próprio:

Passo 1, derivar um editor de propriedade. No seu caso, provavelmente TEnumProperty (DesignEditors unidade) será suficiente, provavelmente, com pequenas mudanças.

Passo 2, certifique-se o GetValue e métodos SetValue trabalho bem. Eles precisam traduzir uma string para a propriedade enum e volta.

Passo 3, se você quiser edição especial real ter certeza que a substituição do método de edição.

Passo 4, certifique-th atributos eeditor são válidos.

Passo 5, registrar o editor de propriedade através RegisterPropertyEditor.

Basta olhar para os escritores de componentes guia para obter mais informações.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top