【发布时间】:2014-10-14 07:21:07
【问题描述】:
目前在delphi中做一些RTTI的研究。
出现的问题如下。
对于这个例子,我有一个 TPanel 组件(由代码创建,所有者由调用方法传递)现在 TPanel 被强制转换为 TObject(以保持我使用的方法通用)。
现在我尝试通过 SetXXXXXXProp 函数设置该属性(XXXXXX 是以下任何一种(ord、variant、str、method...。基本上我尝试了所有 SetProperty 函数。)
但出于某种奇怪的原因,我收到的消息是没有 Parent 属性。 如何设置我的 Parent 属性??
所以我希望你们中的任何人都可以给我一个正确方向的“指针”。
class procedure TComponentsCreator.AddParent(obj, parent : TObject);
var
count : integer;
propList: PPropList;
I: Integer;
method : TMethod;
begin
count := GetPropList(obj, propList);
for I := 0 to count -1 do
begin
WriteLn(propList[i]^.Name);
if (CompareStr(LowerCase(String(propList[i]^.Name)), LowerCase('Parent')) = 0) then
begin
SetObjectProp(obj, String(propList[i]^.Name), parent);
end;
end;
end;
【问题讨论】:
-
取决于你的问题,但可能根本不需要使用 RTTI,只需使用 TControl.Parent。
-
你为什么不显示演示问题的代码。我们现在应该猜到你做了什么吗?
-
你的权利,大卫,我马上去拿它:-)
-
您的意思是 for 循环中的 count-1?
-
大卫为什么要立即删除我的帖子???在您发布消息后的 2 分钟内,我已经发布了我的代码……一个人不会忘记什么吗?
标签: delphi properties rtti