用RTTI方法获取组件属性的类
来源:互联网 发布:mysql replication 编辑:程序博客网 时间:2024/04/27 14:27
最近在写脚本生成,所以用到了RTTI的系列方法,记载记之。
class function TSomeClass.GetCtmWnd(Component: TComponent): TPersistent;
var
PropList: PPropList;
ClassTypeInfo: PTypeInfo;
classTypeData: PTypeData;
vSize: integer;
vPropName: string;
vObject: TObject;
i: integer;
begin
result := nil;
ClassTypeInfo := Component.ClassInfo;
ClassTypeData := GetTypeData(ClassTypeInfo);
if ClassTypeData.PropCount <> 0 then
begin
vSize := SizeOf(PPropInfo) * ClassTypeData.PropCount;
GetMem(PropList, vSize);
try
GetPropInfos(Component.ClassInfo, PropList);
for i := 0 to ClassTypeData.PropCount - 1 do
begin
if PropList[i]^.PropType^.Kind = tkClass then
begin
vPropName := PropList[i]^.Name;
vObject := GetObjectProp(Component, vPropName);
if vObject is TPersistent then
begin
result := TPersistent(vObject);
break;
end;
end;
end;
finally
FreeMem(PropList, vSize);
end;
end;
end;
class function TSomeClass.GetCtmWnd(Component: TComponent): TPersistent;
var
PropList: PPropList;
ClassTypeInfo: PTypeInfo;
classTypeData: PTypeData;
vSize: integer;
vPropName: string;
vObject: TObject;
i: integer;
begin
result := nil;
ClassTypeInfo := Component.ClassInfo;
ClassTypeData := GetTypeData(ClassTypeInfo);
if ClassTypeData.PropCount <> 0 then
begin
vSize := SizeOf(PPropInfo) * ClassTypeData.PropCount;
GetMem(PropList, vSize);
try
GetPropInfos(Component.ClassInfo, PropList);
for i := 0 to ClassTypeData.PropCount - 1 do
begin
if PropList[i]^.PropType^.Kind = tkClass then
begin
vPropName := PropList[i]^.Name;
vObject := GetObjectProp(Component, vPropName);
if vObject is TPersistent then
begin
result := TPersistent(vObject);
break;
end;
end;
end;
finally
FreeMem(PropList, vSize);
end;
end;
end;
- 用RTTI方法获取组件属性的类
- Rtti单元(1)获取类的方法、属性、字段的列表
- Rtti 单元(2)调用类的方法, 读写属性值
- 获取对象属性 RTTI
- RTTI:获取类的详细信息
- RTTI:获取类的详细信息
- Rtti 单元(5): 获取方法的更多信息
- extjs中超级厉害获取组件的方法Ext.ComponentQuery.query(),根据组件类型(xtype属性)获取组件。
- UGUI组件获取及属性设置方法
- ExtJs--05--给window组件添加功能条以及子组件获取上级或下级组件的属性和方法
- Extjs获取组件的方法
- 获取类中[DisplayName("")]属性的方法
- 获取类的属性、方法等
- 每日程炼-delphi2010 Rtti获取某一个类的信息
- 组件类的属性
- 获取NSAttributedString属性的方法
- RTTI中的一些类和方法的说明
- Adodb.Stream组件的属性方法
- vc 一个FLOAT和四个字节之间的转换
- 感恩节“谢谢”英文怎么说
- 锦上添花 Icing on the cake
- “卖空”英文怎么说
- 奥巴马胜选演说·文言版
- 用RTTI方法获取组件属性的类
- [英语阅读]美国新旧总统感恩节各自感恩
- 微软互联网业务为何赚不到钱
- Contemporary Issues in Database Design and Information Systems Development (Advances in Database Res
- 惠普前总裁孙振耀指点职业规划
- Introduction to Mobile Communications: Technology, Services, Markets
- Outlook 2007 All-in-One Desk Reference For Dummies
- Nokia 收购 Trolltech后干的第一件好事,Qt 专门的 IDE—— Qt Creator 预览版发布!
- 十个女人辞职大过天的理由