Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОПІ_Лекції_зошит4.docx
Скачиваний:
2
Добавлен:
20.08.2019
Размер:
244.78 Кб
Скачать

Створення та використання екземплярів серверів автоматизації

Для створення екземпляра сервера автоматизації та його запуску використовується функція CreateOleObject, що описана в модулі CompObj наступним чином:

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;

Посилання, які повертають функції CreateOleObject і GetActiveOleObject, слід зберігати в змінних, для подальшого доступу до створеного або отриманого об’єкту. Не дивлячись на те, що тип посилання визначений як IDispatch, змінна, в який це посилання зберігається, повинна мати тип Variant. Це пов’язано з тим, що з даної змінної будуть викликатися методи сервера автоматизації, що не описані в інтерфейсі IDispatch.

var Object: Variant;

……………………….

Object:=CreateOleObject(‘Word.Application’);

………………………

Використання екземпляра сервера автоматизації, тобто виклик його методів, здійснюється за допомогою конструкцій, звичайних для виклику методів у Delphi:

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

Однак механізм, що використовується для реального виклику, суттєво відрізняється від виклику методів Delphi-класів. Назва методу та список його параметрів запаковується в спеціальну структуру, яка потім передається методу Invoke СОМ-об’єкту через посилання, отримане під час виклику функції CreateOleObject (GetActiveOleObject). Метод Invoke визначає, який саме його метод повинен бути викликаний, виконує його, запаковує результат і повертає його в програму, що його викликала.

Для знищення структур даних, пов’язаних використанням СОМ-об’єктів у програмі, слід присвоїти посиланню на нього значення Unassigned.

var Object: Variant;

……………………….

Object:=CreateOleObject(‘Word.Application’);

………………………

Object:= Unassigned;

………………………

Лекція 21. Експорт інформації в ms Word

Додатки, що входять до складу Microsoft Office, мають ієрархічну об’єктну структуру. Структура кожного додатку є складною і суттєво відрізняється від структури інших додатків, що обумовлено різною направленістю самих додатків.

Ієрархічна структура об’єктів відображає представлення даних, що редагуються в тому чи іншому додатку. Наприклад, структура Microsoft Word містить об’єкт верхнього рівня Application, що керує безпосередньо додатком, який, в свою чергу, містить об’єкти типу Document, які надають доступ до документів, відкритих в даний момент. При додаванні чергового документу Document стороннім додатком за допомогою методів сервера автоматизації, Microsoft Word відкриває черговий документ. Аналогічно об’єкти типу Document можуть містити в собі об’єкти типу Paragraph, які є посиланнями на абзаци тексту.

Доступ до об’єктів різного рівня з програми-клієнта, реалізованої, наприклад, на Delphi, здійснюється аналогічним чином через посилання на об’єкти, що знаходяться на більш високому рівні ієрархії.

Об’єкти одного рівня та призначення, наприклад об’єкти типу Document, об’єднуються в одну властивість, так зване сімейство, яке має назву типу об’єктів у множині. Таким чином, об’єкти типу Document об’єднуються в властивість Documents. Такі властивості фактично є списками, для яких можна визначити кількість елементів в кожному з них (властивість Count) та отримати доступ до елементу за допомогою функції Item, що отримує в якості параметру номер об’єкту в списку. Елементи нумеруються від одиниці.

Цікавою особливістю сімейств є те, що властивості підтримують ті ж самі властивості і методи, які підтримується об’єктами, що входять до складу сімейства. Звернення до сімейства еквівалентне зверненню до всіх елементів сімейства по черзі.

Для передачі параметрів у методи об’єктів автоматизації і присвоєння значень їх властивостям використовується спеціальний тип даних OleVariant. Його відмінність від типу Variant полягає в сумісності з операційною системою, яка й підтримує технологію СОМ.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]