Программирование для Word из Delphi (48250)

Посмотреть архив целиком

МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИМЕНИ Н.П. ОГАРЕВА


Светотехнический факультет


Кафедра светотехники









КУРСОВАЯ РАБОТА

Программирование для Word из Delphi













САРАНСК 2008


Реферат


Курсовая работа содержит 23 страницы, 9 использованных источников, 1 рисунок, 2 таблицы и 1 приложение.

В курсовой работе используются следующие ключевые слова:

COM, OLE, сервер автоматизации, интерфейс, IDispatch, объект, семейство.

Объектом исследования является технология взаимодействия приложений с текстовым редактором Microsoft Word.

В процессе работы использовалась учебная литература по программированию в среде Borland Delphi для Windows.

В результате исследования: изучена методика создания приложений передающих данные в Microsoft Word.


Содержание


Введение

  1. Основы COM-технологии

    1. COM-объекты

    2. Вызов методов COM-объектов

    3. Создание и использование экземпляров серверов автоматизации

  2. Экспорт информации в Microsoft Word

    1. Структура приложения Microsoft Word

    2. Запуск сервера

    3. Взаимодействие с сервером на уровне документа

    4. Непосредственный вывод информации

    5. Форматирование текстовой информации

    6. Использование закладок

    7. Управление приложением

Заключение

Список использованных источников

Пиложение 1


Введение


Цель курсовой работы заключена в изучении технологий вывода данных из приложений созданных в среде Borland Delphi в другие распространенные программы, такие как Microsoft Office и в частности Microsoft Word. Среда Borland Delphi предоставляет широкие возможности вывода информации на принтер с помощью объекта TPrinter. Однако большинство задач печати сводится к выводу текста или таблиц. При этом с одной стороны, в программах приходится реализовывать сложные алгоритмы форматирования текста при выводе, а с другой стороны, такие задачи дублируют широко распространенные пакеты, в которых данные возможности уже реализованы. Более того, вывод информации на печатающее устройство жестко определяет вид получаемых документов, на который пользователь не может повлиять. При этом с развитием компьютерной техники печатные документы становятся все менее востребованными в связи с широким использованием для обмена информацией электронной почты и факсов. В таких условиях целесообразно наделять программные продукты возможностями сохранения информации в общепринятых форматах, таких, например, как формат текстовых документов RTF, тем более, что Delphi частично поддерживает такие возможности. Однако работа с такими форматами все-таки не проста, и требует от разработчика дополнительных усилий, особенно в условиях быстрого обновления стандартов на форматы представления данных.

Второй подход к повышению гибкости вывода информации поддерживается наличием в Windows технологии OLE (Object Linking and Embedding – связывание и внедрение объектов), позволяющей запускать сторонние приложения и передавать им данные, вызывая методы этих приложений. Технология OLE является частью технологии СОМ – признанного стандарта для выполнения подобных операций, и все больше программных продуктов поддерживают такие возможности. Исключением не является и группа продуктов Microsoft Office, каждое приложение которой может быть использовано из Delphi-приложений для передачи в них данных.

  1. ОСНОВЫ COM-ТЕХНОЛОГИИ


1.1 COM-объекты


СОМ (Component Object Model – Модель многокомпонентных объектов) – является объектно-ориентированной концепцией, описывающей правила построения классов, называемых СОМ-объектами, с целью обеспечения взаимодействия между ними вне зависимости от языка, на котором реализованы данные классы, и среды, в которой выполняются приложения, содержащие их. Объекты СОМ реализуются в специальном двоичном формате, являющимся фактически описанием класса, и не зависящем от языка разработки, и предоставляют свою функциональность (позволяют вызывать свои методы) через набор интерфейсов. Каждый СОМ-объект реализует как минимум один интерфейс IUnknown выполняющий следующие действия:

1. Поддержка счетчика экземпляров объекта с помощью методов AddRef, вызываемого при создании экземпляра класса для увеличения значения счетчика, и Release, вызываемого при разрушении экземпляра для уменьшения значения счетчика;

2. Предоставление ссылки на интерфейс, заданный его уникальным идентификатором, и поддерживаемый СОМ-объектом, с помощью метода Query Interface.

Для идентификации СОМ-объектов применяются глобальные уникальные идентификаторы, представляющие собой 128-разрядные целые числа, записываемые в следующем формате, где вместо символа 'х' указывается шестнадцатеричная цифра:


['{хххххххх-хххх-хххх-хххх-хххххххххххх}']


Например, главное приложение графического редактора Adobe Photoshop имеет такой идентификатор:


{43191D98-5D34-4103-BE42-226A55C2312A}


1.2 Вызов методов СОМ-объектов


СОМ-объекты могут использоваться либо внутри приложения (такие СОМ-объекты называются внутрипроцессными), либо в виде исполняемых модулей (внешние СОМ-объекты). Приложение (приложение-клиент), использующее СОМ-объект, вызывает метод, заявленный в каком-либо интерфейсе этого СОМ-объекта (объекта-сервера). Вызов производится по имени с передачей необходимых параметров, вне зависимости от типа используемого СОМ-объекта (внешний или внутрипроцессный). Связывание вызова метода с его адресом может быть выполнено двумя способами:

1. Через интерфейс IDispatch.

2. Через таблицу виртуальных методов.

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

На рис 1. приложение-клиент «Приложение1» обращается к методу «Метод 2» СОМ-объекта напрямую, используя механизм раннего связывания. Для этого адрес метода должен быть внесен в таблицу виртуальных методов приложения.

Второй вариант связывания – позднее связывание – осуществляется с помощью использования интерфейса IDispatch. СОМ-объекты, реализующие интерфейс IDispatch, называются серверами автоматизации. Именно серверы автоматизации и интересуют нас в контексте вывода информации за пределы программы.

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

Интерфейс IDispatch предназначен для использования сервера автоматизации в условиях позднего связывания и имеет несколько методов для определения информации о типах. Также в интерфейсе IDispatch заявлен метод Invoke, которому передается имя метода для вызова и список необходимых параметров. На этом методе и построен механизм использования серверов автоматизации из Delphi-программ. Механизм вызова метода объекта через метод Invoke интерфейса IDispatch, реализованного этим объектом, показан на рис. Приложение-клиент «Приложение 2» обращается к методу invoke, который определяет метод «Метод 2», запрошенный приложением, и вызывает его.

Метод invoke имеет множество сложных параметров, однако он не используется напрямую разработчиком прикладного программного обеспечения. Вызовы данного метода добавляются в программу автоматически во время компиляции.


Рис 1. Различные механизмы вызова методов COM-объектов.

1.3 Создание и использование экземпляров серверов автоматизации


Для создания сервера автоматизации используется функция CfeateOleObject, описанная в модуле Comobj следующим образом:


function CreateOleObject(const ClassName: string): IDispatch;


Функция выдает ссылку на интерфейс IDispatch объекта, зарегистрированного в реестре Windows под именем ClassName. Для определения названия класса следует изучить документацию к программному продукту, предоставляющему сервер автоматизации. Для приложения Microsoft Word таким именем является «Word.Application», а для Microsoft Excel – «Excel.Application». Аналогичные названия классов имеют и другие компоненты Microsoft Office.

Если сервер автоматизации уже запущен, то ссылку на него можно получить с помощью функции GetActiveOleObject:


function GetActiveOleObject(const ClassName: string): IDispatch;


Если при вызове метода GetActiveOleObject система не может обнаружить запущенную версию заданного сервера автоматизации, то будет возбуждена исключительная ситуация класса EOleError.

Ссылки, которые возвращают функции GreateOleObject и GetActiveOleObject, следует сохранять в переменных для дальнейшего доступа к созданному или полученному объекту. Несмотря на то, что тип ссылки определен как IDispatch, переменная, в которую эта ссылка сохраняется, должна иметь тип Variant. Это связано с тем, что из данной переменной будут вызываться методы сервера автоматизации, которые не описаны в интерфейсе IDispatch.


Случайные файлы

Файл
150595.rtf
96763.rtf
68899.rtf
120808.doc
50440.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.