Delphi 类型信息

通过这些方法可以获得对象的属性/方法/事件列表。

方法 描述
GetPropInfo, FindPropInfo 获得一个属性的数据结构
SetPropValue 按属性名称设置值
SetXXXProp 设置数据类型是 XXX 的属性的值
GetPropList 获得属性列表的指针
描述
TPropInfo 代表一个属性
TTypeData 类型数据(

 

获取属性信息的函数

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

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

function FindPropInfo(AClass: TClass; const PropName: string): PPropInfo;

function FindPropInfo(Instance: TObject; const PropName: string): PPropInfo;

按属性名称设置值

procedure SetPropValue(Instance: TObject; const PropName: string; const Value: Variant)

取类型数据

function GetTypeData(TypeInfo: PTypeInfo): PTypeData;

获得属性列表的指针

function GetPropList(TypeInfo: PTypeInfo; TypeKinds: TTypeKinds; PropList: PPropList; SortList: Boolean): Integer;

方法指示

指示过程/函数,尾随所定义的过程或函数。

关键词 意义
   
   

示例: 获得对象的所有属性/方法/事件/枚举

procedure GetClassProperties(AClass: TClass; AStrings: TStrings);
var
  PropCount, I: SmallInt;
  PropList: PPropList;
  PropStr: string;
begin
  PropCount := GetTypeData(AClass.ClassInfo).PropCount;
  GetPropList(AClass.ClassInfo, PropList);
  for I := 0 to PropCount - 1 do
  begin
    case PropList[I]^.PropType^.Kind of
      tkClass      : PropStr := '[Class] ';
      tkMethod     : PropStr := '[Method]';
      tkSet        : PropStr := '[Set]   ';
      tkEnumeration: PropStr := '[Enum]  ';
    else
      PropStr := '[Field] ';
    end;
    PropStr := PropStr + PropList[I]^.Name;
    PropStr := PropStr + ': ' + PropList[I]^.PropType^.Name;
    AStrings.Add(PropStr);
  end;
  FreeMem(PropList);
end;