- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Delphi. Трюки и эффекты - Валерий Борисок
Шрифт:
Интервал:
Закладка:
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.
3. Задаем свойства компонента AutoConnect и AutoQuit значением True.
4. Запускаем созданное приложение.
На первый взгляд, ничего существенного не происходит, но результат работы программы можно заметить путем просмотра запущенных процессов (не путать с задачами). В приложении Диспетчер задач среди процессов различных приложений можно увидеть WordCOM. ехе. Этот факт говорит нам о том, что созданное нами посредством СОМ приложение подключилось к серверу Microsoft Word и запустило его. Фактически в системе произошло следующее. В реестре был найден зарегистрированный ранее СОМ-сервер приложения Microsoft Word. Используя все тот же реестр, был найден путь к программе и произведен ее запуск. Вследствие этого мы заметили появление процесса, отвечающего за работу редактора Microsoft Word.
Но для того чтобы лучше понять запуск приложения Microsoft Word, приведем фрагмент исходного текста, результат работы которого аналогичен (листинг 9.1).
...Листинг 9.1.
Запуск Microsoft Word
procedure TFormStartWord.ButtonStartClick(Sender: TObject);
var
//Переменная, интерфейс к объекту
Wordvar : OleVariant;
file_Name : string;
begin
//Начало блока перехвата исключения
try
file_Name := ExtractFilePath(Application.EXEName) +
'worddoc.DOC
//Инициализируем объект интерфейса
//для доступа к серверу COM Microsoft Word
Wordvar := CreateOleObject('Word.Application');
//Добавление документа
wordvar.application.documents.add;
wordvar.application.activedocument.range.insertAfter(now);
//Сохранение документа (аналог действиям: «Сохранить как…»,
//с указанием имени файла)
wordvar.application.activedocument.saveas(fileName);
//Завершение работы с приложением и выгрузка COM-сервера
wordvar.application.quit(true,0);
…
end;
Предложенный исходный текст демонстрирует подключение к серверу без помощи компонента среды разработки. Для корректной работы необходимо в раздел uses включить COMOBJ – модуль работы с объектом СОМ. Важно отметить, что наличие функций, вызываемых для объекта wordvar, определяется в период выполнения. Это значит, что ошибка может обнаружиться только в период выполнения программы, поэтому весь код работы с объектом помещен в блок try.
Класс TOLEServer
На вкладке Servers находится набор компонентов для доступа к серверам автоматизации. Не все компоненты возвращают ссылку на объект Application, то есть могут быть получены интерфейсы для доступа к таким вложенным объектам, как документ Microsoft Word или рабочая книга Microsoft Excel. Все компоненты унаследованы от класса TOLEServer, который наследует свойства класса Tcomponent. TOLEServer является базовым классом всех СОМ-серверов. Кроме этого, данный класс имеет еще несколько свойств и методов для управления связью с СОМ-сервером. Среди таковых уже знакомое нам свойство AutoConnect, которое автоматически запускает СОМ-сервер и извлекает из него интерфейс, обеспечивающий связь с контроллером. Еще одно важное свойство класса TOLEServer – это ConnectKind, указывающее тип процесса, с которым устанавливается связь. Свойство используется методом Connect, который вызывается автоматически, если свойство AutoConnect истинно. В табл. 9.1 описаны значения, которые может принимать ConnectKind.
Таблица 9.1. Значение свойства ConnectKind
Более подробно следует рассмотреть значение свойства ConnectKind, равное ckAttachToInterface. Соединение с сервером производится посредством использования главного интерфейса Application, но, например, возникает необходимость подключить к нашему проекту такие компоненты как WordDocument или WordParagraphFormat. В этом случае мы просто подключаемся к уже существующему интерфейсу, а не создаем его заново. Также это может быть необходимо, когда контроллер должен отслеживать события, происходящие в СОМ-сервере.
9.4. Управление Microsoft Word и Microsoft Excel
Трюки в Microsoft Word
В этом разделе мы более подробно остановимся на рассмотрении практических примеров использования СОМ-сервера редактора Microsoft Word. Достаточно популярный редактор обладает обширным набором возможностей, которые можно использовать вручную (традиционное создание и редактирование документов) и с применением технологии СОМ. Основное удобство последнего метода заключается в автоматизации рутинной работы, например составления отчетов. Следующий пример поможет нам разобраться в принципах построения контроллеров автоматизации, которые ранее уже упоминались. Контроллер автоматизации с точки зрения СОМ представляет собой приложение, которое посредством вызова процедур сервера проводит различные манипуляции над документом. В Microsoft Word это может быть написание текста в установленном формате и т. д.

