獲取物件的 RTTI 屬性與事件的函式

2021-04-19 20:33:56 字數 1347 閱讀 2256

uses typinfo;

//獲取物件的 rtti 屬性與事件的函式

function getpropertyandeventlist(obj: tobject; plist,elist: tstringlist): boolean;

varclasstypeinfo: ptypeinfo;

classdatainfo: ptypedata;

propertylist : pproplist;

num : integer;           

size: integer;           

i: integer;        

begin

classtypeinfo := obj.classinfo;             

classdatainfo := gettypedata(classtypeinfo);

num := classdatainfo.propcount;             

size := sizeof(tpropinfo);                  

getmem(propertylist, size*num);             

getpropinfos(classtypeinfo, propertylist);  

for i := 0 to num - 1 do

begin

if propertylist[i].proptype^.kind = tkmethod then

elist.add(propertylist[i].name)

else

plist.add(propertylist[i].name);

end;

plist.sort; elist.sort;

freemem(propertylist);

result := true;

end;

//測試

procedure tform1.button1click(sender: tobject);

varpl,el: tstringlist;

begin

pl := tstringlist.create;

el := tstringlist.create;

memo1.clear;

memo2.clear;

getpropertyandeventlist(self, pl, el);

memo1.lines := pl;

memo2.lines := el;

pl.free;

el.free;

end;

end.

DOM事件物件的屬性

事件物件event的屬性 屬性 方法 型別 說明 bubbles 布林值,表示事件是否冒泡 cancelable 布林值,表示是否可以取消事件的預設行為 currenttarget 元素,當前事件處理程式所在的元素 defaultprevented 布林值,true表示以及呼叫preventdefa...

Rtti單元 1 獲取類的方法 屬性 欄位的列表

通過 rtti 單元的 trtticontext 是個 record 可以方便地獲取類的方法 屬性 欄位的列表.unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dia...

Rtti單元 1 獲取類的方法 屬性 欄位的列表

通過 rtti 單元的 trtticontext 是個 record 可以方便地獲取類的方法 屬性 欄位的列表.unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dia...