Главная » Delphi » Применение интерфейса API Open Tools

0

Интерфейсы Open Tools

Интерфейс API Open Tools состоит из четырнадцати модулей,  каждый  из которых содержит один  или  несколько объектов, обеспечивающих взаимодействие со многи ми  средствами интегрированной  среды  разработки. С помощью этих  интерфейсов можно  создавать собственные мастера Delphi, диспетчеры управления версиями, а также  компоненты и редакторы свойств. Такие  дополнения позволяют значительно расширить возможности среды разработки Delphi.

За исключением интерфейсов, разработанных для компонентов и редакторов свойств, объекты интерфейса Open Tools  обеспечивают полностью виртуальный ин терфейс с внешним миром.  Это означает, что можно  использовать лишь виртуальные функции таких  объектов. Ни к полям  данных  подобного объекта, ни к его свойствам или  статическим функциям нельзя  получить доступ,  поскольку  объекты интерфейса Open Tools  создаются на основе стандарта COM (см. главу 15, “Разработка приложе ний COM”). После  небольшой доработки эти интерфейсы могут использоваться с лю бым  языком программирования,  поддерживающим технологию COM.  В настоящей главе  рассматривается лишь  Delphi, но  помните, что  можно  использовать и другие языки программирования.

НА ЗАМЕТКУ

Реализовать в полной мере возможности, предоставляемые интерфейсом API Open Tools, можно лишь в версиях Delphi Professional и Enterprise Edition. В версии Standard возможно применение дополнений, созданных с помощью интерфейса API Open Tools, но их невозможно создавать, поскольку в этой версии содержатся лишь модули для разработки компонентов и редакторов свойств. Исходный код интерфейсов Open Tools размещен в каталоге \Delphi 6\Source\ToolsAPI.В табл. 17.1 приведены модули, которые, в сущности, и составляют интерфейс API Open Tools.  Модули табл. 17.2 сохранены лишь  для обеспечения совместимости с предыдущими версиями Delphi. Термин интерфейс в данном  случае не означает встро енный в Delphi тип  interface. Поскольку API Open Tools  обеспечивает поддержку интерфейсов Delphi, в качестве замены  “настоящих” интерфейсов  он использует обычные классы Delphi  с виртуальными абстрактными методами. Использование стандартных интерфейсов в API Open Tools  Delphi  в каждой  новой версии увеличи валось,  и текущая версия основывается практически только  на них.

Таблица 17.1. Модули интерфейса API Open Tools

Имя модуля                                       Назначение

ToolsAPI           Содержит  новейшие  элементы  интерфейса   API  Open Tools. Этот модуль, по существу, заместил абстрактные классы,  применяемые в предыдущих версиях Delphi для управления дополнениями меню,  системы уведомления, файловой системы, редактора и мастеров. В нем содер жатся  также  новые  интерфейсы для управления отладчи ком, комбинациями клавиш интегрированной среды разработки, проектами, группами   проектов, пакетами и списком To Do

VCSIntf            Определяет класс  TIVCSClient, обеспечивающий взаи модействие интегрированной среды  разработки Delphi  с программным обеспечением управления версиями

DesignConst             Содержит строки, используемые API Open Tools

DesignEditors           Обеспечивает поддержку  редактора свойств

DesignIntf         Заменяет модуль DsgnIntf предыдущих версий и обеспе чивает базовую поддержку  интерфейсов IDE времени разработки. IDE  использует интерфейс  IProperty для редактирования свойств. Интерфейс  IDesignerSelec- tions применяется  для   манипулирования  объектами, выбранными в списке  конструктора форм  (заменяет TDesignerSelectionList, использовавшийся в преды дущих версиях Delphi). IDesigner —  это один из первич ных  интерфейсов, который применяется мастерами для общих  служб IDE. IDesignNotification поддерживает такие  уведомления событий конструктора, как вставка, удаление  и модификация элементов. Интерфейс ICompo- nentEditor реализуется редакторами компонентов  для обеспечения редактирования компонента во время  разра ботки, а ISelectionEditor обеспечивает те же возмож ности  для группы выбранных компонентов. Класс Tbase- ComponentEditor является  базовым   классом   для  всех редакторов компонентов. Интерфейс  ICustomModule и класс   TBaseCustomModule обеспечивают  возможность установки модулей,  которые могут быть отредактированы в конструкторе форм  IDE

DesignMenus        Содержит интерфейсы IMenuItems, IMenuItem, а также другие  подобные интерфейсы, предназначенные для  ма нипулирования меню IDE во время  разработки

DesignWindows     Содержит  объявление  класса   TDesignWindow,  являю щегося  базовым классом  для всех новых  окон проекта, которые добавляются в IDEОкончание табл. 17.1.

Имя модуля                                       Назначение

PropertyCategories Содержит классы,  обеспечивающие категоризацию свой ств  специальных  компонентов.  Используется  инспекто ром объектов для представления свойств  по категориям

TreeIntf           Поддерживает класс TSprig и связанные с ним классы,  а также  интерфейсы, обеспечивающие узлы и ветвления в объекте TreeView IDE

VCLSprigs               Содержит реализацию ветвления компонентов VCL

VCLEditors         Содержит объявления  базовых интерфейсов  ICustom- PropertyDrawing и    ICustomPropertyListDrawing, обеспечивающих специальное представление свойств и списков  свойств  в инспекторе объектов IDE. Содержит также  объявления специальных объектов для представле ния свойств  VCL

ClxDesignWindows          Содержит объявление класса TClxDesignWindow, являю

щегося  эквивалентом CLX класса TDesignWindow

ClxEditors               Эквивалент CLX модуля VCLEditors, содержащего редак

торы  свойств  для компонентов CLX

ClxSprigs               Реализация ветвления для компонентов CLX

Таблица 17.2. Устаревшие модули API Open Tools

Имя модуля                                       Назначение

FileIntf           Определяет класс TIVirtualFileSystem, используемый IDE Delphi  для работы с файлами. Мастера, диспетчеры управления версиями,  а также  редакторы свойств и компоненты могут использовать этот интерфейс для выполнения в Delphi  специальных файловых операций

EditIntf           Определяет классы,  необходимые для управления редакто ром кода и конструктором форм.  Класс TIEditReader предоставляет доступ  к буферу  редактора “для чтения”,  а класс  TIEditWriter —   “для  записи”.   Класс  TIEditView предоставляет возможность просмотра буфера  редактиро вания.  Класс TIEditInterface — это базовый интерфейс редактора, который может  использоваться для  доступа  к уже упоминавшимся интерфейсам. Класс TIComponentIn- terface —  это  интерфейс с отдельным компонентом, по мещенным в форму в режиме разработки. Класс TI- FormInterface —   основной  интерфейс  с  формой  или модулем данных  в режиме разработки. Класс TIResour- ceEntry обеспечивает взаимодействие с данными в файле ресурсов (*.res) проекта. Класс TIResourceFile опреде

Окончание табл. 17.2.

Имя модуля                                       Назначение

ляет  высокоуровневый интерфейс с файлом ресурсов проекта.  Класс   TIModuleNotifier определяет  сообще ния,  используемые при появлении в конкретном модуле различных событий. И, наконец, класс TIModuleInter- face обеспечивает взаимодействие с любым  файлом или модулем, открытым в интегрированной среде разработки

ExptIntf           Определяет  абстрактный  класс   TIExpert,  от   которого происходят все мастера

VirtIntf           Определяет  базовый  класс   TInterface,  от   которого происходят другие интерфейсы. В этом модуле определен также класс TIStream, который инкапсулирует класс VCL TStream

IStreams           Определяет классы  TIMemoryStream, TIFileStream и TIVirtualStream, которые являются потомками класса TIStream. Эти интерфейсы могут использоваться для включения в IDE своего собственного механизма работы с потоками

ToolIntf    Определяет классы TIMenuItemIntf и TIMainMenuIntf, которые позволяют разработчику интерфейса Open Tools создавать и модифицировать меню  IDE Delphi. В данном модуле  определен также  класс  TIAddInNotifier, кото рый  позволяет  создаваемым инструментам дополнениям получать  уведомления о возникновении в среде  разработ ки определенных событий. Следует также  отметить, что в этом модуле имеется класс TIToolServices, который обеспечивает взаимодействие между различными элемен тами IDE Delphi  (такими как редактор, библиотека компо нентов, редактор кода, конструктор форм  и файловая система)НА ЗАМЕТКУ

Может возникнуть закономерный вопрос: а где в Delphi содержится документация по всем этим мастерам? На этот счет можно сказать лишь следующее: все документиро- вано, но поиск необходимой информации представляет собой непростую задачу. В ка- ждом из таких модулей содержится полная документация по определенным в нем классам и методам. Для получения исчерпывающей информации проанализируйте все модули самостоятельно, поскольку нельзя сказать наверняка, в каком из модулей ка- кие данные содержатся.

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии