控件的属性(200分)

  • 主题发起人 主题发起人 Jack.yang
  • 开始时间 开始时间
J

Jack.yang

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样取得控件的所有属性名,属性值.我想做一个象Object Inspector一样的控件.
 
我从我的组态软件中摘录了一段,不懂再联系aiirii@21cn.com
procedure TfrmProperty.GetClassProperties(AClass: TObject; AStringsName,AStringsType: TStrings);
{ This method retrieves the property names and types for the given object
and adds that information to the AStrings parameter. }
var
PropList: PPropList;
ClassTypeInfo: PTypeInfo;
ClassTypeData: PTypeData;
i: integer;
// NumProps: Integer;
begin

ClassTypeInfo := AClass.ClassInfo;
ClassTypeData := GetTypeData(ClassTypeInfo);

if ClassTypeData.PropCount <> 0 then
begin
// allocate the memory needed to hold the references to the TPropInfo
// structures on the number of properties.
GetMem(PropList, SizeOf(PPropInfo) * ClassTypeData.PropCount);
try
// fill PropList with the pointer references to the TPropInfo structures
GetPropInfos(AClass.ClassInfo, PropList);
for i := 0 to ClassTypeData.PropCount - 1 do
// filter out properties that are events ( method pointer properties)
if not (PropList^.PropType^.Kind = tkMethod) then
begin
AStringsName.Add(PropList^.Name);
AStringsType.Add(PropList^.PropType^.Name);
end; // AStrings.Add(Format('%s: %s', [PropList^.Name, PropList^.PropType^.Name]));
finally
FreeMem(PropList, SizeOf(PPropInfo) * ClassTypeData.PropCount);
end;
end;

end;
 
谢谢你的参与,给你分.你的这段代码我已有了,但我是在C++Builder 中编程的,
在C++Builder中通不过,有没有更好的方法.
 
>>在C++Builder中通不过
那当然,上面是Delphi的,你得把它翻成BCB
 
再没人回答就关了
 
Dream公司提供你要的三方元件。
 
看吧,等高手出现啊
 
to Jack.yang: c++ builder我不熟,不知其 RTTI是否與delphi一樣,但我想,其組件是基于VCL的,應該也有相同的處理方法,而且,C++也有自己的一套處理RTTI的方法,你在網上找找!
 
我的师傅做过,,,!!

可是我没好好学。。不好意思,
帮你顶一把!![:)]
 
看VCL代码啊
 
后退
顶部