Работа с ToolsAPI (Эксперты и редакторы свойств) Delphi — среда быстрой разработки, где в качестве языка программирования используется Object Pascal. На сегодняшний день позволяет разрабатывать ПО для Microsoft Windows, Mac OS, iOS и Android и входит в состав Embarcadero RAD Studio https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv.feed 2022-09-13T04:44:56+07:00 Delphi help info@delphi-hlp.ru Joomla! - Open Source Content Management Borland Delphi/C++Builder ToolsAPI, или взгляд на Borland IDE изнутри 2013-08-13T20:38:08+07:00 2013-08-13T20:38:08+07:00 https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/borland-delphi-c-builder-toolsapi-ili-vzglyad-na-borland-ide-iznutri.html Super User toto44@inbox.ru <p style="margin: 7px 0px;"><span style="font-family: 'Times New Roman'; color: #0000ff; text-decoration: underline;">Андрей</span><span style="font-family: 'Times New Roman'; color: #0000ff; text-decoration: underline;">Семак</span></p> <p style="margin-top: 7px; margin-right: 0px; margin-bottom: 7px; margin-left: 0px; text-align: center;"><span style="font-family: 'Times New Roman'; color: #0000ff; text-decoration: underline;"><span style="font-family: 'Arial'; color: #996600; font-size: 8pt; font-weight: bold;">Введение</span></span></p> <p style="text-align: justify; text-indent: 24px; margin: 7px 0px;"><span style="font-family: 'Arial'; color: #000000; font-size: 8pt;">Рано или поздно каждому профессиональному разработчику программного обеспечения становится тесной среда обитания. По мнению автора, читатель понял, что речь идет о среде разработки, в которой обитает разработчик. У кого это "дом", у кого "строительная площадка", а у кого и то, и другое. В этой статье мы рассмотрим возможность расширения нашего дома. Мы покажем, как именно можно наращивать мощность IDE своими силами, будь то среда разработки Borland Delphi или Borland C++ Builder. </span></p> <p style="text-align: justify; text-indent: 24px; margin: 7px 0px;"><span style="font-family: 'Arial'; color: #000000; font-size: 8pt;">У многих из вас возникало желание добавить несколько полезных функций в любимое IDE. Разработчики фирмы Borland не оставили без внимания эту полезную возможность. Они разработали набор интерфейсов, позволяющих расширять возможности среды, хотя, к сожалению, отсутствие документации по данному вопросу мешает самостоятельному изучению. Жалкие комментарии в исходных текстах не могут воспроизвести всю мощь, которую предоставляет IDE разработчику расширений. Автор статьи попытается передать читателю опыт своих изысканий и постарается своими советами уберечь читателя от многих подводных камней. </span></p> <p style="text-align: justify; text-indent: 24px; margin: 7px 0px;"><span style="font-family: 'Arial'; color: #000000; font-size: 8pt;">Документ построен таким образом, чтобы мы переходили от этапа к этапу от простого к сложному. Насколько это удалось, судить вам. Вместе c вами мы рассмотрим на примерах все сервисы, предоставляемые IDE Borland Delphi\C++Builder. </span></p> <p style="text-align: justify;"><span style="font-family: 'Arial'; color: #000000; font-size: 8pt;">Итак, начнем?</span></p> <p style="text-align: justify;"> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/borland-delphi-c-builder-toolsapi-ili-vzglyad-na-borland-ide-iznutri.html">Подробнее...</a></p> <p style="margin: 7px 0px;"><span style="font-family: 'Times New Roman'; color: #0000ff; text-decoration: underline;">Андрей</span><span style="font-family: 'Times New Roman'; color: #0000ff; text-decoration: underline;">Семак</span></p> <p style="margin-top: 7px; margin-right: 0px; margin-bottom: 7px; margin-left: 0px; text-align: center;"><span style="font-family: 'Times New Roman'; color: #0000ff; text-decoration: underline;"><span style="font-family: 'Arial'; color: #996600; font-size: 8pt; font-weight: bold;">Введение</span></span></p> <p style="text-align: justify; text-indent: 24px; margin: 7px 0px;"><span style="font-family: 'Arial'; color: #000000; font-size: 8pt;">Рано или поздно каждому профессиональному разработчику программного обеспечения становится тесной среда обитания. По мнению автора, читатель понял, что речь идет о среде разработки, в которой обитает разработчик. У кого это "дом", у кого "строительная площадка", а у кого и то, и другое. В этой статье мы рассмотрим возможность расширения нашего дома. Мы покажем, как именно можно наращивать мощность IDE своими силами, будь то среда разработки Borland Delphi или Borland C++ Builder. </span></p> <p style="text-align: justify; text-indent: 24px; margin: 7px 0px;"><span style="font-family: 'Arial'; color: #000000; font-size: 8pt;">У многих из вас возникало желание добавить несколько полезных функций в любимое IDE. Разработчики фирмы Borland не оставили без внимания эту полезную возможность. Они разработали набор интерфейсов, позволяющих расширять возможности среды, хотя, к сожалению, отсутствие документации по данному вопросу мешает самостоятельному изучению. Жалкие комментарии в исходных текстах не могут воспроизвести всю мощь, которую предоставляет IDE разработчику расширений. Автор статьи попытается передать читателю опыт своих изысканий и постарается своими советами уберечь читателя от многих подводных камней. </span></p> <p style="text-align: justify; text-indent: 24px; margin: 7px 0px;"><span style="font-family: 'Arial'; color: #000000; font-size: 8pt;">Документ построен таким образом, чтобы мы переходили от этапа к этапу от простого к сложному. Насколько это удалось, судить вам. Вместе c вами мы рассмотрим на примерах все сервисы, предоставляемые IDE Borland Delphi\C++Builder. </span></p> <p style="text-align: justify;"><span style="font-family: 'Arial'; color: #000000; font-size: 8pt;">Итак, начнем?</span></p> <p style="text-align: justify;"> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/borland-delphi-c-builder-toolsapi-ili-vzglyad-na-borland-ide-iznutri.html">Подробнее...</a></p> Delphi 7 ToolsAPI: Компоненты 2013-08-13T19:16:36+07:00 2013-08-13T19:16:36+07:00 https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/delphi-7-toolsapi-komponenty.html Super User toto44@inbox.ru <p>Создание pop-up меню своего компонента и кое-что еще о классе TComponentExpert</p> <p>Давайте рассмотрим создание простейшего одно уровневого контекстного меню на своем компоненте, которое будет открываться при щелчке правой кнопкой по нему в самом верху контекстного меню Delphi.</p> <p> </p> <p>Прежде всего вам следует разделить код вашего компонента на Design-time и Run-time. Для этого перенесите ваш компонент в модуль, с названием, например, MyComponent.pas, а процедуры регистрации его в палитре компонентов (procedure Register и т.д.) в модуль, с названием, например, MyComponentReg. На такие меры приходится идти из-за того, что Borland не включила в исходные коды исходник файла Proxies.pas.</p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/delphi-7-toolsapi-komponenty.html">Подробнее...</a></p> <p>Создание pop-up меню своего компонента и кое-что еще о классе TComponentExpert</p> <p>Давайте рассмотрим создание простейшего одно уровневого контекстного меню на своем компоненте, которое будет открываться при щелчке правой кнопкой по нему в самом верху контекстного меню Delphi.</p> <p> </p> <p>Прежде всего вам следует разделить код вашего компонента на Design-time и Run-time. Для этого перенесите ваш компонент в модуль, с названием, например, MyComponent.pas, а процедуры регистрации его в палитре компонентов (procedure Register и т.д.) в модуль, с названием, например, MyComponentReg. На такие меры приходится идти из-за того, что Borland не включила в исходные коды исходник файла Proxies.pas.</p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/delphi-7-toolsapi-komponenty.html">Подробнее...</a></p> Ещё примеры экспертов 2013-08-13T20:17:18+07:00 2013-08-13T20:17:18+07:00 https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/eshchjo-primery-ekspertov.html Super User toto44@inbox.ru <p> </p> <p>This article introduces you to the world of Delphi Experts. Delphi Experts are DLLs, that will be loaded during the startup sequence of Delphi. This article first appeared on Delphi-PRAXiShttps://www.delphipraxis.net/viewtopic.php?t=5300 in German.</p> <p> </p> <p>NOTE: The techniques shown in this article are valid starting with Delphi 3 or 4 and since Delphi 7 they are deprecated, however, still fully suported by the Delphi IDE.</p> <p> </p> <p class="p_Heading1"><span class="f_Heading1">Installation of a Delphi-IDE-Expert</span></p> <p> </p> <p>Every Delphi-Expert has to be registered in the Windows-Registry. For each Delphi-Version installed on a machine, as well as for each user using the machine, the Delphi-Expert has to be registered separately.</p> <p> </p> <p>In the Registry the Delphi-Expert has to be registered under the folowing key:</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 11pt;">HKCU\Software\Borland\Delphi\X.0\Experts</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/eshchjo-primery-ekspertov.html">Подробнее...</a></p> <p> </p> <p>This article introduces you to the world of Delphi Experts. Delphi Experts are DLLs, that will be loaded during the startup sequence of Delphi. This article first appeared on Delphi-PRAXiShttps://www.delphipraxis.net/viewtopic.php?t=5300 in German.</p> <p> </p> <p>NOTE: The techniques shown in this article are valid starting with Delphi 3 or 4 and since Delphi 7 they are deprecated, however, still fully suported by the Delphi IDE.</p> <p> </p> <p class="p_Heading1"><span class="f_Heading1">Installation of a Delphi-IDE-Expert</span></p> <p> </p> <p>Every Delphi-Expert has to be registered in the Windows-Registry. For each Delphi-Version installed on a machine, as well as for each user using the machine, the Delphi-Expert has to be registered separately.</p> <p> </p> <p>In the Registry the Delphi-Expert has to be registered under the folowing key:</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 11pt;">HKCU\Software\Borland\Delphi\X.0\Experts</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/eshchjo-primery-ekspertov.html">Подробнее...</a></p> Использование открытых интерфейсов 2013-08-13T20:18:49+07:00 2013-08-13T20:18:49+07:00 https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/ispolzovanie-otkrytykh-interfejsov.html Super User toto44@inbox.ru <p><span style="color: #000000;">Одной и наиболее сильных сторон среды программирования Delphi является ее открытая архитектура, благодаря которой Delphi допускает своего рода метапрограммирование, позволяя "программировать среду программирования". Такой подход переводит Delphi на качественно новый уровень систем разработки приложений и позволяет встраивать в этот продукт дополнительные инструментальные средства, поддерживающие практически все этапы создания прикладных систем. Столь широкий спектр возможностей открывается благодаря реализованной в Delphi концепции так называемых открытых интерфейсов, являющихся связующим звеном между IDE (Integrated Development Environment) и внешними инструментами. Данная статья посвящена открытым интерфейсам Delphi и представляет собой обзор представляемых ими возможностей. </span></p> <p> </p> <p><span style="color: #000000;">В Delphi определены шесть открытых интерфейсов: Tool Interface, Design Interface, Expert Interface, File Interface, Edit Interface и Version Control Interface. Вряд ли в рамках данной статьи нам удалось бы детально осветить и проиллюстрировать возможности каждого из них. Более основательно разобраться в рассматриваемых вопросах вам помогут исходные тексты Delphi, благо разработчики снабдили их развернутыми комментариями. Объявления классов, представляющих открытые интерфейсы, содержатся в соответствующих модулях в каталоге ...\Delphi\Source\ToolsAPI. </span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/ispolzovanie-otkrytykh-interfejsov.html">Подробнее...</a></p> <p><span style="color: #000000;">Одной и наиболее сильных сторон среды программирования Delphi является ее открытая архитектура, благодаря которой Delphi допускает своего рода метапрограммирование, позволяя "программировать среду программирования". Такой подход переводит Delphi на качественно новый уровень систем разработки приложений и позволяет встраивать в этот продукт дополнительные инструментальные средства, поддерживающие практически все этапы создания прикладных систем. Столь широкий спектр возможностей открывается благодаря реализованной в Delphi концепции так называемых открытых интерфейсов, являющихся связующим звеном между IDE (Integrated Development Environment) и внешними инструментами. Данная статья посвящена открытым интерфейсам Delphi и представляет собой обзор представляемых ими возможностей. </span></p> <p> </p> <p><span style="color: #000000;">В Delphi определены шесть открытых интерфейсов: Tool Interface, Design Interface, Expert Interface, File Interface, Edit Interface и Version Control Interface. Вряд ли в рамках данной статьи нам удалось бы детально осветить и проиллюстрировать возможности каждого из них. Более основательно разобраться в рассматриваемых вопросах вам помогут исходные тексты Delphi, благо разработчики снабдили их развернутыми комментариями. Объявления классов, представляющих открытые интерфейсы, содержатся в соответствующих модулях в каталоге ...\Delphi\Source\ToolsAPI. </span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/ispolzovanie-otkrytykh-interfejsov.html">Подробнее...</a></p> Как найти все установленные компоненты? 2013-08-13T20:34:35+07:00 2013-08-13T20:34:35+07:00 https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/kak-najti-vse-ustanovlennye-komponenty.html Super User toto44@inbox.ru <p> </p> <p> </p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span><span class="f_CodeExample" style="color: #000000;"> ToolsApi;</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: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">a, i: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">with</span><span class="f_CodeExample" style="color: #000000;"> (BorlandIDEServices </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">as</span><span class="f_CodeExample" style="color: #000000;"> IOTAPackageServices) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> a := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> GetPackageCount - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">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="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> GetComponentCount(a) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{get each component name with GetComponentName(a, i);}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p>https://www. swissdelphicenter.ch/en/tipsindex </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span><span class="f_CodeExample" style="color: #000000;"> ToolsApi;</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: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">a, i: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">with</span><span class="f_CodeExample" style="color: #000000;"> (BorlandIDEServices </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">as</span><span class="f_CodeExample" style="color: #000000;"> IOTAPackageServices) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> a := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> GetPackageCount - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">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="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> GetComponentCount(a) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{get each component name with GetComponentName(a, i);}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p>https://www. swissdelphicenter.ch/en/tipsindex </p> <p> </p> <p> </p> Как создать простейший эксперт? 2013-08-13T19:15:05+07:00 2013-08-13T19:15:05+07:00 https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/kak-sozdat-prostejshij-ekspert.html Super User toto44@inbox.ru <p>  </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">This unit can be compiled into a package and will then appear in the Delphi </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Help menu. </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: #008000; font-weight: bold;">unit</span><span class="f_CodeExample" style="color: #000000;"> SDCSimpleExpert; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span><span class="f_CodeExample" style="color: #000000;"> ToolsApi; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TSDCSimpleExpert = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span><span class="f_CodeExample" style="color: #000000;">(TNotifierObject, IOTAMenuWizard, IOTAWizard) </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">public</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GetIDString: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GetName: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GetState: TWizardState; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> Execute; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GetMenuText: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Register</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">implementation</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span><span class="f_CodeExample" style="color: #000000;"> Dialogs; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Register</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{register expert}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RegisterPackageWizard(TSDCSimpleExpert.Create); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ TSDCSimpleExpert }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TSDCSimpleExpert.Execute; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{code to execute when menu item is clicked}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ShowMessage(</span><span class="f_CodeExample" style="color: #ff0000;">'Hello SwissDelphiCenter Simple Expert.'</span><span class="f_CodeExample" style="color: #000000;">); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TSDCSimpleExpert.GetIDString: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{unique expert identifier}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := </span><span class="f_CodeExample" style="color: #ff0000;">'SwissDelphiCenter.SimpleExpert'</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TSDCSimpleExpert.GetMenuText: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{caption of menu item in help menu}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := </span><span class="f_CodeExample" style="color: #ff0000;">'SwissDelphiCenter Simple Expert'</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TSDCSimpleExpert.GetName: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{name of the expert}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := </span><span class="f_CodeExample" style="color: #ff0000;">'SwissDelphiCenter Simple Expert'</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TSDCSimpleExpert.GetState: TWizardState; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := [wsEnabled]; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">. </span></p> </td> </tr> </tbody> </table> </div> <p>  </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">This unit can be compiled into a package and will then appear in the Delphi </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Help menu. </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: #008000; font-weight: bold;">unit</span><span class="f_CodeExample" style="color: #000000;"> SDCSimpleExpert; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span><span class="f_CodeExample" style="color: #000000;"> ToolsApi; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TSDCSimpleExpert = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span><span class="f_CodeExample" style="color: #000000;">(TNotifierObject, IOTAMenuWizard, IOTAWizard) </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">public</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GetIDString: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GetName: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GetState: TWizardState; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> Execute; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GetMenuText: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Register</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">implementation</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span><span class="f_CodeExample" style="color: #000000;"> Dialogs; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Register</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{register expert}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RegisterPackageWizard(TSDCSimpleExpert.Create); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ TSDCSimpleExpert }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TSDCSimpleExpert.Execute; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{code to execute when menu item is clicked}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ShowMessage(</span><span class="f_CodeExample" style="color: #ff0000;">'Hello SwissDelphiCenter Simple Expert.'</span><span class="f_CodeExample" style="color: #000000;">); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TSDCSimpleExpert.GetIDString: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{unique expert identifier}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := </span><span class="f_CodeExample" style="color: #ff0000;">'SwissDelphiCenter.SimpleExpert'</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TSDCSimpleExpert.GetMenuText: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{caption of menu item in help menu}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := </span><span class="f_CodeExample" style="color: #ff0000;">'SwissDelphiCenter Simple Expert'</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TSDCSimpleExpert.GetName: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{name of the expert}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := </span><span class="f_CodeExample" style="color: #ff0000;">'SwissDelphiCenter Simple Expert'</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TSDCSimpleExpert.GetState: TWizardState; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := [wsEnabled]; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">. </span></p> </td> </tr> </tbody> </table> </div> Как создать свой пункт меню в Дельфи IDE? 2013-08-13T17:07:26+07:00 2013-08-13T17:07:26+07:00 https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/kak-sozdat-svoj-punkt-menyu-v-delfi-ide.html Super User toto44@inbox.ru <p> </p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{....}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span><span class="f_CodeExample" style="color: #000000;"> ToolsApi, Menus; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{....}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">item: TMenuItem; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{get reference to delphi's mainmenu. You can handle it like a common TMainMenu}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">with</span><span class="f_CodeExample" style="color: #000000;"> (BorlandIDEServices </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">as</span><span class="f_CodeExample" style="color: #000000;"> INTAServices).GetMainMenu </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> item := TMenuItem.Create(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> item.Caption := </span><span class="f_CodeExample" style="color: #ff0000;">'A Mewn caption'</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Items.Add(item); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{....}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span><span class="f_CodeExample" style="color: #000000;"> ToolsApi, Menus; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{....}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">item: TMenuItem; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{get reference to delphi's mainmenu. You can handle it like a common TMainMenu}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">with</span><span class="f_CodeExample" style="color: #000000;"> (BorlandIDEServices </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">as</span><span class="f_CodeExample" style="color: #000000;"> INTAServices).GetMainMenu </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> item := TMenuItem.Create(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #000000;">); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> item.Caption := </span><span class="f_CodeExample" style="color: #ff0000;">'A Mewn caption'</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Items.Add(item); </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> </td> </tr> </tbody> </table> </div> Код определения свойств 2013-08-13T20:25:51+07:00 2013-08-13T20:25:51+07:00 https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/kod-opredeleniya-svojstv.html Super User toto44@inbox.ru <p><span style="color: #000000;">Итак вам опять нужно "немного" кода. Вот небольшой примерчик компонента лично для вас и остальных моих читателей. Установите этот компонент в палитру Delphi, бросьте экземпляр на форму, закройте ее и модуль и откройте форму как файл формы, используя в диалоге открытия тип *.dfm. Вы увидите дополнительные свойства 'StringThing' и 'Thing'. Первое - свойство строки, второе - бинарное свойство, фактически запись. Если вы имеете HexEdit (шестнадцатиричный редактор) или что-то аналогичное, взгляните на ваш dfm-файл и вы увидите тэги ваших новых свойств вместе с их именами.</span></p> <p> </p> <p><span style="color: #000000;">Если TReader/TWriter имеет специфические методы для чтения/записи свойств и вы хотите добавить, например, строку, целое, символ или что-то еще (проверьте описание соответствующих методов TReader в файлах помощи), то в этом случае используйте DefineProperty. В случае сложного объекта используйте DefineBinaryProperty и ваши методы чтения и записи получат TStream вместо TReader/TWriter.</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/kod-opredeleniya-svojstv.html">Подробнее...</a></p> <p><span style="color: #000000;">Итак вам опять нужно "немного" кода. Вот небольшой примерчик компонента лично для вас и остальных моих читателей. Установите этот компонент в палитру Delphi, бросьте экземпляр на форму, закройте ее и модуль и откройте форму как файл формы, используя в диалоге открытия тип *.dfm. Вы увидите дополнительные свойства 'StringThing' и 'Thing'. Первое - свойство строки, второе - бинарное свойство, фактически запись. Если вы имеете HexEdit (шестнадцатиричный редактор) или что-то аналогичное, взгляните на ваш dfm-файл и вы увидите тэги ваших новых свойств вместе с их именами.</span></p> <p> </p> <p><span style="color: #000000;">Если TReader/TWriter имеет специфические методы для чтения/записи свойств и вы хотите добавить, например, строку, целое, символ или что-то еще (проверьте описание соответствующих методов TReader в файлах помощи), то в этом случае используйте DefineProperty. В случае сложного объекта используйте DefineBinaryProperty и ваши методы чтения и записи получат TStream вместо TReader/TWriter.</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/kod-opredeleniya-svojstv.html">Подробнее...</a></p> Отладка экспертов 2013-08-13T19:15:36+07:00 2013-08-13T19:15:36+07:00 https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/otladka-ekspertov.html Super User toto44@inbox.ru <p> Debug Delphi 3 experts with Delphi 3</p> <p>Delphi 3 has a new feature "debug DLLs". It can be used to debug experts with the internal debugger. Just follow these simple steps, and debugging an expert can be fun:</p> <p>  </p> <p>Make sure that the expert is not installed. If there is this entry</p> <p>\CURRENT_USER\software\Delphi\3.0\experts,</p> <p>myexpert=\projects\myexpert\expert.dll</p> <p>rename this entry to "expert.xxx". (don't delete it, you'll need it later).</p> <p>Otherwise, you cannot compile a new version.</p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/otladka-ekspertov.html">Подробнее...</a></p> <p> Debug Delphi 3 experts with Delphi 3</p> <p>Delphi 3 has a new feature "debug DLLs". It can be used to debug experts with the internal debugger. Just follow these simple steps, and debugging an expert can be fun:</p> <p>  </p> <p>Make sure that the expert is not installed. If there is this entry</p> <p>\CURRENT_USER\software\Delphi\3.0\experts,</p> <p>myexpert=\projects\myexpert\expert.dll</p> <p>rename this entry to "expert.xxx". (don't delete it, you'll need it later).</p> <p>Otherwise, you cannot compile a new version.</p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/otladka-ekspertov.html">Подробнее...</a></p> Показ свойств во время выполнения программы 2013-08-13T20:33:00+07:00 2013-08-13T20:33:00+07:00 https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/pokaz-svojstv-vo-vremya-vypolneniya-programmy.html Super User toto44@inbox.ru <p><span style="color: #000000;">Я написал компонент-отладчик, выводящий в дереве все компоненты. Попробуйте этот код. Вызывайте функцию DisplayProperties как показано ниже:</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/pokaz-svojstv-vo-vremya-vypolneniya-programmy.html">Подробнее...</a></p> <p><span style="color: #000000;">Я написал компонент-отладчик, выводящий в дереве все компоненты. Попробуйте этот код. Вызывайте функцию DisplayProperties как показано ниже:</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/pokaz-svojstv-vo-vremya-vypolneniya-programmy.html">Подробнее...</a></p> Програмно меняем Delphi's Tool list? 2013-08-13T20:35:24+07:00 2013-08-13T20:35:24+07:00 https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/programno-menyaem-delphi-s-tool-list.html Super User toto44@inbox.ru <p>Програмно меняем Delphi's Tool list?  </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/programno-menyaem-delphi-s-tool-list.html">Подробнее...</a></p> <p>Програмно меняем Delphi's Tool list?  </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/programno-menyaem-delphi-s-tool-list.html">Подробнее...</a></p> Регистрация редактора свойства 2013-08-13T20:32:33+07:00 2013-08-13T20:32:33+07:00 https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/registratsiya-redaktora-svojstva.html Super User toto44@inbox.ru <p> <span style="color: #000000;">Скажем, вы имеете компонент TContainer, содержащий TContainedClass в свойстве с именем 'Contained' - попробуйте добавить следующую строку к процедуре Register вашего компонента:</span></p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RegisterPropertyEditor(TypeInfo(TContainedClass),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TContainer,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'Contained'</span><span class="f_CodeExample" style="color: #000000;">,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TClassProperty);</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/registratsiya-redaktora-svojstva.html">Подробнее...</a></p> <p> <span style="color: #000000;">Скажем, вы имеете компонент TContainer, содержащий TContainedClass в свойстве с именем 'Contained' - попробуйте добавить следующую строку к процедуре Register вашего компонента:</span></p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RegisterPropertyEditor(TypeInfo(TContainedClass),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TContainer,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'Contained'</span><span class="f_CodeExample" style="color: #000000;">,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TClassProperty);</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/registratsiya-redaktora-svojstva.html">Подробнее...</a></p> Редактор свойства Color с заданными ограничениями 2013-08-13T20:33:24+07:00 2013-08-13T20:33:24+07:00 https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/redaktor-svojstva-color-s-zadannymi-ogranicheniyami.html Super User toto44@inbox.ru <p> <span style="color: #000000;">Редактор свойства, пример которого приведен ниже, имеет ограничение на устанавливаемые цвета: только clRed, clWhite или clBlue.</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/redaktor-svojstva-color-s-zadannymi-ogranicheniyami.html">Подробнее...</a></p> <p> <span style="color: #000000;">Редактор свойства, пример которого приведен ниже, имеет ограничение на устанавливаемые цвета: только clRed, clWhite или clBlue.</span></p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/redaktor-svojstva-color-s-zadannymi-ogranicheniyami.html">Подробнее...</a></p> Создание pop-up меню своего компонента и кое-что еще о классе TComponentExpert 2013-08-13T20:37:04+07:00 2013-08-13T20:37:04+07:00 https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/sozdanie-pop-up-menyu-svoego-komponenta-i-koe-chto-eshche-o-klasse-tcomponentexpert.html Super User toto44@inbox.ru <p style="text-align: justify; margin: 7px 0px;"><span style="font-family: 'Times New Roman'; color: #000000;">Давайте</span><span style="font-family: 'Times New Roman'; color: #000000;">рассмотрим</span><span style="font-family: 'Times New Roman'; color: #000000;">создание</span><span style="font-family: 'Times New Roman'; color: #000000;">простейшего</span><span style="font-family: 'Times New Roman'; color: #000000;">одноуровневого</span><span style="font-family: 'Times New Roman'; color: #000000;">контекстного</span><span style="font-family: 'Times New Roman'; color: #000000;">меню</span><span style="font-family: 'Times New Roman'; color: #000000;">на</span><span style="font-family: 'Times New Roman'; color: #000000;">своем</span><span style="font-family: 'Times New Roman'; color: #000000;">компоненте</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">которое</span><span style="font-family: 'Times New Roman'; color: #000000;">будет</span><span style="font-family: 'Times New Roman'; color: #000000;">открываться</span><span style="font-family: 'Times New Roman'; color: #000000;">при</span><span style="font-family: 'Times New Roman'; color: #000000;">щелчке</span><span style="font-family: 'Times New Roman'; color: #000000;">правой</span><span style="font-family: 'Times New Roman'; color: #000000;">кнопкой</span><span style="font-family: 'Times New Roman'; color: #000000;">по</span><span style="font-family: 'Times New Roman'; color: #000000;">нему</span><span style="font-family: 'Times New Roman'; color: #000000;">в</span><span style="font-family: 'Times New Roman'; color: #000000;">самом</span><span style="font-family: 'Times New Roman'; color: #000000;">верху</span><span style="font-family: 'Times New Roman'; color: #000000;">контекстного</span><span style="font-family: 'Times New Roman'; color: #000000;">меню</span><span style="font-family: 'Times New Roman'; color: #000000;"> Delphi. </span></p> <p style="text-align: justify; margin: 7px 0px;"><span style="font-family: 'Times New Roman'; color: #000000;">Прежде</span><span style="font-family: 'Times New Roman'; color: #000000;">всего</span><span style="font-family: 'Times New Roman'; color: #000000;">вам</span><span style="font-family: 'Times New Roman'; color: #000000;">следует</span><span style="font-family: 'Times New Roman'; color: #000000;">разделить</span><span style="font-family: 'Times New Roman'; color: #000000;">код</span><span style="font-family: 'Times New Roman'; color: #000000;">вашего</span><span style="font-family: 'Times New Roman'; color: #000000;">компонента</span><span style="font-family: 'Times New Roman'; color: #000000;">на</span><span style="font-family: 'Times New Roman'; color: #000000;"> Design-time </span><span style="font-family: 'Times New Roman'; color: #000000;">и</span><span style="font-family: 'Times New Roman'; color: #000000;"> Run-time. </span><span style="font-family: 'Times New Roman'; color: #000000;">Для</span><span style="font-family: 'Times New Roman'; color: #000000;">этого</span><span style="font-family: 'Times New Roman'; color: #000000;">перенесите</span><span style="font-family: 'Times New Roman'; color: #000000;">ваш</span><span style="font-family: 'Times New Roman'; color: #000000;">компонент</span><span style="font-family: 'Times New Roman'; color: #000000;">в</span><span style="font-family: 'Times New Roman'; color: #000000;">модуль</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">с</span><span style="font-family: 'Times New Roman'; color: #000000;">названием</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">например</span><span style="font-family: 'Times New Roman'; color: #000000;">, MyComponent.pas, </span><span style="font-family: 'Times New Roman'; color: #000000;">а</span><span style="font-family: 'Times New Roman'; color: #000000;">процедуры</span><span style="font-family: 'Times New Roman'; color: #000000;">регистрации</span><span style="font-family: 'Times New Roman'; color: #000000;">его</span><span style="font-family: 'Times New Roman'; color: #000000;">в</span><span style="font-family: 'Times New Roman'; color: #000000;">палитре</span><span style="font-family: 'Times New Roman'; color: #000000;">компонентов</span><span style="font-family: 'Times New Roman'; color: #000000;"> (procedure Register </span><span style="font-family: 'Times New Roman'; color: #000000;">и</span><span style="font-family: 'Times New Roman'; color: #000000;">т</span><span style="font-family: 'Times New Roman'; color: #000000;">.</span><span style="font-family: 'Times New Roman'; color: #000000;">д</span><span style="font-family: 'Times New Roman'; color: #000000;">.) </span><span style="font-family: 'Times New Roman'; color: #000000;">в</span><span style="font-family: 'Times New Roman'; color: #000000;">модуль</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">с</span><span style="font-family: 'Times New Roman'; color: #000000;">названием</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">например</span><span style="font-family: 'Times New Roman'; color: #000000;">, MyComponentReg. </span><span style="font-family: 'Times New Roman'; color: #000000;">На</span><span style="font-family: 'Times New Roman'; color: #000000;">такие</span><span style="font-family: 'Times New Roman'; color: #000000;">меры</span><span style="font-family: 'Times New Roman'; color: #000000;">приходится</span><span style="font-family: 'Times New Roman'; color: #000000;">идти</span><span style="font-family: 'Times New Roman'; color: #000000;">из</span><span style="font-family: 'Times New Roman'; color: #000000;">-</span><span style="font-family: 'Times New Roman'; color: #000000;">за</span><span style="font-family: 'Times New Roman'; color: #000000;">того</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">что</span><span style="font-family: 'Times New Roman'; color: #000000;"> Borland </span><span style="font-family: 'Times New Roman'; color: #000000;">не</span><span style="font-family: 'Times New Roman'; color: #000000;">включила</span><span style="font-family: 'Times New Roman'; color: #000000;">в</span><span style="font-family: 'Times New Roman'; color: #000000;">исходные</span><span style="font-family: 'Times New Roman'; color: #000000;">коды</span><span style="font-family: 'Times New Roman'; color: #000000;">исходник</span><span style="font-family: 'Times New Roman'; color: #000000;">файла</span><span style="font-family: 'Times New Roman'; color: #000000;"> Proxies.pas. </span></p> <p style="margin: 7px 0px;"><span style="font-family: 'Times New Roman'; color: #000000;">Итак</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">получим</span><span style="font-family: 'Times New Roman'; color: #000000;">два</span><span style="font-family: 'Times New Roman'; color: #000000;">файла</span><span style="font-family: 'Times New Roman'; color: #000000;">:</span><br /><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">MyComponent.pas:</span></p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">unit</span><span class="f_CodeExample" style="color: #000000;"> MyComponent;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SysUtils, Classes;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TMyComponent = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span><span class="f_CodeExample" style="color: #000000;">(TComponent)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">private</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ Private declarations }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">protected</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ Protected declarations }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">public</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ Public declarations }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">published</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ Published declarations }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/sozdanie-pop-up-menyu-svoego-komponenta-i-koe-chto-eshche-o-klasse-tcomponentexpert.html">Подробнее...</a></p> <p style="text-align: justify; margin: 7px 0px;"><span style="font-family: 'Times New Roman'; color: #000000;">Давайте</span><span style="font-family: 'Times New Roman'; color: #000000;">рассмотрим</span><span style="font-family: 'Times New Roman'; color: #000000;">создание</span><span style="font-family: 'Times New Roman'; color: #000000;">простейшего</span><span style="font-family: 'Times New Roman'; color: #000000;">одноуровневого</span><span style="font-family: 'Times New Roman'; color: #000000;">контекстного</span><span style="font-family: 'Times New Roman'; color: #000000;">меню</span><span style="font-family: 'Times New Roman'; color: #000000;">на</span><span style="font-family: 'Times New Roman'; color: #000000;">своем</span><span style="font-family: 'Times New Roman'; color: #000000;">компоненте</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">которое</span><span style="font-family: 'Times New Roman'; color: #000000;">будет</span><span style="font-family: 'Times New Roman'; color: #000000;">открываться</span><span style="font-family: 'Times New Roman'; color: #000000;">при</span><span style="font-family: 'Times New Roman'; color: #000000;">щелчке</span><span style="font-family: 'Times New Roman'; color: #000000;">правой</span><span style="font-family: 'Times New Roman'; color: #000000;">кнопкой</span><span style="font-family: 'Times New Roman'; color: #000000;">по</span><span style="font-family: 'Times New Roman'; color: #000000;">нему</span><span style="font-family: 'Times New Roman'; color: #000000;">в</span><span style="font-family: 'Times New Roman'; color: #000000;">самом</span><span style="font-family: 'Times New Roman'; color: #000000;">верху</span><span style="font-family: 'Times New Roman'; color: #000000;">контекстного</span><span style="font-family: 'Times New Roman'; color: #000000;">меню</span><span style="font-family: 'Times New Roman'; color: #000000;"> Delphi. </span></p> <p style="text-align: justify; margin: 7px 0px;"><span style="font-family: 'Times New Roman'; color: #000000;">Прежде</span><span style="font-family: 'Times New Roman'; color: #000000;">всего</span><span style="font-family: 'Times New Roman'; color: #000000;">вам</span><span style="font-family: 'Times New Roman'; color: #000000;">следует</span><span style="font-family: 'Times New Roman'; color: #000000;">разделить</span><span style="font-family: 'Times New Roman'; color: #000000;">код</span><span style="font-family: 'Times New Roman'; color: #000000;">вашего</span><span style="font-family: 'Times New Roman'; color: #000000;">компонента</span><span style="font-family: 'Times New Roman'; color: #000000;">на</span><span style="font-family: 'Times New Roman'; color: #000000;"> Design-time </span><span style="font-family: 'Times New Roman'; color: #000000;">и</span><span style="font-family: 'Times New Roman'; color: #000000;"> Run-time. </span><span style="font-family: 'Times New Roman'; color: #000000;">Для</span><span style="font-family: 'Times New Roman'; color: #000000;">этого</span><span style="font-family: 'Times New Roman'; color: #000000;">перенесите</span><span style="font-family: 'Times New Roman'; color: #000000;">ваш</span><span style="font-family: 'Times New Roman'; color: #000000;">компонент</span><span style="font-family: 'Times New Roman'; color: #000000;">в</span><span style="font-family: 'Times New Roman'; color: #000000;">модуль</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">с</span><span style="font-family: 'Times New Roman'; color: #000000;">названием</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">например</span><span style="font-family: 'Times New Roman'; color: #000000;">, MyComponent.pas, </span><span style="font-family: 'Times New Roman'; color: #000000;">а</span><span style="font-family: 'Times New Roman'; color: #000000;">процедуры</span><span style="font-family: 'Times New Roman'; color: #000000;">регистрации</span><span style="font-family: 'Times New Roman'; color: #000000;">его</span><span style="font-family: 'Times New Roman'; color: #000000;">в</span><span style="font-family: 'Times New Roman'; color: #000000;">палитре</span><span style="font-family: 'Times New Roman'; color: #000000;">компонентов</span><span style="font-family: 'Times New Roman'; color: #000000;"> (procedure Register </span><span style="font-family: 'Times New Roman'; color: #000000;">и</span><span style="font-family: 'Times New Roman'; color: #000000;">т</span><span style="font-family: 'Times New Roman'; color: #000000;">.</span><span style="font-family: 'Times New Roman'; color: #000000;">д</span><span style="font-family: 'Times New Roman'; color: #000000;">.) </span><span style="font-family: 'Times New Roman'; color: #000000;">в</span><span style="font-family: 'Times New Roman'; color: #000000;">модуль</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">с</span><span style="font-family: 'Times New Roman'; color: #000000;">названием</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">например</span><span style="font-family: 'Times New Roman'; color: #000000;">, MyComponentReg. </span><span style="font-family: 'Times New Roman'; color: #000000;">На</span><span style="font-family: 'Times New Roman'; color: #000000;">такие</span><span style="font-family: 'Times New Roman'; color: #000000;">меры</span><span style="font-family: 'Times New Roman'; color: #000000;">приходится</span><span style="font-family: 'Times New Roman'; color: #000000;">идти</span><span style="font-family: 'Times New Roman'; color: #000000;">из</span><span style="font-family: 'Times New Roman'; color: #000000;">-</span><span style="font-family: 'Times New Roman'; color: #000000;">за</span><span style="font-family: 'Times New Roman'; color: #000000;">того</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">что</span><span style="font-family: 'Times New Roman'; color: #000000;"> Borland </span><span style="font-family: 'Times New Roman'; color: #000000;">не</span><span style="font-family: 'Times New Roman'; color: #000000;">включила</span><span style="font-family: 'Times New Roman'; color: #000000;">в</span><span style="font-family: 'Times New Roman'; color: #000000;">исходные</span><span style="font-family: 'Times New Roman'; color: #000000;">коды</span><span style="font-family: 'Times New Roman'; color: #000000;">исходник</span><span style="font-family: 'Times New Roman'; color: #000000;">файла</span><span style="font-family: 'Times New Roman'; color: #000000;"> Proxies.pas. </span></p> <p style="margin: 7px 0px;"><span style="font-family: 'Times New Roman'; color: #000000;">Итак</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">получим</span><span style="font-family: 'Times New Roman'; color: #000000;">два</span><span style="font-family: 'Times New Roman'; color: #000000;">файла</span><span style="font-family: 'Times New Roman'; color: #000000;">:</span><br /><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">MyComponent.pas:</span></p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">unit</span><span class="f_CodeExample" style="color: #000000;"> MyComponent;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SysUtils, Classes;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TMyComponent = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span><span class="f_CodeExample" style="color: #000000;">(TComponent)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">private</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ Private declarations }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">protected</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ Protected declarations }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">public</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ Public declarations }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">published</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ Published declarations }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/sozdanie-pop-up-menyu-svoego-komponenta-i-koe-chto-eshche-o-klasse-tcomponentexpert.html">Подробнее...</a></p> Создание редактора свойства 2013-08-13T20:11:45+07:00 2013-08-13T20:11:45+07:00 https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/sozdanie-redaktora-svojstva.html Super User toto44@inbox.ru <p><span style="color: #000000;">Если вы присвоили свойству имя TableName, то полный цикл создания редактора свойств включает следующие шаги:</span></p> <p> </p> <p><span style="color: #000000;">Опишите класс редактора свойства:</span></p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TTableNameProperty = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span><span class="f_CodeExample" style="color: #000000;">(TStringProperty)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;"> function</span><span class="f_CodeExample" style="color: #000000;"> GetAttributes: TPropertyAttributes; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">override</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;"> procedure</span><span class="f_CodeExample" style="color: #000000;"> GetValues(Proc: TGetStrProc); </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">override</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">implementation</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ TTableNameProperty }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TTableNameProperty.GetAttributes: TPropertyAttributes;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := [paValueList];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TTableNameProperty.GetValues(Proc: TGetStrProc);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TableName: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">;</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: #008000; font-weight: bold;">begin</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: #000080;">таблиц, включенных в список }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">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="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> ???? </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TableName := ????[I];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Proc(TableName);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> </td> </tr> </tbody> </table> </div> <p> <span style="color: #000000;">Затем зарегистрируйте данный редактор свойства следующим образом: </span></p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RegisterPropertyEditor(TypeInfo(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">), TcsNotebook, </span><span class="f_CodeExample" style="color: #ff0000;">'TableName'</span><span class="f_CodeExample" style="color: #000000;">, TTableNameProperty); </span></p> </td> </tr> </tbody> </table> </div> <p><span style="color: #000000;">Если вы присвоили свойству имя TableName, то полный цикл создания редактора свойств включает следующие шаги:</span></p> <p> </p> <p><span style="color: #000000;">Опишите класс редактора свойства:</span></p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TTableNameProperty = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span><span class="f_CodeExample" style="color: #000000;">(TStringProperty)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;"> function</span><span class="f_CodeExample" style="color: #000000;"> GetAttributes: TPropertyAttributes; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">override</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;"> procedure</span><span class="f_CodeExample" style="color: #000000;"> GetValues(Proc: TGetStrProc); </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">override</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">implementation</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ TTableNameProperty }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TTableNameProperty.GetAttributes: TPropertyAttributes;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := [paValueList];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TTableNameProperty.GetValues(Proc: TGetStrProc);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TableName: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">;</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: #008000; font-weight: bold;">begin</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: #000080;">таблиц, включенных в список }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">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="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> ???? </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TableName := ????[I];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Proc(TableName);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> </td> </tr> </tbody> </table> </div> <p> <span style="color: #000000;">Затем зарегистрируйте данный редактор свойства следующим образом: </span></p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RegisterPropertyEditor(TypeInfo(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">), TcsNotebook, </span><span class="f_CodeExample" style="color: #ff0000;">'TableName'</span><span class="f_CodeExample" style="color: #000000;">, TTableNameProperty); </span></p> </td> </tr> </tbody> </table> </div> Текущий модуль и проект 2013-08-13T20:24:49+07:00 2013-08-13T20:24:49+07:00 https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/tekushchij-modul-i-proekt.html Super User toto44@inbox.ru <p><span style="color: #000000;">Компонент во время проектирования может знать имена текущих модулей и имя проекта. Все это можно получить с помощью ToolServices (см. файл TOOLINTF.PAS) </span></p> <p> </p> <p><span style="color: #000000;">Имя текущего проекта можно получить с помощью вызова GetProjectName, список модулей/форм - с помощью функции GetUnitCount, которая возвратит количество модулей и затем с помощью GetUnitName(i) мы можем получить имя каждого модуля (также и с формами). </span></p> <p> </p> <p><span style="color: #000000;">Вот примерный образец кода (получение и запись имен всех модулей/форм в StringGrid и имени проекта в Label):</span></p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TInformationFrm.FormActivate(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ необходимо: StringGrid1 (2 колонки, масса строк), Label1, Label2 }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i, j: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Tmp: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StringGrid1.Cells[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">] := </span><span class="f_CodeExample" style="color: #ff0000;">'модулей:'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StringGrid1.Cells[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">] := </span><span class="f_CodeExample" style="color: #ff0000;">'форм:'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> ToolServices &lt;&gt; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">with</span><span class="f_CodeExample" style="color: #000000;"> ToolServices </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Label1.Caption := ExtractFileName(GetProjectName); </span><span class="f_CodeExample" style="color: #000080;">{ простое имя }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Label2.Caption := GetProjectName; </span><span class="f_CodeExample" style="color: #000080;">{ полное правильное имя пути }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">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="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> GetUnitCount </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Tmp := ExtractFileName(GetUnitName(i));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> StringGrid1.Cells[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">, i + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] := Tmp;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Tmp := ChangeFileExt(Tmp, </span><span class="f_CodeExample" style="color: #ff0000;">'.DFM'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> j := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> GetFormCount </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> ExtractFileName(GetFormName(j)) = Tmp </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> StringGrid1.Cells[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, i + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] := Tmp</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p><span style="color: #000000;">Компонент во время проектирования может знать имена текущих модулей и имя проекта. Все это можно получить с помощью ToolServices (см. файл TOOLINTF.PAS) </span></p> <p> </p> <p><span style="color: #000000;">Имя текущего проекта можно получить с помощью вызова GetProjectName, список модулей/форм - с помощью функции GetUnitCount, которая возвратит количество модулей и затем с помощью GetUnitName(i) мы можем получить имя каждого модуля (также и с формами). </span></p> <p> </p> <p><span style="color: #000000;">Вот примерный образец кода (получение и запись имен всех модулей/форм в StringGrid и имени проекта в Label):</span></p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TInformationFrm.FormActivate(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ необходимо: StringGrid1 (2 колонки, масса строк), Label1, Label2 }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i, j: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Tmp: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StringGrid1.Cells[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">] := </span><span class="f_CodeExample" style="color: #ff0000;">'модулей:'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StringGrid1.Cells[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">] := </span><span class="f_CodeExample" style="color: #ff0000;">'форм:'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> ToolServices &lt;&gt; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">with</span><span class="f_CodeExample" style="color: #000000;"> ToolServices </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Label1.Caption := ExtractFileName(GetProjectName); </span><span class="f_CodeExample" style="color: #000080;">{ простое имя }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Label2.Caption := GetProjectName; </span><span class="f_CodeExample" style="color: #000080;">{ полное правильное имя пути }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">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="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> GetUnitCount </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Tmp := ExtractFileName(GetUnitName(i));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> StringGrid1.Cells[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">, i + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] := Tmp;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Tmp := ChangeFileExt(Tmp, </span><span class="f_CodeExample" style="color: #ff0000;">'.DFM'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> j := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> GetFormCount </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> ExtractFileName(GetFormName(j)) = Tmp </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> StringGrid1.Cells[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, i + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] := Tmp</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> Эксперты в DELPHI, или Программист, упростите себе жизнь 2013-08-13T20:36:06+07:00 2013-08-13T20:36:06+07:00 https://delphi-hlp.ru/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/eksperty-v-delphi-ili-programmist-uprostite-sebe-zhizn.html Super User toto44@inbox.ru <p><span class="f_Heading1">Эксперты </span><span class="f_Heading1">в</span><span class="f_Heading1"> DELPHI, </span><span class="f_Heading1">или</span><span class="f_Heading1">Программист</span><span class="f_Heading1">, </span><span class="f_Heading1">упростите</span><span class="f_Heading1">себе</span><span class="f_Heading1">жизнь</span></p> <p>Имеющее множество достоинств и довольно популярное средство разработки Delphi позволяет расширять функциональные возможности среды разработчика. Речь идет не о косметических изменениях в интерфейсе и не о добавлении компонентов или их наборов, а о придании рабочему окружению программиста новых полезных возможностей, не предусмотренных его создателями. Для решения подобной задачи в Delphi можно воспользоваться так называемыми экспертами. Вспомните, как удобно, ответив на несколько вопросов, создать готовую форму для вывода содержимого таблиц. Или, щелкнув мышью на нужном элементе в списке New Items, получить “костяк” вашего будущего проекта (рис. 1).</p> <p><img src="https://delphi-hlp.ru/clip0248.gif" alt="clip0248" width="310" height="228" /></p> <p style="margin: 7px 0px;"><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;">Рис</span><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;">. 1. </span><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;">Многие</span><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;">возможности</span><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;"> Delphi </span><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;">реализуются</span><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;">с</span><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;">помощью</span><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;">экспертов</span></p> <p style="margin: 7px 0px;"><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">Что</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">это</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">—</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">стандартные</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">возможности</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">рабочей</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">среды</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">? </span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">Да</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">, </span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">но</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">применить</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">их</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">можно</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">лишь</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">с</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">помощью</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">эксперта</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">. </span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">О</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">том</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">, </span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">как</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">это</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">сделать</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">, </span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">и</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">пойдет</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">речь</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">далее</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">. </span></p> <p style="text-align: center; margin: 7px 0px;"><span style="font-family: 'Arial'; color: #000000; font-weight: bold;">Эксперты</span><span style="font-family: 'Arial'; color: #000000; font-weight: bold;">в</span><span style="font-family: 'Arial'; color: #000000; font-weight: bold;"> Delphi </span><span style="font-family: 'Arial'; color: #000000; font-weight: bold;">—</span><span style="font-family: 'Arial'; color: #000000; font-weight: bold;">что</span><span style="font-family: 'Arial'; color: #000000; font-weight: bold;">это</span><span style="font-family: 'Arial'; color: #000000; font-weight: bold;">такое</span><span style="font-family: 'Arial'; color: #000000; font-weight: bold;">?</span></p> <p style="text-align: center; margin: 7px 0px;"> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/eksperty-v-delphi-ili-programmist-uprostite-sebe-zhizn.html">Подробнее...</a></p> <p><span class="f_Heading1">Эксперты </span><span class="f_Heading1">в</span><span class="f_Heading1"> DELPHI, </span><span class="f_Heading1">или</span><span class="f_Heading1">Программист</span><span class="f_Heading1">, </span><span class="f_Heading1">упростите</span><span class="f_Heading1">себе</span><span class="f_Heading1">жизнь</span></p> <p>Имеющее множество достоинств и довольно популярное средство разработки Delphi позволяет расширять функциональные возможности среды разработчика. Речь идет не о косметических изменениях в интерфейсе и не о добавлении компонентов или их наборов, а о придании рабочему окружению программиста новых полезных возможностей, не предусмотренных его создателями. Для решения подобной задачи в Delphi можно воспользоваться так называемыми экспертами. Вспомните, как удобно, ответив на несколько вопросов, создать готовую форму для вывода содержимого таблиц. Или, щелкнув мышью на нужном элементе в списке New Items, получить “костяк” вашего будущего проекта (рис. 1).</p> <p><img src="https://delphi-hlp.ru/clip0248.gif" alt="clip0248" width="310" height="228" /></p> <p style="margin: 7px 0px;"><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;">Рис</span><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;">. 1. </span><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;">Многие</span><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;">возможности</span><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;"> Delphi </span><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;">реализуются</span><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;">с</span><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;">помощью</span><span style="font-style: italic; font-family: 'Arial'; color: #000000; font-size: 10pt; font-weight: bold;">экспертов</span></p> <p style="margin: 7px 0px;"><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">Что</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">это</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">—</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">стандартные</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">возможности</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">рабочей</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">среды</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">? </span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">Да</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">, </span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">но</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">применить</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">их</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">можно</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">лишь</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">с</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">помощью</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">эксперта</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">. </span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">О</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">том</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">, </span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">как</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">это</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">сделать</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">, </span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">и</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">пойдет</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">речь</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">далее</span><span style="font-family: 'Arial'; color: #000000; font-size: 10pt;">. </span></p> <p style="text-align: center; margin: 7px 0px;"><span style="font-family: 'Arial'; color: #000000; font-weight: bold;">Эксперты</span><span style="font-family: 'Arial'; color: #000000; font-weight: bold;">в</span><span style="font-family: 'Arial'; color: #000000; font-weight: bold;"> Delphi </span><span style="font-family: 'Arial'; color: #000000; font-weight: bold;">—</span><span style="font-family: 'Arial'; color: #000000; font-weight: bold;">что</span><span style="font-family: 'Arial'; color: #000000; font-weight: bold;">это</span><span style="font-family: 'Arial'; color: #000000; font-weight: bold;">такое</span><span style="font-family: 'Arial'; color: #000000; font-weight: bold;">?</span></p> <p style="text-align: center; margin: 7px 0px;"> </p> <p class="feed-readmore"><a target="_blank" href ="/index.php/delphi-ide/rabota-s-toolsapi-eksperty-i-redaktory-svojstv/eksperty-v-delphi-ili-programmist-uprostite-sebe-zhizn.html">Подробнее...</a></p>