RTTI и другие трюки с информацией о классах, модулях и т.п. Delphi — среда быстрой разработки, где в качестве языка программирования используется Object Pascal. На сегодняшний день позволяет разрабатывать ПО для Microsoft Windows, Mac OS, iOS и Android и входит в состав Embarcadero RAD Studio https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p.feed 2022-09-13T04:33:51+07:00 Delphi help info@delphi-hlp.ru Joomla! - Open Source Content Management Имя класса компонента и модуля 2013-11-26T16:21:24+07:00 2013-11-26T16:21:24+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/imya-klassa-komponenta-i-modulya.html Super User toto44@inbox.ru <p><span style="color: #000000;"> Мне необходима функция, которая возвращала бы имя класса компонента и имя модуля, где определен данный класс. </span></p> <p><span style="color: #000000;"> Например: xxx('TPanel') возвращала бы 'ExtCtrls' </span></p> <p><span style="color: #000000;"> Также мне необходима функция, возвращающая список имен страниц палитры компонентов.</span></p> <p> </p> <div style="text-align: justify; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 7px 0px 7px 0px;"> <table style="background-color: #ffffc4; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-style: solid; border-width: 1px; border-spacing: 0px;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-color: #c0c0c0 #000000 #000000 #c0c0c0; border-style: solid; border-width: 1px;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-color: #c0c0c0 #000000 #000000 #c0c0c0; border-style: solid; border-width: 1px;"> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">Uses</span><span class="f_CodeExample" style="color: #000000;"> TypInfo;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">Function</span><span class="f_CodeExample" style="color: #000000;"> ObjectsUnit (Obj: TClass): </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">String</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">Begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := GetTypeData (PTypeInfo(Obj.ClassInfo))^.UnitName</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p><span style="color: #000000;"> </span></p> <p><span style="color: #000000;">Для создания описанной вами функции "Какой модуль" могут использоваться описанные в TOOLINTF.INT методы GetModuleCount, GetModuleName, GetComponentCount и GetComponentName. </span></p> <p><span style="color: #000000;">Для получения представления о формате палитры компонентов обратитесь к файлу DELPHI.INI.</span></p> <p><span style="color: #000000;"> Мне необходима функция, которая возвращала бы имя класса компонента и имя модуля, где определен данный класс. </span></p> <p><span style="color: #000000;"> Например: xxx('TPanel') возвращала бы 'ExtCtrls' </span></p> <p><span style="color: #000000;"> Также мне необходима функция, возвращающая список имен страниц палитры компонентов.</span></p> <p> </p> <div style="text-align: justify; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 7px 0px 7px 0px;"> <table style="background-color: #ffffc4; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-style: solid; border-width: 1px; border-spacing: 0px;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-color: #c0c0c0 #000000 #000000 #c0c0c0; border-style: solid; border-width: 1px;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-color: #c0c0c0 #000000 #000000 #c0c0c0; border-style: solid; border-width: 1px;"> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">Uses</span><span class="f_CodeExample" style="color: #000000;"> TypInfo;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">Function</span><span class="f_CodeExample" style="color: #000000;"> ObjectsUnit (Obj: TClass): </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">String</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">Begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := GetTypeData (PTypeInfo(Obj.ClassInfo))^.UnitName</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p><span style="color: #000000;"> </span></p> <p><span style="color: #000000;">Для создания описанной вами функции "Какой модуль" могут использоваться описанные в TOOLINTF.INT методы GetModuleCount, GetModuleName, GetComponentCount и GetComponentName. </span></p> <p><span style="color: #000000;">Для получения представления о формате палитры компонентов обратитесь к файлу DELPHI.INI.</span></p> Инспектор объектов и метаданные 2013-11-26T16:21:33+07:00 2013-11-26T16:21:33+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/inspektor-ob-ektov-i-metadannye.html Super User toto44@inbox.ru <p>Предмет данной статьи - инспектор объектов как средство, доступное конечному пользователю некоторой прикладной программы. Само понятие "инспектор" трактуется в данном случае очень широко: инспектор - это инструмент прикладной программы, с помощью которого пользователь может посмотреть и изменить свойства тех объектов, с которыми он работает. Отметим, что речь идет о любых объектах прикладного уровня, а не только о визуальных компонентах (как в Delphi).</p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/inspektor-ob-ektov-i-metadannye.html">Подробнее...</a></p> <p>Предмет данной статьи - инспектор объектов как средство, доступное конечному пользователю некоторой прикладной программы. Само понятие "инспектор" трактуется в данном случае очень широко: инспектор - это инструмент прикладной программы, с помощью которого пользователь может посмотреть и изменить свойства тех объектов, с которыми он работает. Отметим, что речь идет о любых объектах прикладного уровня, а не только о визуальных компонентах (как в Delphi).</p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/inspektor-ob-ektov-i-metadannye.html">Подробнее...</a></p> Как выполнить метод по его имени? 2013-11-26T16:21:13+07:00 2013-11-26T16:21:13+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-vypolnit-metod-po-ego-imeni.html Super User toto44@inbox.ru <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Как выполнить метод по его имени?</span></p> <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Ниже представлен пример кода:</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-vypolnit-metod-po-ego-imeni.html">Подробнее...</a></p> <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Как выполнить метод по его имени?</span></p> <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Ниже представлен пример кода:</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-vypolnit-metod-po-ego-imeni.html">Подробнее...</a></p> Как выяснить имеет ли объект определённое свойство? 2013-11-26T16:21:54+07:00 2013-11-26T16:21:54+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-vyyasnit-imeet-li-ob-ekt-opredeljonnoe-svojstvo.html Super User toto44@inbox.ru <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;"><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;"><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Как выяснить имеет ли объект определённое свойство?</span></span></span></p> <p>Ниже представлен пример кода:</p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-vyyasnit-imeet-li-ob-ekt-opredeljonnoe-svojstvo.html">Подробнее...</a></p> <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;"><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;"><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Как выяснить имеет ли объект определённое свойство?</span></span></span></p> <p>Ниже представлен пример кода:</p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-vyyasnit-imeet-li-ob-ekt-opredeljonnoe-svojstvo.html">Подробнее...</a></p> Как динамически прочитать информацию о классе 2013-11-26T16:21:27+07:00 2013-11-26T16:21:27+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-dinamicheski-prochitat-informatsiyu-o-klasse.html Super User toto44@inbox.ru <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Как динамически прочитать информацию о классе</span>:</p> <p>Ниже представлен код:</p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-dinamicheski-prochitat-informatsiyu-o-klasse.html">Подробнее...</a></p> <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Как динамически прочитать информацию о классе</span>:</p> <p>Ниже представлен код:</p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-dinamicheski-prochitat-informatsiyu-o-klasse.html">Подробнее...</a></p> Как изменить значение свойства компонента по имени? 2013-11-26T16:20:59+07:00 2013-11-26T16:20:59+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-izmenit-znachenie-svojstva-komponenta-po-imeni.html Super User toto44@inbox.ru <p><span style="font-size: 9pt; font-family: 'Courier New'; font-weight: bold; color: #008000;">  <br /></span></p> <div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px;"> <table style="background-color: #ffffc4; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-style: solid; border-width: 1px; border-spacing: 0px;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-color: #c0c0c0 #000000 #000000 #c0c0c0; border-style: solid; border-width: 1px;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-color: #c0c0c0 #000000 #000000 #c0c0c0; border-style: solid; border-width: 1px;"> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">function</span><span class="f_CodeExample" style="color: #000000;"> GetProperty(AControl: TPersistent; AProperty: </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">String</span><span class="f_CodeExample" style="color: #000000;">): PPropInfo;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> props: PPropList;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> typeData: PTypeData;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">nil</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">if</span><span class="f_CodeExample" style="color: #000000;"> (AControl = </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">nil</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">or</span><span class="f_CodeExample" style="color: #000000;"> (AControl.ClassInfo = </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">nil</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> typeData := GetTypeData(AControl.ClassInfo);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">if</span><span class="f_CodeExample" style="color: #000000;"> (typeData = </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">nil</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">or</span><span class="f_CodeExample" style="color: #000000;"> (typeData^.PropCount = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> GetMem(props, typeData^.PropCount * SizeOf(Pointer));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">try</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    GetPropInfos(AControl.ClassInfo, props);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">to</span><span class="f_CodeExample" style="color: #000000;"> typeData^.PropCount - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">with</span><span class="f_CodeExample" style="color: #000000;"> Props^[i]^ </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">        </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">if</span><span class="f_CodeExample" style="color: #000000;"> (</span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">Name</span><span class="f_CodeExample" style="color: #000000;"> = AProperty) </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">          result := Props^[i];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">finally</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    FreeMem(props);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> propInfo: PPropInfo;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PropInfo := GetProperty(Button1.Font, </span><span class="f_CodeExample" style="color: #ff0000;">'Name'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">if</span><span class="f_CodeExample" style="color: #000000;"> PropInfo &lt;&gt; </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">nil</span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    SetStrProp(Button1.Font, PropInfo, </span><span class="f_CodeExample" style="color: #ff0000;">'Arial'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-izmenit-znachenie-svojstva-komponenta-po-imeni.html">Подробнее...</a></p> <p><span style="font-size: 9pt; font-family: 'Courier New'; font-weight: bold; color: #008000;">  <br /></span></p> <div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px;"> <table style="background-color: #ffffc4; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-style: solid; border-width: 1px; border-spacing: 0px;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-color: #c0c0c0 #000000 #000000 #c0c0c0; border-style: solid; border-width: 1px;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-color: #c0c0c0 #000000 #000000 #c0c0c0; border-style: solid; border-width: 1px;"> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">function</span><span class="f_CodeExample" style="color: #000000;"> GetProperty(AControl: TPersistent; AProperty: </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">String</span><span class="f_CodeExample" style="color: #000000;">): PPropInfo;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> props: PPropList;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> typeData: PTypeData;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">nil</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">if</span><span class="f_CodeExample" style="color: #000000;"> (AControl = </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">nil</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">or</span><span class="f_CodeExample" style="color: #000000;"> (AControl.ClassInfo = </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">nil</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> typeData := GetTypeData(AControl.ClassInfo);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">if</span><span class="f_CodeExample" style="color: #000000;"> (typeData = </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">nil</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">or</span><span class="f_CodeExample" style="color: #000000;"> (typeData^.PropCount = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> GetMem(props, typeData^.PropCount * SizeOf(Pointer));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">try</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    GetPropInfos(AControl.ClassInfo, props);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">to</span><span class="f_CodeExample" style="color: #000000;"> typeData^.PropCount - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">      </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">with</span><span class="f_CodeExample" style="color: #000000;"> Props^[i]^ </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">        </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">if</span><span class="f_CodeExample" style="color: #000000;"> (</span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">Name</span><span class="f_CodeExample" style="color: #000000;"> = AProperty) </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">          result := Props^[i];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">finally</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    FreeMem(props);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> propInfo: PPropInfo;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PropInfo := GetProperty(Button1.Font, </span><span class="f_CodeExample" style="color: #ff0000;">'Name'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">if</span><span class="f_CodeExample" style="color: #000000;"> PropInfo &lt;&gt; </span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">nil</span><span class="f_CodeExample" style="font-weight: bold; color: #008000;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">    SetStrProp(Button1.Font, PropInfo, </span><span class="f_CodeExample" style="color: #ff0000;">'Arial'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="font-weight: bold; color: #008000;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-izmenit-znachenie-svojstva-komponenta-po-imeni.html">Подробнее...</a></p> Как изменить цвет всех компонентов на форме в Run-time? 2013-11-26T16:22:22+07:00 2013-11-26T16:22:22+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-izmenit-tsvet-vsekh-komponentov-na-forme-v-run-time.html Super User toto44@inbox.ru <p><span style="color: #000000;">I would like to change the font color on all components on a form at runtime (and the components owned by the components etc). I devised a recursive algorithm using RTTI that accepts a TComponent as a parameter. It works to some extent, but I still have to use 'if' statements to cast the object to a particular descendant, resulting in about 30 lines of code to test for all of the components I use. Also, some objects (TColumnTitle), are not descended from TComponent, even though they have a font property.</span></p> <p><span style="color: #000000;"> This may do the trick (with D6 and maybe D5):</span></p> <p><span style="color: #000000;"> </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-izmenit-tsvet-vsekh-komponentov-na-forme-v-run-time.html">Подробнее...</a></p> <p><span style="color: #000000;">I would like to change the font color on all components on a form at runtime (and the components owned by the components etc). I devised a recursive algorithm using RTTI that accepts a TComponent as a parameter. It works to some extent, but I still have to use 'if' statements to cast the object to a particular descendant, resulting in about 30 lines of code to test for all of the components I use. Also, some objects (TColumnTitle), are not descended from TComponent, even though they have a font property.</span></p> <p><span style="color: #000000;"> This may do the trick (with D6 and maybe D5):</span></p> <p><span style="color: #000000;"> </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-izmenit-tsvet-vsekh-komponentov-na-forme-v-run-time.html">Подробнее...</a></p> Как определить, насдледовано ли свойство от определённого класса? 2013-11-26T16:22:05+07:00 2013-11-26T16:22:05+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-opredelit-nasdledovano-li-svojstvo-ot-opredeljonnogo-klassa.html Super User toto44@inbox.ru <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Как определить, насдледовано ли свойство от определённого класса?</span></p> <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Ниже представлен пример кода:</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-opredelit-nasdledovano-li-svojstvo-ot-opredeljonnogo-klassa.html">Подробнее...</a></p> <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Как определить, насдледовано ли свойство от определённого класса?</span></p> <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Ниже представлен пример кода:</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-opredelit-nasdledovano-li-svojstvo-ot-opredeljonnogo-klassa.html">Подробнее...</a></p> Как определить, является ли метод потомком TNotifyEvent? 2013-11-26T16:22:01+07:00 2013-11-26T16:22:01+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-opredelit-yavlyaetsya-li-metod-potomkom-tnotifyevent.html Super User toto44@inbox.ru <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;"><span style="color: #000000;">If I am given a TPersistent object, and a method name, is there a way to determine if the name is an event of TNotifyEvent type? For example, given a TPersistent lMyObj and an event name, "OnDataChanged", how can I determine if OnDataChanged is a TNotifyEvent?</span><br /></span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-opredelit-yavlyaetsya-li-metod-potomkom-tnotifyevent.html">Подробнее...</a></p> <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;"><span style="color: #000000;">If I am given a TPersistent object, and a method name, is there a way to determine if the name is an event of TNotifyEvent type? For example, given a TPersistent lMyObj and an event name, "OnDataChanged", how can I determine if OnDataChanged is a TNotifyEvent?</span><br /></span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-opredelit-yavlyaetsya-li-metod-potomkom-tnotifyevent.html">Подробнее...</a></p> Как получить значение свойства в виде варианта по тексту имени свойства? 2013-11-26T16:21:48+07:00 2013-11-26T16:21:48+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-poluchit-znachenie-svojstva-v-vide-varianta-po-tekstu-imeni-svojstva.html Super User toto44@inbox.ru <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Как получить значение свойства в виде варианта по тексту имени свойства?</span></p> <p>Ниже представлен пример кода:</p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-poluchit-znachenie-svojstva-v-vide-varianta-po-tekstu-imeni-svojstva.html">Подробнее...</a></p> <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Как получить значение свойства в виде варианта по тексту имени свойства?</span></p> <p>Ниже представлен пример кода:</p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-poluchit-znachenie-svojstva-v-vide-varianta-po-tekstu-imeni-svojstva.html">Подробнее...</a></p> Как получить контекст свойства по его целочисленному значению? 2013-11-26T16:21:44+07:00 2013-11-26T16:21:44+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-poluchit-kontekst-svojstva-po-ego-tselochislennomu-znacheniyu.html Super User toto44@inbox.ru <p>Как получить контекст свойства по его целочисленному значению?</p> <p>Ниже представлен пример кода:</p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-poluchit-kontekst-svojstva-po-ego-tselochislennomu-znacheniyu.html">Подробнее...</a></p> <p>Как получить контекст свойства по его целочисленному значению?</p> <p>Ниже представлен пример кода:</p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-poluchit-kontekst-svojstva-po-ego-tselochislennomu-znacheniyu.html">Подробнее...</a></p> Как получить строковое значение перечисляемого типа? 2013-11-26T16:21:17+07:00 2013-11-26T16:21:17+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-poluchit-strokovoe-znachenie-perechislyaemogo-tipa.html Super User toto44@inbox.ru <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;"><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Как получить строковое значение перечисляемого типа?</span></span></p> <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Ниже представлен пример кода:</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-poluchit-strokovoe-znachenie-perechislyaemogo-tipa.html">Подробнее...</a></p> <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;"><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Как получить строковое значение перечисляемого типа?</span></span></p> <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Ниже представлен пример кода:</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-poluchit-strokovoe-znachenie-perechislyaemogo-tipa.html">Подробнее...</a></p> Как присвоить все значения полей одного класса, другому такому же классу? 2013-11-26T16:22:12+07:00 2013-11-26T16:22:12+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-prisvoit-vse-znacheniya-polej-odnogo-klassa-drugomu-takomu-zhe-klassu.html Super User toto44@inbox.ru <p><span style="color: #000000;"> How can I assign all property values (or if it's not possible only published property values, or some of them) of one class (TComponent) to another instance of the same class? What I want to do is:</span></p> <p><span style="color: #000000;"> </span></p> <div style="text-align: justify; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 7px 0px 7px 0px;"> <table style="background-color: #ffffc4; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-style: solid; border-width: 1px; border-spacing: 0px;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-color: #c0c0c0 #000000 #000000 #c0c0c0; border-style: solid; border-width: 1px;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-color: #c0c0c0 #000000 #000000 #c0c0c0; border-style: solid; border-width: 1px;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyComponent1.</span><span class="f_CodeExample" style="color: #000080;">{property1}</span><span class="f_CodeExample" style="color: #000000;"> := MyComponent2.</span><span class="f_CodeExample" style="color: #000080;">{property1}</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{...}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyComponent2.</span><span class="f_CodeExample" style="color: #000080;">{propertyN}</span><span class="f_CodeExample" style="color: #000000;"> := MyComponent2.</span><span class="f_CodeExample" style="color: #000080;">{propertyN}</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p><span style="color: #000000;"> </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-prisvoit-vse-znacheniya-polej-odnogo-klassa-drugomu-takomu-zhe-klassu.html">Подробнее...</a></p> <p><span style="color: #000000;"> How can I assign all property values (or if it's not possible only published property values, or some of them) of one class (TComponent) to another instance of the same class? What I want to do is:</span></p> <p><span style="color: #000000;"> </span></p> <div style="text-align: justify; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 7px 0px 7px 0px;"> <table style="background-color: #ffffc4; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-style: solid; border-width: 1px; border-spacing: 0px;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-color: #c0c0c0 #000000 #000000 #c0c0c0; border-style: solid; border-width: 1px;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-color: #c0c0c0 #000000 #000000 #c0c0c0; border-style: solid; border-width: 1px;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyComponent1.</span><span class="f_CodeExample" style="color: #000080;">{property1}</span><span class="f_CodeExample" style="color: #000000;"> := MyComponent2.</span><span class="f_CodeExample" style="color: #000080;">{property1}</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{...}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MyComponent2.</span><span class="f_CodeExample" style="color: #000080;">{propertyN}</span><span class="f_CodeExample" style="color: #000000;"> := MyComponent2.</span><span class="f_CodeExample" style="color: #000080;">{propertyN}</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p><span style="color: #000000;"> </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-prisvoit-vse-znacheniya-polej-odnogo-klassa-drugomu-takomu-zhe-klassu.html">Подробнее...</a></p> Как прочитать весь список Published методов? 2013-11-26T16:21:51+07:00 2013-11-26T16:21:51+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-prochitat-ves-spisok-published-metodov.html Super User toto44@inbox.ru <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;"><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Как прочитать весь список Published методов?</span></span></p> <p>Ниже представлен пример кода:</p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-prochitat-ves-spisok-published-metodov.html">Подробнее...</a></p> <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;"><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Как прочитать весь список Published методов?</span></span></p> <p>Ниже представлен пример кода:</p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-prochitat-ves-spisok-published-metodov.html">Подробнее...</a></p> Как прочитать значение свойства компонента по имени? 2013-11-26T16:21:40+07:00 2013-11-26T16:21:40+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-prochitat-znachenie-svojstva-komponenta-po-imeni.html Super User toto44@inbox.ru <p><span style="color: #000000;"> You may need to know at runtime what properties are available for a particular component at runtime. The list can be obtained by a call to GetPropList. The types, functions and procedures, including GetPropList, that allow access to this property information reside in the VCL source file TYPINFO.PAS.</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-prochitat-znachenie-svojstva-komponenta-po-imeni.html">Подробнее...</a></p> <p><span style="color: #000000;"> You may need to know at runtime what properties are available for a particular component at runtime. The list can be obtained by a call to GetPropList. The types, functions and procedures, including GetPropList, that allow access to this property information reside in the VCL source file TYPINFO.PAS.</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-prochitat-znachenie-svojstva-komponenta-po-imeni.html">Подробнее...</a></p> Как прочитать свойство напрямую из его ресурса? 2013-11-26T16:22:08+07:00 2013-11-26T16:22:08+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-prochitat-svojstvo-napryamuyu-iz-ego-resursa.html Super User toto44@inbox.ru <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;"><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Как прочитать свойство напрямую из его ресурса?</span></span></p> <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Ниже представлен пример кода:</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-prochitat-svojstvo-napryamuyu-iz-ego-resursa.html">Подробнее...</a></p> <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;"><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Как прочитать свойство напрямую из его ресурса?</span></span></p> <p><span style="font-size: 11pt; font-family: 'Times New Roman'; color: #000000;">Ниже представлен пример кода:</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-prochitat-svojstvo-napryamuyu-iz-ego-resursa.html">Подробнее...</a></p> Как сделать текстовый список всех доступных свойств перечисляемого типа? 2013-11-26T16:21:10+07:00 2013-11-26T16:21:10+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-sdelat-tekstovyj-spisok-vsekh-dostupnykh-svojstv-perechislyaemogo-tipa.html Super User toto44@inbox.ru <p><span style="color: #000000;"> I need to get a list of strings (like a StringList) with the possible values for a TBrushStyle property (bsSolid, bsClear, bsHorizontal, for example). I want to build a ComboBox with this options. How can I set the property Items of my ComboBox directly with all the values from the enumerated type TBrushStyle? My ComboBox will be alike the Property Editor for this type.</span></p> <p><span style="color: #000000;"> You can use runtime type information (RTTI) to do that. Below is an example:</span></p> <p><span style="color: #000000;"> </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-sdelat-tekstovyj-spisok-vsekh-dostupnykh-svojstv-perechislyaemogo-tipa.html">Подробнее...</a></p> <p><span style="color: #000000;"> I need to get a list of strings (like a StringList) with the possible values for a TBrushStyle property (bsSolid, bsClear, bsHorizontal, for example). I want to build a ComboBox with this options. How can I set the property Items of my ComboBox directly with all the values from the enumerated type TBrushStyle? My ComboBox will be alike the Property Editor for this type.</span></p> <p><span style="color: #000000;"> You can use runtime type information (RTTI) to do that. Below is an example:</span></p> <p><span style="color: #000000;"> </span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-sdelat-tekstovyj-spisok-vsekh-dostupnykh-svojstv-perechislyaemogo-tipa.html">Подробнее...</a></p> Как сохранить значение свойства в поток? 2013-11-26T16:21:58+07:00 2013-11-26T16:21:58+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-sokhranit-znachenie-svojstva-v-potok.html Super User toto44@inbox.ru <p><span style="font-style: italic;">How can I save properties of a TList to a stream? I need the entire list to be saved as a whole and not as individual objects.</span></p> <p><span style="font-style: italic;"> </span>A TList doesn't have any intrinsic streaming capability built into it, but it is very easy to stream anything that you want with a little elbow grease. Think about it: a stream is data. Classes have properties, whose values are data. It isn't too hard to write property data to a stream. Here's a simple example to get you going. This is but just one of many possible approaches to saving object property data to a stream:</p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-sokhranit-znachenie-svojstva-v-potok.html">Подробнее...</a></p> <p><span style="font-style: italic;">How can I save properties of a TList to a stream? I need the entire list to be saved as a whole and not as individual objects.</span></p> <p><span style="font-style: italic;"> </span>A TList doesn't have any intrinsic streaming capability built into it, but it is very easy to stream anything that you want with a little elbow grease. Think about it: a stream is data. Classes have properties, whose values are data. It isn't too hard to write property data to a stream. Here's a simple example to get you going. This is but just one of many possible approaches to saving object property data to a stream:</p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-sokhranit-znachenie-svojstva-v-potok.html">Подробнее...</a></p> Как узнать имя файла моей программы? 2013-11-26T16:21:20+07:00 2013-11-26T16:21:20+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kak-uznat-imya-fajla-moej-programmy.html Super User toto44@inbox.ru <p><span style="font-size: 9pt; font-family: 'Courier New';"> </span></p> <div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px;"> <table style="background-color: #ffffc4; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-style: solid; border-width: 1px; border-spacing: 0px;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-color: #c0c0c0 #000000 #000000 #c0c0c0; border-style: solid; border-width: 1px;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-color: #c0c0c0 #000000 #000000 #c0c0c0; border-style: solid; border-width: 1px;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Application.ExeName</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ParamStr(</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">GetModuleFileName()</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p><span style="font-size: 9pt; font-family: 'Courier New';"> </span></p> <div style="text-align: left; text-indent: 0px; padding: 0px 0px 0px 0px; margin: 0px 0px 0px 0px;"> <table style="background-color: #ffffc4; border-color: #000000 #c0c0c0 #c0c0c0 #000000; border-style: solid; border-width: 1px; border-spacing: 0px;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-color: #c0c0c0 #000000 #000000 #c0c0c0; border-style: solid; border-width: 1px;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; font-weight: bold; color: #000000;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-color: #c0c0c0 #000000 #000000 #c0c0c0; border-style: solid; border-width: 1px;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Application.ExeName</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ParamStr(</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">GetModuleFileName()</span></p> </td> </tr> </tbody> </table> </div> <p> </p> Копирование свойств одного компонента другому 2013-11-26T16:21:32+07:00 2013-11-26T16:21:32+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kopirovanie-svojstv-odnogo-komponenta-drugomu.html Super User toto44@inbox.ru <p><span class="f_Heading1">Копирование свойств одного компонента другому</span></p> <p><span class="f_Heading1">Ниже представлен фрагмент кода:</span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kopirovanie-svojstv-odnogo-komponenta-drugomu.html">Подробнее...</a></p> <p><span class="f_Heading1">Копирование свойств одного компонента другому</span></p> <p><span class="f_Heading1">Ниже представлен фрагмент кода:</span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/kopirovanie-svojstv-odnogo-komponenta-drugomu.html">Подробнее...</a></p> Теория и практика использования RTTI 2013-11-26T16:09:06+07:00 2013-11-26T16:09:06+07:00 https://delphi-hlp.ru/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/teoriya-i-praktika-ispolzovaniya-rtti.html Super User toto44@inbox.ru <p><span style="color: #000000;">Delphi </span><span style="color: #000000;">—</span><span style="color: #000000;"> это мощная среда визуальной разработки программ сочетающая в себе весьма простой и эффективный язык программирования, удивительный по быстроте компилятор и подкупающую открытость (в состав Delphi входят исходные тексты стандартных модулей и практически всех компонент библиотеки VCL). Однако, как и на солнце, так и в Delphi существуют пятна (на солнце черные, а в Delphi </span><span style="color: #000000;">—</span><span style="color: #000000;"> белые), пятна недокументированных (или почти не документированных) возможностей. Одно из таких пятен </span><span style="color: #000000;">—</span><span style="color: #000000;"> это информация о типах времени исполнения и методы работы с ней.</span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/teoriya-i-praktika-ispolzovaniya-rtti.html">Подробнее...</a></p> <p><span style="color: #000000;">Delphi </span><span style="color: #000000;">—</span><span style="color: #000000;"> это мощная среда визуальной разработки программ сочетающая в себе весьма простой и эффективный язык программирования, удивительный по быстроте компилятор и подкупающую открытость (в состав Delphi входят исходные тексты стандартных модулей и практически всех компонент библиотеки VCL). Однако, как и на солнце, так и в Delphi существуют пятна (на солнце черные, а в Delphi </span><span style="color: #000000;">—</span><span style="color: #000000;"> белые), пятна недокументированных (или почти не документированных) возможностей. Одно из таких пятен </span><span style="color: #000000;">—</span><span style="color: #000000;"> это информация о типах времени исполнения и методы работы с ней.</span></p> <p class="feed-readmore"><a target="_blank" href ="/index.php/rtti-i-drugie-tryuki-s-informatsiej-o-klassakh-modulyakh-i-t-p/teoriya-i-praktika-ispolzovaniya-rtti.html">Подробнее...</a></p>