2017-05-22 6 views
1

J'ai un formulaire avec un TFrame incorporé et avec certains des composants (à la fois dans le formulaire parent et le cadre) ayant des attributs associés. Je peux accéder aux attributs de composants de formulaire parent à l'aide:Accès à l'attribut de composant dans TFrame incorporé

for field in ctx.GetType(frm.ClassInfo).GetFields do 
    for attr in field.GetAttributes do... 

J'ai essayé d'accéder aux attributs dans le cadre en utilisant la imbriquée suivante dans la boucle principale:

for subField in ctx.GetType(field.ClassInfo).GetFields do 
    for attr in subField.GetAttributes do... 

Cependant, cela ne fonctionne pas pour ramasser la les composants du cadre en tant que champs, et donc bien sûr les attributs associés. Est-il possible d'accéder aux attributs de composant d'un cadre intégré? J'utilise XE7.

Répondre

2

Ce que vous avez fait est de demander les champs de TRttiInstanceField (comme c'est ce que ClassInfo sur votre variable de champ vous donnera)

correcte serait d'utiliser la propriété FieldType:

for subField in field.FieldType.GetFields do 
    for attr in subField.GetAttributes do... 
+0

Cela est arrivé tout en expérimentant avec Knockoff - liaison aux contrôles dans un cadre. Ça a l'air bien pour le moment - j'ai utilisé KnockoutJS dans le passé et votre superbe Knockoff est exactement ce dont j'avais besoin pour Delphi. – user3045525