了解运行时类型信息(RTTI)
2013-10-09 11:23
190 查看
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;
View Code
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;
View Code
相关文章推荐
- 结构化程序设计 和 面向对象程序设计
- 账户表/余额表/消费储蓄表
- Win8系统新热键及windows组合键分享
- nuc700 bootloader使用
- 【Head First设计模式】-Decorator模式
- linux下释放cache内存
- 测试web服务器负载能力
- DML触发器--记录某张表的dml操作
- Delphi 变体类型(Variant)的介绍(流与变体类型的相互转换、变体类型常用的函数) .
- 创建自己的/proc文件——processinfo
- 随 笔
- TStrings与Memo.Lines赋值的问题
- 最长公共子序列|最长公共子串|最长重复子串|最长不重复子串|最长回文子串|最长递增子序列|最大子数组和
- Xcache实现PHP的加速
- js新手学习中:js创建div和img并把img插入div中
- phpcms v9二次开发之模型类的应用(1)
- Python 实现SSH client
- 文件的存储
- 【select】 优化问题
- jquery的each函数中的break和continue功能