Курс лекций по V B 5.0

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

Другая часть OLE, называемая OLE Automation, позволяет управлять другим приложением. Несомненно также и то, что приложения Visual Basic могут управляться из других приложений. Например, из Visual Basic можно управлять приложением Excel, используя его встроенную версию языка Visual Basic, или можно управлять редактором Word, опять же используя встроенную в него версию Visual Basic. (В системе Office'97 присутствует унифицированная версия языка для всех его приложений, которая основывается на Visual Basic for Application Version 5.0.)

И, наконец, необходимо отметить, что в настоящий момент OLE является составной частью более общей технологии, которую очень часто называют COM/OLE (сокращение СОМ происходит от component object model). Суть идеи основывается на важности понятия объекта для современного программирования. В 90-х годах стало ясно, что все большее количество людей считает пересылку объектов по сети Internet достаточно легким делом, поэтому они вовсю выступают за политику, которую можно условно назвать "объекты везде". Использование COM/OLE представляется достаточно удобным способом пересылки объектов по сети и даже, в скором времени, между различными платформами.

Использование OLE

Когда пользователь добавляет клиентский элемент управления OLE в проект Visual Basic, фактически создается то, что фирма Microsoft называет составным документом OLE (OLE compound document). (При создании клиентского элемента управления Visual Basic выводит на экран диалоговую панель, в которой запрашивается имя приложения, объект которого предполагается вставить.) Клиентский элемент управления OLE поставляется со всеми версиями Visual Basic. Его значок обычно находится в нижней части панели инструментов и представляет собой сетку с надписью "OLE" внутри.

Точно так же, как и в случае с DDE, проект Visual Basic может выступать как в роли приложения-клиента (или контейнера), которое получает информацию, так и в роли приложения-сервера (или источника), которое посылает информацию. В большинстве случаев при работе с OLE приложение Visual Basic получает информацию, т.е. выступает в роли клиента. В любом случае элемент управления OLE, который поставляется с Visual Basic, является клиентским элементом управления и не позволяет приложению Visual Basic выступать в роли OLE-сервера (хотя Visual Basic 5.0 позволяет это: все, что необходимо, это написать код или свой собственный элемент, который будет выступать в роли OLE-сервера).

Создание OLE-объектов

Как уже было отмечено ранее, OLE-объект представляет собой данные, с которыми может работать элемент управления OLE. Это может быть графическая диаграмма, группа ячеек, вся электронная таблица или часть документа текстового процессора. Любое приложение, поддерживающее OLE, имеет библиотеку объектов, каждый из которых может быть "отдан" другому приложению. (Слово "отдан" является жаргонным и означает следующее: "вот вещь, с которой можно работать. Кроме того, можно работать с ней следующими установленными путями: .") Перед тем как приступить к дальнейшему описанию технологии ОLE, необходимо дать определение следующему термину: класс OLE (OLE-class). Это приложение, которое предоставляет OLE-объект. Любое приложение, поддерживающее технологию OLE, имеет уникальное имя класса OLE, например, "WordDocument" или "ExcelWorksheet". (Необходимо отметить, что в названии класса учитывается регистр символов.) Можно получить список доступных имен классов, нажав на изображение эллипса в свойстве Class в окне Properties для управляющего элемента OLE.

Существует четыре способа создания объектов OLE. Простейшим из них является:

Встроить или установить связь с объектом для контейнерного элемента OLE. Такой способ позволяет изменять объекты на форме во время выполнения приложения и просто добавлять связанные объекты.

Описание более сложных методов приведено ниже.

Создание OLE-объекта при помощи панели инструментов

Для добавления OLE-объекта к панели инструментов необходимо выполнить следующие шаги:

1. Выбрать Project\Components и перейти к закладке Insertable Objects.

2. Установить необходимый флажок типа объекта в появившейся диалоговой панели.

Например, можно добавить объект Excel Worksheet в панель инструментов, заполнив диалоговую панель Insertable Objects так, как показано на рисунке справа.

Теперь, при применении выбранного инструмента к форме соответствующий объект автоматически встраивается в приложение.

Доступ к объектам через пункт меню Project|References

Большинство современных OLE-компонентов приложений доступно через диалоговую панель, появляющуюся при вызове пункта меню Project|References. Эти библиотеки объектов очень полезны, так как они содержат описания всех объектов, методов и свойств, которые можно просмотреть при помощи Object Browser. Более того, всегда оказывается доступной справочная информация по используемым форматам команд из Object Browser. Например, если добавить подобным способом библиотеку объектов Excel в Visual Basic и затем использовать Object Browser для ее изучения, то можно одним взглядом определить необходимый синтаксис.

После того, как установлена ссылка на библиотеку объектов при помощи диалоговой панели ProjectIReferences, можно воспользоваться функцией CreateObject с предварительно определенной объектной переменной для создания такого объекта в коде программы. Ниже приведен пример кода для объекта электронной таблицы Excel:

Dim objExcel As Object

Set objExcel = CreateObject ("EXCEL.SHEET")

Приведенные выше две строки кода создают объектную переменную (в нашем случае она имеет имя objExcel). Эта объектная переменная может быть использована для управления электронной таблицей Excel.

Создание объектов, которые не поддерживаются библиотекой объектов


Страница: