Excel. Трюки и эффекты
Шрифт:
Глава 9 Возможности COM в Microsoft Word и Microsoft Excel
• Технология OLE
• Технология COM
• Использование OLE в Delphi
• Управление Microsoft Word и Microsoft Excel
Технология COM/DCOM является одной из важных и широко используемых современных технологий. Охватить все аспекты технологии COM/DCOM очень сложно, и в рамках данной книги в этом нет необходимости. В этой главе будут рассмотрены основные возможности СОМ и их практическое применение. Примеры, разобранные в главе, демонстрируют управление приложениями, снабжаемыми СОМ-объектами. К таким приложениям можно отнести все программы из пакета Microsoft Office (Microsoft Word, Microsoft Excel
9.1. Технология OLE
В Windows 3.1 и более ранних версиях основным средством обмена данными между программами была технология DDE – Dynamic Data Exchange (динамический обмен данными). На этой технологии основывалась технология OLE – Object Linking and Embedding (связывание и внедрение объектов). OLE позволяет делать документы одного приложения частью документов другого приложения. Таким образом, пользователь получил возможность применять функции различных программ для редактирования одного документа.
В основе DDE лежит обмен сообщениями между окнами операционной системы. Подобный механизм затрудняет распараллеливание процессов и обмен данными через сеть между приложениями, работающими на разных компьютерах. Это привело к созданию расширения DDE – NetDDE, но эта технология работает медленно и неустойчиво.
Начиная с Windows NT 3.51, внедряется технология OLE 2 – дальнейшее развитие OLE. OLE 2 дополнительно включает в себя технологию ActiveX. Позже термин OLE 2 изменили на OLE.
Технология DDE была недостаточной для поддержки OLE 2, поэтому специально для нее была создана технология взаимодействия между программами – СОМ (Component Object Model, модель компонентных объектов). СОМ оказалась очень удачной технологией, поэтому, начиная с Windows 95, DDE была объявлена устаревшей, а основной технологией обмена данными в системе стала технология СОМ.
9.2. Технология СОМ
Модель СОМ построена по принципу архитектуры «клиент – сервер». Сервер предоставляет список возможных действий (функций), которые могут использоваться клиентским процессом. Таким образом, серверный процесс позволяет обрабатывать запросы клиента, выполняя некоторые действия. Когда взаимодействие между клиентом и сервером подразумевает обмен данными, эти данные передаются в качестве параметров функций. При необходимости клиент также может экспортировать функции, которые могут быть вызваны сервером.
В основе СОМ лежат ключевые понятия, которые характерны и для объектно-ориентированного программирования: инкапсуляция, наследование и полиморфизм. Рассмотрим их применительно к объектам СОМ.
Инкапсуляция позволяет скрыть методы (функции) и данные от использования другими объектами. Этот механизм необходим для обеспечения безопасности и надежности конечной системы. Термин «метод» использован не случайно, объекты СОМ строятся по принципу классов в программировании (класс имеет название CoClass, приставка Со говорит о том, что это класс СОМ).
Наследование позволяет многократно использовать готовые решения. Создавая объект и наследуя некоторые свойства (данные) и методы (функции), мы можем использовать их в дальнейшем. Механизм наследования в связке с принципом полиморфизма позволяет создавать иерархии СОМ-классов для эффективного решения любых задач. Кроме наследования, часто используется и агрегация – внедрение ранее реализованных объектов внутрь вновь разрабатываемых.
Полиморфизм позволяет переопределять реализацию (поведение) унаследованных функций и данных. Это дает возможность
Изначально технология СОМ обеспечивала межпроцессное взаимодействие только на локальном компьютере. Эволюция СОМ привела к созданию DCOM (Distributed СОМ, распределенная СОМ), позволяющей работать с объектами, которые расположены на различных и удаленных друг от друга компьютерах.
На данный момент DCOM является межплатформенной технологией. Существуют средства для поддержки DCOM в различных UNIX-системах (в том числе Linux), Solaris, MacOS, VxWorks.
9.3. Использование OLE в Delphi
Как и многие современные среды программирования, Delphi поддерживает возможность автоматизированной разработки приложений, работающих с различными СОМ-сервисами или серверами. Для более глубокого понимания принципов работы приложений, создаваемых на основе СОМ-технологии, проведем краткий обзор наиболее доступных СОМ-серверов – приложений пакета Microsoft Office.
Microsoft Office с точки зрения СОМ
Microsoft Office является средой, в которой большая часть задач решается без использования программирования. Но ценность приложений Microsoft Office за – ключается в том, что все задачи решаются как традиционным способом (ручное редактирование), так и посредством применения программирования на известном языке VBA (Visual Basic for Application). Кроме того, приложения пакета снабжаются серверами СОМ, которые предоставляют интерфейс доступа к приложению и его объектам. Благодаря этому разработчик в среде Delphi имеет возможность, создав контроллер автоматизации, управлять сервером. Приложение Microsoft Office можно рассматривать как совокупность объектов с их методами и свойствами (они организуют основу программы). Как правило, в каждом приложении существует так называемый корневой объект, который носит название Application. Каждое приложение Microsoft Office имеет собственный корневой обект – Word. Application, Excel.Application. Приложение само является корневым объектом, несмотря на это, в объект Application встраиваются все остальные объекты (участники), которые являются свойствами главного объекта. Документ, созданный на базе СОМ, предоставляет большое количество разнообразных методов, но имеются и одинаковые методы в различных приложениях Microsoft Office. Например, Run, Quit, Activate.
При открытии любого приложения из пакета автоматически создается каркас нового документа, который представляет собой набор библиотек с классами. Объекты этих классов будут доступны в открытом документе. Задача разработчика клиента (контроллера автоматизации) – получить доступ к корневому объекту сервера, выстроить цепочку доступа к объектам-участникам (встроенным объектам), правильно передать параметры. Таким образом, получив доступ к объектам документа, можно проводить с ним различные манипуляции, редактировать его и т. д.
Объект Application
Безусловно, самым важным объектом в приложениях Microsoft Office является объект Application. Небольшой пример использования данного объекта продемонстрирует простоту программирования с применением СОМ. Для решения часто встречающихся задач используются уже хорошо нам известные компоненты среды Delphi. В случае технологии СОМ это не является исключением. Запустим сервер приложения Microsoft Word. Для этого выполним следующее.
1. Создаем новый проект.
2. На главную форму приложения помещаем компонент WordApplication вкладки Servers.