【发布时间】:2013-06-01 15:16:29
【问题描述】:
我想使用 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') 这是不允许的。注意第一个属性有一个参数。我想我必须获得第一个属性,然后以某种方式获得第二个属性,因为我不能使用这个 property1"."property2
有人知道怎么做吗?
【问题讨论】:
-
您能否详细说明您在这里真正想要实现的目标?我怀疑最终的答案将是递归:)
-
我的目标是为 SubProperty 设置一个值,例如:
MyComponent1.Property['variable'].SubProperty但是在我的代码中我有很多组件和属性,所以我必须先检查 MyComponent 然后获取属性Property['variable'] 然后不知何故我想更改 SubProperty,但我不能使用subProp:= Prop.getProperty或Typ.getProperty('Property['variable'].subProperty') -
您可以删除 TRttiContext.Create 和 Ctx.Free 行
-
我也不太明白你的问题。
-
基本上我想访问我的组件的子属性并且我只有字符串,所以我不能使用
Typ:=Ctx.GetType(MyComponent1.ClassInfo)然后 Prop:=Typ.GetProperty('Property['variable'].Subproperty')这是不允许的。注意第一个属性有一个参数。我想我必须获得第一个属性,然后以某种方式获得第二个属性,因为我不能使用这个 property1"."property2
标签: delphi properties components rtti