Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Пример использования позднего связывания

Использование позднего связывания для доступа к объекту автоматизации

Методы взаимодействия с сервером автоматизации

Современным способом взаимодействия между различными приложениями является использование технологии OLE Automation. Работа с сервером автоматизации мало отличается от работы с обычным объектом Delphi. Различают два метода доступа к серверу автоматизации: позднее связывание и раннее связывание. Остановимся на назначении и функционировании каждого из них более подробно.

При использовании позднего связывания компилятору Delphi не требуется никакой информации об используемом объекте. Этот факт следует отнести к недостаткам позднего связывания, так как компилятор не может проверить синтаксис кода, используемого для доступа к серверу автоматизации.

Для получения доступа к серверу автоматизации используется функция Delphi CreateOleObject:

function CreateOleObject(const ClassName: string): IDispatch:

С помощью параметра ClassName передается строковый идентификатор программы, связанный с объектом автоматизации. Функция CreateOleObject возвращает указатель на интерфейс IDispatch, который используется для связи с объектом автоматизации.

Функция CreateOleObject находится в модуле ComObj, поэтому при ее использовании необходимо включить данный модуль в раздел uses.

Переменная, которая будет являться указателем на интерфейс (то есть которой присваивается значение, возвращаемое функцией CreateOleObject), должна иметь тип OleVariant, специально предназначенный для работы с объектами автоматизации.

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

Рассмотрим простой пример передачи текста в MS Word с использованием функции CreateOleObject. Создайте в Delphi новое приложение, разместите на форме кнопку и задайте для нее следующий метод-обработчик события OnClick:

procedure TForml.ButtonlClick(Sender: TObject);

var w: OleVariant:

begin

W:=Create01e0bject('Word.Basic');

W.AppShow;

W.FileNew;

W.Insert('Пример создания нового документа'+#13);

W.Insert('и передачи в него текста'+#13);

end;

Если теперь откомпилировать и запустить приложение, то после нажатия на кнопку, с которой связан приведенный выше обработчик события, откроется редактор MS Word, в нем будет создан новый документ, в который будут добавлены две строки, указанные в качестве параметра метода Insert.

В первой строке мы вызвали функцию CreateOleObject и получили указатель на интерфейс объекта автоматизации Basic сервера автоматизации Word. После этого мы имеем возможность обращаться к методам и свойствам сервера Word, поддерживаемых интерфейсом объекта Basic так же, как и к методам обычных объектов Delphi. При вызове функции CreatedeObject производится запуск приложения MS Word. Однако окно редактора не будет отображаться на экране компьютера. Чтобы пользователь мог увидеть его, вызывается метод AppShow. Следующие строки содержат команды создания нового документа (вызывается метод FiIeNew) и команды вставки строк текста в документ (метод Insert).

Компилятор Delphi ничего не «знает» о методах и свойствах объекта Word, и если попытаться вызвать несуществующий метод, программа все равно будет откомпилирована. Ошибка проявится только во время выполнения программы. Это является очень серьезным недостатком позднего связывания, так как не позволяет выявлять ошибки в вызовах методов объекта автоматизации на стадии компиляции.

В рассмотренном примере мы использовали интерфейс, управляющий приложением MS Word с использованием команд языка WordBasic, который использовался для написания макросов в старых версиях Word (до 6-й версии включительно). Сейчас макросы Word и других приложений MS Office пишутся на языке Visual Basic for Application (VBA) — разновидности языка Visual Basic. Однако сохранилась поддержка и языка WordBasic.

<== предыдущая лекция | следующая лекция ==>
Структура пакета Microsoft Office | Пример использования раннего связывания
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 419; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.