на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Программирование для Word из Delphi

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

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

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

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

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

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

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

САРАНСК 2008

Реферат

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

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

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

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

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

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

Содержание

Введение

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

1.1 COM-объекты

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

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

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

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

2.2 Запуск сервера

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

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

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

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

2.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.

Var

Object: Variant;

Object := CreateOleObject('Word.Application');

Использование экземпляра сервера автоматизации, то есть вызов его методов, осуществляется с помощью конструкций, обычных для вызова методов в Delphi:

<Ссылка на сервер>.<Название метода>(<Список параметров>);

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

Объекты автоматизации поддерживают также и доступ к свойствам через специальным образом описанные методы.

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

Var

Object: Variant;

Object := CreateOleObject('Word.Application');

Object := Unassigned; // Разрушение программных структур

2. ЭКСПОРТ ИНФОРМАЦИИ В MICROSOFT WORD

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

Приложения, входящие в состав Microsoft Office, имеют иерархическую объектную структуру. Структура каждого приложения сложна и существенно отличается от структуры других приложений, что обусловлено различной направленностью самих приложений. Объекты иерархий Microsoft Office содержат в себе методы, количество которых приблизительно равно количеству действий, поддерживаемых при редактировании документов, поэтому их число очень велико. Иерархическая структура объектов отражает представление данных, редактируемых в том или ином приложении. Структура Microsoft Word включает в себя объект верхнего уровня Application, управляющий непосредственно приложением, и вложенные в него объекты типа Document, предоставляющие доступ к документам, открытым в данный момент. При добавлении очередного объекта Document сторонним приложением с помощью методов сервера автоматизации Microsoft Word открывает очередной документ. Аналогично объекты типа Document могут содержать в себе объекты типа Paragraph, представляющие собой ссылки на абзацы текста. Доступ к объектам различного уровня из программы-клиента, реализованной, например, на Delphi, осуществляется единообразно, через ссылки на вышестоящие в иерархии объекты. Объекты одного уровня и назначения, например, объекты типа Document, объединяются в одно свойство, так называемое семейство, которое имеет название типа объектов во множественном числе. Таким образом, объекты типа Document объединяются в свойство Documents.

Страницы: 1, 2



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.