delphi – 对象的属性列表
发布时间:2020-12-15 09:07:15 所属栏目:大数据 来源:网络整理
导读:如何获取不是Component的Object的属性列表(在运行时).就像Grid Cell一样,它有自己的属性(Font,Align等). 网格如AdvStringGrid或AliGrid,或Bergs NxGrid. 解决方法 您要求的是访问对象的RTTI(运行时类型信息). 如果您使用的是Delphi 2009或更早版本,则RTTI仅
如何获取不是Component的Object的属性列表(在运行时).就像Grid Cell一样,它有自己的属性(Font,Align等).
网格如AdvStringGrid或AliGrid,或Bergs NxGrid. 解决方法
您要求的是访问对象的RTTI(运行时类型信息).
如果您使用的是Delphi 2009或更早版本,则RTTI仅公开已发布的属性和已发布的方法(即事件处理程序).查看 uses TypInfo; var PropList: PPropList; PropCount,I: Integer; begin PropCount := GetPropList(SomeObject,PropList); try for I := 0 to PropCount-1 do begin // use PropList[I]^ as needed... ShowMessage(PropList[I].Name); end; finally FreeMem(PropList); end; end; 请注意,此类RTTI仅适用于从TPersistent派生的类,或者应用了 如果您使用的是Delphi 2010或更高版本,则无论其可见性如何,扩展RTTI都会公开所有属性,方法和数据成员.查看 uses System.Rtti; var Ctx: TRttiContext; Typ: TRttiType; Prop: TRttiProperty; begin Typ := Ctx.GetType(SomeObject.ClassType); for Prop in Typ.GetProperties do begin // use Prop as needed... ShowMessage(Prop.Name); end; for Prop in Typ.GetIndexedProperties do begin // use Prop as needed... ShowMessage(Prop.Name); end; end; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |