如何取得一个类的所有Public和Published属性和方法列表?

mastersky 2007-03-28 03:36:15
如题.通过代码实现.
...全文
257 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ylvb 2007-04-07
  • 打赏
  • 举报
回复
学习!
simb 2007-04-04
  • 打赏
  • 举报
回复
通过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获取方法表.
mastersky 2007-03-28
  • 打赏
  • 举报
回复
肯定是可以的,只是我不会.
代码提示都可以做到,cnpack的代码助手也可以做到.
dctony 2007-03-28
  • 打赏
  • 举报
回复
通过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;
ahjoe 2007-03-28
  • 打赏
  • 举报
回复
不能吧。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧