[英]Get a sub property of a component in Delphi using RTTI
我想使用RTTI访问以下属性
MyComponent1.Property['variable'].SubProperty
我想要这样的东西:
var
Ctx: TRttiContext;
Typ: TRttiType;
SubTyp: TRttiType;
Prop: TRttiProperty;
SubProp: TRttiProperty;
begin
Ctx:= TRttiContext.Create;
Typ:= Ctx.GetType(MyComponent1.ClassInfo);
Prop:= Typ.GetProperty('Property['variable'].Subproperty') //not possible
Prop.SetValue(MyComponent1.Property['variable'],'500');
end;
基本上,我想访问组件的子属性,而我只有字符串,所以我不能使用Typ:=Ctx.GetType(MyComponent1.ClassInfo)
然后使用Prop:=Typ.GetProperty('Property['variable'].Subproperty')
这是不允许的。 注意第一个属性有一个参数。 我想我必须先获得此第一个属性,然后才能获得第二个属性,因为我不能使用此属性1“。” property2
有谁知道这是怎么做到的吗?
索引属性和所有其他属性(直接引用对象字段除外)只是getXXX
和setXXX
方法的快捷方式。
尝试这种方式:
使用GetDeclaredIndexedProperties
或GetIndexedProperties
获取Ctx.GetType(MyComponent1.ClassInfo)
所有索引属性
在返回的TRttiIndexedProperty
实例数组中搜索所需的Property
。
得到写方法描述对象WriteMethod
财产TRttiIndexedProperty
找到对象。
如果需要使用GetParameters
调用获取方法参数描述。
更新资料
仅适用于XE2及更高版本的Delphi版本。
在以前的版本中,只能使用类似于此问题中所讨论的内容,将索引属性用于RTTI。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.