如何取得一个类的所有Public和Published属性和方法列表? 如题.通过代码实现. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 通过RTTI可以获得一个类的所有Published属性var mTypeInfo: PTypeInfo; mTypeData: PTypeData; mPropList: PPropList; mPropInfo: PPropInfo; mPropCount, i: Integer;begin mTypeInfo := Form1.ClassInfo; mTypeData := GetTypeData(mTypeInfo); if mTypeInfo^.Kind <> tkClass then Exit; mPropCount := mTypeData^.PropCount; if mPropCount <= 0 then Exit; GetMem(mPropList, mPropCount * SizeOf(PPropList)); try GetPropInfos(mTypeInfo, mPropList); for i := 0 to mPropCount - 1 do begin mPropInfo := mPropList^[i]; ShowMessage(mPropInfo^.Name); end; finally FreeMem(mPropList, mPropCount * SizeOf(PPropList)); end;end; 肯定是可以的,只是我不会.代码提示都可以做到,cnpack的代码助手也可以做到. 通过RTTI可以获得一个类的所有Published属性var mTypeInfo: PTypeInfo; mTypeData: PTypeData; mPropList: PPropList; mPropInfo: PPropInfo; mPropCount, i: Integer;begin mTypeInfo := Form1.ClassInfo; mTypeData := GetTypeData(mTypeInfo); if mTypeInfo^.Kind <> tkClass then Exit; mPropCount := mTypeData^.PropCount; if mPropCount <= 0 then Exit; GetMem(mPropList, mPropCount * SizeOf(PPropList)); try GetPropInfos(mTypeInfo, mPropList); for i := 0 to mPropCount - 1 do begin mPropInfo := mPropList^[i]; ShowMessage(mPropInfo^.Name); end; finally FreeMem(mPropList, mPropCount * SizeOf(PPropList)); end;end;利用VMt获取方法表. Cxgrid的checkbox勾选问题 cxGrid onFocusedRecordChanged事件 有关重载函数在DLL中输出问题? 十万火急!150分~~ 解决问题的马上给 用nmudp通讯为何出现乱码? 删除动态控件时出错:Abstract error. 怎样在DBGird里使用下拉框? 怎样确定tem.db这个文件是否存在? 一个菜问题:请问如何用ADO组件向数据库(ACCESS)添加一条记录?谢谢 学dephi需要多长时间? 动态生成按钮,不知道错在哪里 使用 pngimage,怎样设置PNG图片的透明通道?
var
mTypeInfo: PTypeInfo;
mTypeData: PTypeData;
mPropList: PPropList;
mPropInfo: PPropInfo;
mPropCount, i: Integer;
begin
mTypeInfo := Form1.ClassInfo; mTypeData := GetTypeData(mTypeInfo);
if mTypeInfo^.Kind <> tkClass then Exit; mPropCount := mTypeData^.PropCount;
if mPropCount <= 0 then Exit; GetMem(mPropList, mPropCount * SizeOf(PPropList));
try
GetPropInfos(mTypeInfo, mPropList);
for i := 0 to mPropCount - 1 do
begin
mPropInfo := mPropList^[i];
ShowMessage(mPropInfo^.Name);
end;
finally
FreeMem(mPropList, mPropCount * SizeOf(PPropList));
end;
end;
代码提示都可以做到,cnpack的代码助手也可以做到.
var
mTypeInfo: PTypeInfo;
mTypeData: PTypeData;
mPropList: PPropList;
mPropInfo: PPropInfo;
mPropCount, i: Integer;
begin
mTypeInfo := Form1.ClassInfo; mTypeData := GetTypeData(mTypeInfo);
if mTypeInfo^.Kind <> tkClass then Exit; mPropCount := mTypeData^.PropCount;
if mPropCount <= 0 then Exit; GetMem(mPropList, mPropCount * SizeOf(PPropList));
try
GetPropInfos(mTypeInfo, mPropList);
for i := 0 to mPropCount - 1 do
begin
mPropInfo := mPropList^[i];
ShowMessage(mPropInfo^.Name);
end;
finally
FreeMem(mPropList, mPropCount * SizeOf(PPropList));
end;
end;
利用VMt获取方法表.