Question

J'ai créé un type TAction personnalisé qui dispose de 2 propriétés supplémentaires qui sont de type chaîne, et l'énumération.

La valeur de chaîne montre en revanche, l'inspecteur d'objets bien, le type d'énumération n'apparaît pas du tout. Comment puis-je obtenir un type d'énumération personnalisé pour afficher une liste déroulante valeur de la propriété dans l'inspecteur d'objets?

Était-ce utile?

La solution

propriétés Enum doivent utiliser la classe par défaut TEnumProperty pour modifier les propriétés.

On dirait que les informations RTTI ne peut pas être trouvé. Où est le type enum défini? Dans le même fichier que le composant?

Et utilisez-vous un type ENUM avec des valeurs personnalisées comme:

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

Explication: si vous définissez un ENUM avec des valeurs, vous créez un type de sous-gamme avec des constantes prédéfinies. Donc, ce qui précède doit être interprété comme:

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

Cela peut conduire à des situations étranges comme: Succ (aA) n'est pas aB mais 2. L'information est dans l'aide (guide linguistique) Types simples [Types dénombrées à Explicitement Assigné ordinal].

Cela peut être la source du problème.

Si tout le reste échoue, vous pouvez créer votre propre éditeur de propriété. Ce qui est en mesure de changer la propriété ENUM dans l'inspecteur d'objets. Normalement, vous serez en mesure d'utiliser le TEnumProperty par défaut. Mais si cela ne suffit pas, vous pouvez rouler votre propre:

Étape 1, obtenir un éditeur de propriété. Dans votre cas, probablement TEnumProperty (Les DesignEditors unitaires) sera probablement assez avec peu de changements.

Étape 2, vérifiez que le GetValue et les méthodes SetValue fonctionnent très bien. Ils doivent traduire une chaîne dans la propriété ENUM et le dos.

Étape 3, si vous voulez réelle édition spéciale assurez-vous la remplacer la méthode d'édition.

Étape 4, assurez-vous e attributs de eeditor sont valides.

Étape 5, inscrivez l'éditeur de propriété à l'aide RegisterPropertyEditor.

Il suffit de regarder le guide d'écriture des composants pour plus d'informations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top