2008. szeptember 19., péntek
How to determine if a property has inherited from a particular class
Problem/Question/Abstract:
How can I propogate through an object's published properties and extract an actual class reference in order to perform operations like: if GiveProperty is TSomeObjectType then do something?
Answer:
function GetFontProp(anObj: TObject): TFont;
var
PInfo: PPropInfo;
begin
{Try to get a pointer to the property information for a
property with the name 'Font'.
TObject.ClassInfo returns a pointer to the RTTI table, which we need to pass
to GetPropInfo}
PInfo := GetPropInfo(anObj.ClassInfo, 'font');
Result := nil;
if PInfo <> nil then
{found a property with this name, check if it has the correct type}
if (PInfo^.Proptype^.Kind = tkClass) and
GetTypeData(PInfo^.Proptype^)^.ClassType.InheritsFrom(TFont) then
Result := TFont(GetOrdProp(anObj, PInfo));
end;
Feliratkozás:
Megjegyzések küldése (Atom)
Nincsenek megjegyzések:
Megjegyzés küldése