Скачиваний:
12
Добавлен:
01.05.2014
Размер:
384.51 Кб
Скачать

6.3.5.5. Технология проектирования ole-контейнера

6.3.5.5.1. Трехуровневая адресация ole-объекта

Как уже было сказано, разработка приложения, поддерживающего протокол OLE, является чрезвычайно сложной задачей. Сложность повышается, если отсутствуют внятные описания этого протокола.

Для того, чтобы иметь представление о характере задач, возникающих при создании OLE-приложения, рассмотрим этапы его создания на примере создания OLE-контейнера в Delphi. Delphi с его средствами визуального проектирования и набором готовых компонентов дает возможность хотя бы обозреть этапы создания OLE-приложения.

Вспомним трехуровневую адресацию данных в протоколе DDE. В OLE также поддерживается трехуровневая адресация объектов следующего вида:

  1. Класс OLE-объекта определяет приложение-сервер, которое создало OLE-объект. Класс должен быть определен как для связанного, так и для встроенного объекта.

  2. Документ OLE-объекта определяет файл-источник, который содержит данные для объекта. Документ должен быть определен обязательно только для связанного объекта.

  3. Элемент (item) OLE-объекта определяет, какая часть OLE-документа содержит данные для связывания или встраивания. Элемент используется если необходимо использовать меньшую часть данных, чем целый файл документа.

6.3.5.5.2. Общая характеристика технологии создания ole-клиента

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

Кратко идея выглядит следующим образом. Построение OLE приложения-клиента связано с помещением компонента OleContainer на форму. Помещение нового объекта связано с вызовом метода InsertObjectDialog, а считывание объекта из Clipboard - с вызовом метода PasteSpecialDialog.

Нельзя просто вставить любой файл в контейнер. Вставить можно только файл, который связывается системой с сервером OLE. При инсталляции приложение, обладающее возможностями сервера, регистрируется в Реестре системы.

Действия, которые могут быть выполнены с объектом OLE, описываются в Реестре в разделе VERB. Например, для объекта mplayer такими действями являются: Edit, Play, Open.

Эти действия хранятся в свойстве ObjectVerbs контейнера.

Итак, этот компонент помещается в форму. Для загрузки компонента объектом существуют специальные функции, вызов которых сопровождается открытием соответствующего диалогового окна.

Эти функции решают следующие задачи по загрузке:

  1. создание нового объекта;

  2. чтение объекта из Clipboard;

  3. перетаскивание объекта из сервера.

Загрузка компонента с помощью одного из перечисленных вариантов сопровождается установкой таких свойств компонента как Класс, Документ и Элемент.

Существует два варианта настройки свойств компонента - на этапе проектирования приложения и на этапе выполнения.

На этапе проектирования, находясь в среде разработки Delphi, активизация таких свойств, как Класс, Документ и Элемент, приводит к открытию диалоговых окон, в которых предлагается выбрать тип OLE-объекта - новый или существующий, а также класс, документ и элемент.

На этапе выполнения приложения подходящие функции вызываются путем активизации соответствующих пунктов меню.

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

Соседние файлы в папке Материалы к курсу