![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Как выяснить имеет ли объект определённое свойствоDelphi , Компоненты и Классы , RTTIАвтор: http://www.lmc-mediaagentur.de function hasprop(comp: TComponent; const prop: string): Boolean; var proplist: PPropList; numprops, i: Integer; begin result := false; getmem(proplist, getTypeData(comp.classinfo)^.propcount * Sizeof(Pointer)); try NumProps := getproplist(comp.classInfo, tkProperties, proplist); for i := 0 to pred(NumProps) do begin if comparetext(proplist[i]^.Name, prop) = 0 then begin result := true; break; end; end; finally freemem(proplist, getTypeData(comp.classinfo)^.propcount * Sizeof(Pointer)); end; end; procedure setcomppropstring(comp: TComponent; const prop, s: string); var proplist: PPropList; numprops, i: Integer; begin getmem(proplist, getTypeData(comp.classinfo)^.propcount * Sizeof(Pointer)); try NumProps := getproplist(comp.classInfo, tkProperties, proplist); for i := 0 to pred(NumProps) do begin if (comparetext(proplist[i]^.Name, prop) = 0) and (comparetext(proplist[i]^.proptype^.name, 'string') = 0 then begin setStrProp(comp, proplist[i], s); break; end; end; finally freemem(proplist, getTypeData(comp.classinfo)^.propcount * Sizeof(Pointer)); end; end; Привет! Я переведу текст на русский язык. Код написан на языке программирования Delphi и используется для проверки, имеет ли объект определенное свойство (также называемое атрибутом или полем), а также для установки значения этого свойства. Вот подробное описание того, что делает каждый участок кода: Функция Эта функция проверяет, имеет ли объект (
Процедура Эта процедура устанавливает значение свойства с данным именем (
Эти процедуры могут быть использованы в вашем программе Delphi для динамической проверки и установки свойств объектов на этапе выполнения. Например:
В этом примере В статье рассмотрен алгоритм определения наличия у объекта конкретного свойства с помощью функции hasprop и процедуры setcomppropstring, написанных на языке Delphi. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |