首页 > 其他 > 详细

了解运行时类型信息(RTTI)

时间:2015-08-21 19:12:18      阅读:246      评论:0      收藏:0      [点我收藏+]

RTTI需要引用单元TypeInfo

GetPropInfo 函数用于获得属性的 RTTI 指针 PPropInfo。它有四种重载形式,后面三种重载的实现都是调用第一种形式。AKinds 参数用于限制属性的类型,如果得到的 PPropInfo 不属于指定的类型,则返回 nil。

function GetPropInfo(TypeInfo: PTypeInfo; const PropName: string): PPropInfo;

function GetPropInfo(Instance: TObject; const PropName: string;AKinds: TTypeKinds = []): PPropInfo;

function GetPropInfo(AClass: TClass; const PropName: string;AKinds: TTypeKinds = []): PPropInfo;

function GetPropInfo(TypeInfo: PTypeInfo; const PropName: string;AKinds: TTypeKinds): PPropInfo;

//以下代码,循环修改窗体上的Button组件的Capiton
//方法一:
procedure TForm1.SetCaption;
var
  pInfo : PPropInfo;
  i:integer;
begin
  for i := 0 to Self.ControlCount - 1 do
  begin
    pInfo := GetPropInfo(Self.Controls[i],Caption);   //GetPropInfo,根据‘Caption‘字符串,查找Caption属性
    if pInfo <> nil then                             //如果有
      TButton(Self.Controls[i]).Caption:= ABC;     //修改Capiton
  end;
end;
方法二:
procedure TForm1.SetCaption;
var
  pInfo : PPropInfo;
  i:integer;
begin
  for i := 0 to Self.ControlCount - 1 do
  begin
    pInfo := GetPropInfo(Self.Controls[i],Caption);
    if pInfo <> nil then
      SetPropValue(Self.Controls[i],Caption,ABC);
  end;
end;

参考:http://www.cnblogs.com/key-ok/p/3358804.html

了解运行时类型信息(RTTI)

原文:http://www.cnblogs.com/findumars/p/4748705.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!