Терминология
OLE
Обычно в этом месте книги приводится несколько примеров, в которых рассматривается применение изученных ранее объектов. Мы же прежде рассмотрим некоторые термины OLE, использующиеся в этой главе. В OLE существует собственная терминология. Вы можете сразу не понять все описанные ниже термины, но они будут пояснены позже с помощью примеров.
OLE-объект
OLE-объект - это объект, который делается доступным для других приложений с помощью приложения-сервера OLE. Приложение-сервер OLE делает доступными объекты различных типов (или классов). OLE-объекты используются в приложениях-контейнерах (container applications). На рис. 14.1 показано, как приложение Excel (в данном случае оно является приложением-сервером) делает доступной электронную таблицу (OLE-объект), которую можно вставить в документ Word (приложение-контейнер).
Рис. 14.1. Таблица Excel, встроенная в документ Word
Приложение-сервер
Это приложение, функциональные возможности которого доступны для приложения, разработанного в Visual Basic. Когда вашей программе требуется отредактировать документ, созданный приложением-сервером, она просто устанавливает связь, и приложение-сервер используется для редактирования.
Приложение-контейнер
Это приложение, которое содержит OLE-объекты. Объекты могут быть связаны (linked) или встроены (embedded). Сам по себе, контейнер также является объектом. Примером контейнера может служить форма (FRM) - объект, содержащий элементы управления. О контейнере говорят как о клиенте (client), потому что он использует средства OLE-сервера для получения доступа к объектам. В примере, показанном на рис 14.1, Excel является приложением-сервером, a Word — приложением-контейнером.
Встраивание объекта
Используя встраивание (часто называют внедрение),
можно вставить объект из одного приложения (приложения-сервера) в другое (приложение-контейнер). Встроенный объект является копией оригинала, им можно манипулировать независимо от оригинала. Например, можно внедрить блок ячеек из таблицы Excel в документ Word. Для редактирования содержимого ячеек достаточно выполнить на них двойной щелчок, что приведет к вызову самой программы Excel. Если приложение-контейнер позволяет выполнять редактирование на месте (in-place editing), то меню Excel появится прямо в нем (см. параграф "Оперативное редактирование").
Связывание объекта
Этот метод напоминает встраивание, за исключением того, что данные связаны с документом, из которого они переданы. Изменения объекта в приложении-сервере автоматически отражаются в приложении-контейнере. При связывании происходит встраивание ссылки на объект, открытый приложением-сервером. Каждый раз, когда открывается документ, содержащий связанный объект, приложение-контейнер связывается с приложением-сервером, которое и открывает последнюю версию связанного объекта. Связываемые объекты не являются копиями. Это оригиналы, которые можно просматривать из различных контейнеров.
Оперативное редактирование
Оперативное редактирование (in-place editing) также известно под названием оперативной активации. При этом функциональные возможности приложения-сервера встраиваются в приложение-контейнер, позволяя редактировать объект, с помощью меню и инструментальных средств сервера приложения. Например, если документ Word содержит блок ячеек из таблицы Excel, то двойной щелчок на любой ячейке этого блока приведет к замене меню Word на меню Excel. Это позволяет редактировать содержимое ячеек без переключения в другую прикладную программу.
Оперативное редактирование — это наиболее очевидное проявление того, что раньше называлось "заимствованием функциональных возможностей другой прикладной программы". Чтобы можио было выполнять оперативное редактирование, контейнер и сервер должны поддерживать автоматизацию OLE (рассматривается ниже).
Автоматизация OLE
Этот метод позволяет программно управлять объектами, предоставляемыми другими приложениями, непосредственно из приложений, созданных в Visual Basic. Он является стандартом, определяющим способ распределения программного кода между приложениями и способ управления одними приложениями из других. Например, если блок ячеек из таблицы Excel копируется в документ Word, то происходит встраивание этого блока. Используя автоматизацию OLE, приложение может потребовать, чтобы Excel выполнил определенные вычисления и передал результаты в Word. Можно передать таблицу в Excel, чтобы выполнить обработку данных, которую нельзя сделать средствами Word, а затем возвратить таблицу в Word. Далее в главе рассмотрены примеры приложений Visual Basic, которые управляют объектами, созданными в Word и Excel.
Применение метода "перетащить-и-опустить" в OLE
Используя этот метод можно брать объекты, предоставляемые приложением-сервером и помещать их в приложение-контейнер. Например, можно встроить объект в документ Word, перетащив в него блок ячеек из таблицы Excel. В гл. 4 рассматривались способы программирования метода "перетащить и-опустить" Далее в этой главе будет рассмотрено, как выделить часть документа (или весь документ) и перенести его в окно элемента управления, который распознает перетаскиваемые данные и элемент управления, от которого они поступили.