Как определить, насдледовано ли свойство от определённого классаDelphi , Компоненты и Классы , RTTI
Автор: Peter Below 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; Функция Delphi Вот шаг за шагом, как она работает:
Если такого свойства не существует или его тип не соответствует ожидаемому, функция возвращает Таким образом, это позволяет динамически инспектировать свойства класса объекта на этапе выполнения. В статье описывается функция GetFontProp, которая позволяет определить, наследуется ли свойство 'Font' от определенного класса в программировании на языке Delphi. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |