Технология ole выполняет. Представление о технологии OLE

22.04.2019 Флешки и HDD

Технология OLE (Object Linking and Embedding) ― технология управления и обмена информацией между программным интерфейсом других приложений. Связывание и внедрение объектов (Object Linking and Embedding).
OLE позволяет создавать объекты (рисунки, чертежи и текст) в одном приложении, а затем отображать эти объекты в других приложениях. Например, при помощи технологии OLE можно создать диаграмму в электронной таблице, а затем отобразить ее в CorelDRAW. Объекты, помещенные в приложение, использующее OLE, называются OLE-объектами. Для того, чтобы технология OLE действовала, приложение, используемое для создания OLE-объекта, и приложение, в которое помещается OLE-объект, должны поддерживать режим OLE. CorelDRAW поддерживает все функции OLE, однако некоторые приложения поддерживают лишь часть этих функций.

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

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

Буфер обмена
Буфер обмена представляет собой временную область памяти, используемую для хранения информации. Реализована возможность копирования в буфер обмена элемент или его часть из приложения-сервера, а затем размещения его в приложение-клиент. Этот элемент становится OLE-объектом. При простом копировании и вставке информации этот элемент становится OLE-внедренным объектом. При создании OLE-связанного объекта с помощью буфера обмена используется команда "Специальная вставка". При использовании буфера обмена вставляемый элемент не всегда становится OLE-объектом. Например, простой текст из текстового редактора ASCII становится при вставке просто текстом CorelDRAW. Для осуществления полного контроля над вставленными элементами следует пользоваться командой "Специальная вставка".

Буксировка
Буксировка представляет собой самый простой способ создания OLE-объекта. При помощи мыши можно выбрать элемент в приложении-сервере, разместить его в приложение-клиент, после чего он автоматически становится OLE-объектом. При обычной буксировке выделенного объекта он становится OLE-внедренным объектом. Если буксировка выделенного объекта будет осуществляться при нажатой клавише CTRL или SHIFT, он становится OLE-связанным объектом. При буксировке файлов в CorelDRAW с рабочего стола Windows 95, CorelDRAW, прежде чем создать OLE-связанный объект, попытается сначала их импортировать. Для увеличения возможностей контроля за процессом, нажмите при буксировке правую кнопку мыши для вызова контекстного меню. Это меню позволяет задать способ, с помощью которого указанные элементы будут помещены в документ.

Ограничения, накладываемые на использование OLE-объектов в CorelDRAW
В большинстве случаев редактировать OLE-объекты можно только при помощи приложения-сервера. На редактирование OLE-объекта непосредственно с помощью CorelDRAW наложены следующие ограничения: Объекты CorelDRAW нельзя вращать Если OLE-объект помещен в группу или в PowerClip, его можно вращать, однако, это может привести к непредвиденным последствиям и не рекомендуется делать. Наклонять клонировать к ним нельзя применить эффекты из меню "Эффекты", за исключением случаев работы с PowerClip соединять, объединять, осуществлять пересечение и исключение с другими объектами. Имеется ограниченное число способов изменения OLE-объекты, не прибегая к помощи приложения-сервера.
Над OLE-объектами можно производить следующие действия: изменять их размеры и перемещать копировать Копии связанных объектов соотносятся с тем же файлом, что и исходный объект. Помещать в контейнеры PowerClip импорт и экспорт файлов. Фильтры импорта и экспорта представляют собой трансляторы, которые обеспечивают согласование двунаправленной связи между приложениями.

Форматы файлов
Для хранения данных в компьютерных файлах, могут применяться различные системы. Используемая в данном файле система определяет его формат. Файлы различного типа, например, растровые, векторные, звуковые, текстовые и т.п., используют различные форматы. Формат можно часто определить по расширению, добавляемому к имени файла при его записи в указанном формате. Например, .CMX, .BMP, .DOC, .AVI, .TIF, и т.п. В приложениях Windows 95 в Проводнике или в диалоговых окнах, сходных с окном диалога Открытие изображения в Corel PHOTO-PAINT, для отображения различных форматов используются различные значки. Часто форматы файлов создаются специально для работы в определенных приложениях. Например, изображения, созданные в CorelDRAW хранятся в файлах с расширением.CDR. Другие форматы являются более общими, например, формат.TXT, который представляет собой файл ASCII, не связанный с конкретными приложениями.

Сжатие файлов
В целях экономии пространства на жестком диске файлы часто хранят в сжатых форматах. Как правило, чем сильнее сжат файл, тем дольше он записывается или считывается. Сжатие файлов бывает двух типов: с потерями и без. При сжатии без потерь все исходные данные в процессе сжатия и расширения сохраняются. Сжатие без потерь рекомендуется для хранения текста или числовых данных, например, электронных таблиц. В методах RLE, LZW и CCITT применяется техника сжатия без потерь. Сжатие с потерями обеспечивает более высокую степень уплотнения информации и, следовательно, может оказаться полезным, когда фактор экономии дискового пространства является критичным. При использовании этого типа сжатия происходит потеря некоторых исходных данных, однако если они не представляют интереса для пользователя, их потеря не окажет существенного влияния на конечные результаты работы. Метод JPEG использует технику сжатия с потерями и применяется главным образом для сжатия цветных и двухцветных изображений в оттенках серого. Отбрасываемая при сжатии информация не сказывается существенно на качестве изображения.

Глубина цвета
Глубина цвета (называемая также разрядностью цвета) определяет число цветов, которое поддерживает данный файл. 1-разрядный файл поддерживает два цвета (как правило, черный и белый), 2-разрядный файл - 4 цвета, 4-разрядный - 16 цветов, 8-разрядный - 256 цветов и 24-разрядный - 16 миллионов цветов.
Изображение в оттенках серого содержится в 8-разрядном файле, дающем 256 градаций между белым и черным. Чем большую глубину цвета поддерживает файл, тем больше места он займет на жестком диске. Часто глубину цвета можно задавать при сохранении или экспорте файла. Если исходное изображение использует лишь несколько цветов, то сохранение его при более высокой глубине цвета (например, от 16 до 256 цветов) даст изображение очень близкое по цвету к исходному. В то же время, если исходное многоцветное изображение будет преобразовано с использованием меньшей глубины цвета (например, при преобразовании 24-разрядного файла в файл, поддерживающий 256 цветов), то файл создаст цветовую палитру и будет использовать комбинации ее цветов для моделирования цветов исходного изображения. Цвета этой палитры будут зависеть от цветов исходного изображения.
Различные приложения поддерживают разную глубину цвета. В то же время некоторые форматы поддерживают определенное количество цветов. При выборе формата, в котором будет храниться файл, следует учитывать все цветовые ограничения, которые накладываются этим форматом, а также и приложением, использующим этот файл.
Примечания. Дополнительную информацию по форматам конкретных файлов, содержащую технические замечания по их использованию можно получить в разделе оперативной справочной системы, посвященном вопросам технической поддержки. Формат файла, который поддерживает большое количество цветов, не обязательно должен поддерживать глубину всех цветов, лежащую ниже его максимальной разрядности цвета. Например, формат может поддерживать 24-разрядный цвет, но при этом не поддерживать черного и белого. В любом случае при обмене информацией с другим приложением, необходимо убедиться в наличии нужного фильтра. При выборочной установке приложения Corel необходимо добавить к списку активных фильтров нужный фильтр.

Диспетчер фильтров
Диспетчер фильтров Corel содержит фильтры форматов файла, которые поддерживаются всеми приложениями Corel. Если при работе в CorelDRAW требуется открыть файл в формате, отличном от.CDR или.CMX (исходные форматы файлов CorelDRAW), диспетчер файлов оттранслирует эти файлы таким образом, что программа сможет их открыть. При необходимости сохранения изображения в формате, отличном от.CDR или.CMX, диспетчер фильтров предварительно преобразует файл в нужный формат.

Импорт и открытие файлов
Приложения Corel поддерживают различные форматы файлов, но для каждого конкретного приложения только один является собственным. Исключением является CorelDRAW, где осуществляется поддержка двух исходных форматов (.CDR и.CMX). При необходимости загрузки файла, имеющего какой-либо другой формат, его следует импортировать или открыть при помощи фильтра.

Экспорт и сохранение файлов
При необходимости сохранения файла в несобственном формате приложения, его следует экспортировать или сохранить в нужном формате. Команды "Экспорт" и "Сохранить" как находятся в меню "Файл". При вызове любой из этих команд открывается диалоговое окно, в котором следует выбрать дисковод и папку. Необходимо ввести имя файла и выбрать его тип в окне списка "Тип файла".

Литература
1. Inside OLE 2-(2e) by Kraig Brockschmidt (Reviewed May 1995).

Появившаяся еще в ранних версиях Windows технология согласно которой приложения пакета MS Office могут взаимодействовать между собой и со многими другими прикладными программами путем выполнения операций импорта-экспорта данных, при которых данные одного файла-документа по определенным соглашениям пересылаются в другой файл-документ и при этом оба файла могут иметь одинаковый тип, но разный формат или могут принадлежать к разным классам документов произвела настоящий фурор в кругах пользователей. Тем более, что сама идея (обмен данными между приложениями и предоставление служб одного программного продукта другому) в те времена была просто революционной. Теперь какой-либо объект (например, файл мультимедиа), подготовленный сторонним приложением, может быть использован другим программным продуктом или даже внедрен в состав его документа.

Обмен данными между документами различных приложений в большинстве случаев осуществляется на основе технологии связывания и внедрения объектов (технологии OLE - Object Linking and Embedding).

Причем приложение- получатель услуг OLE не обязано знать, каким образом был создан внедренный в него объект, и уж тем более вникать в особенности его работы. Единственная обязанность приложения - иметь представление об элементарных методах современной версии OLE - OLE 2.0.

Понятие OLE

Для связывания документов разных приложений используется технология OLE (Object Linking and Embedding), что означает "связывание и встраивание объектов", разработанная корпорацией Майкрософт.

Наличие такого механизма позволяет перенести в выходной документ фрагмент или файл некоторого приложения. Выходной связанный документ приобретает при этом свойства составного документа, т. е. документа, имеющего встроенные или связанные объекты различных форматов, созданные другими приложениями. Эта технология обеспечивает совместную работу нескольких приложений при создании составного документа, позволяет перемещать и копировать объекты между приложениями, а также хранить объекты в отдельных файлах, связанных с документом, где этот объект используется.

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

Главное действующее лицо технологии OLE - OLE-объект (OLE object). Это совокупность данных, которые совместно используются несколькими приложениями. Объекты могут внедряться в документы (вспомните пункт меню Вставка - Объект текстового процессора Microsoft Word).



Приложение, отвечающее за составной документ, принято называть контейнером (OLE container). Оно имеет сложную структуру, так как умеет работать с “чужими” объектами. Приложение, создавшее объект, называется сервером (OLE server).

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

Как следует из названия технологии, объект OLE может быть связан (linked) или внедрен (embedded) в составной документ.

Контейнеры и серверы могут поддерживать два режима взаимодействия:

· встраивание (внедрение) объектов. Этот режим означает, что данные объекта будут храниться вместе с основным документом (например, внедренная таблица Excel будет сохранена в.doc – файле редактора Word).

· связывание объектов. В составном документе хранится только ссылка на объект, данные которого находятся в другом документе.

С помощью технологии связывания и внедрения объектов (OLE), реализованной в Microsoft Windows, можно копировать и размещать информацию из одного приложения в другое, сохраняя возможность редактирования ее в исходном приложении.

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



Одно из основных различий между объектами OLE, ассоциированными с 16- разрядными серверами OLE 1 и с 32- разрядными серверами OLE 2, заключается в способе их активизации. Когда активизируется объект, созданный для сервера OLE 1, запускается и получает фокус ввода приложение-сервер, а объект OLE появляется в нем в готовом для редактирования виде. Когда активизируется объект OLE 2, приложение-сервер OLE 2 становится активным неявно, "внутри" приложения-контейнера. Это называется активизацией по месту вставки (in-place activation), или визуальным редактированием (visual editing).

При активизации объекта OLE 2 меню и панели инструментов приложения- сервера заменяются или сливаются с соответствующими элементами приложения- клиента, а часть окна приложения-клиента, по сути, становится окном приложения- сервера.

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

приложение-сервер открывается в отдельном окне, и после редактирования объекта в меню Файл этого окна выбирают команду Выход и возврат для возврата к составному документу в приложении-клиенте;

· в окне приложения-клиента меню команд и панели инструментов заменяются меню и панелями приложения-сервера, и после редактирования объекта следует щелкнуть в любом другом месте документа для активизации приложения-клиента.

Эта технология позволяет внедрять в составной документ объекты самого различного типа, например, звуковые или видео. Конечно, они не могут быть воспроизведены средствами WordPad, поэтому в документе отображаются значком, двойной щелчок по которому активизирует просмотр объекта с помощью создавшего его приложения. Следует иметь в виду, что размеры файлов составных документов в этом случае оказываются очень большими, так как каждый из них содержит отдельную копию объекта. Редактирование одной из копий не окажет никакого воздействия на остальные, поэтому составные документы могут содержать разные варианты одного и того же исходного объекта.

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

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

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

Введение

С появлением персональных компьютеров (ПК) наметился процесс информатизации всех видов человеческой деятельности: производства, науки, техники. Данный процесс вызван противоречиями между ограниченными возможностями человека по восприятию информации и мощными потоками поступающей и хранящейся информации.

Развитие информатизации общества тесно связано с развитием вычислительной техники.

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

Для связывания документов разных приложений используется технология OLE (Object Linking and Embedding), что означает "связывание и встраивание объектов".

Наличие такого механизма позволяет перенести в выходной документ фрагмент или файл некоторого приложения. Выходной связанный документ приобретает при этом свойства составного документа, т. е. документа, имеющего встроенные или связанные объекты различных форматов, созданные другими приложениями.

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

Понятие OLE

OLE (англ. Object Linking and Embedding) - технология связывания и внедрения объектов в другие документы и объекты, разработанные корпорацией Майкрософт.

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

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

OLE используется при обработке составных документов (англ. compound documents), может быть использована при передаче данных между различными несвязанными между собой системами посредством интерфейса переноса (англ. drag-and-drop), а также при выполнении операций с буфером обмена. Идея внедрения широко используется при работе с мультимедийным содержанием на веб-страницах (пример - Веб-ТВ), где используется передача изображения, звука, видео, анимации в страницах HTML (язык гипертекстовой разметки) либо в других файлах, также использующих текстовую разметку (например, XML и SGML).

Однако, технология OLE использует архитектуру "толстого клиента", то есть сетевой ПК с избыточными вычислительными ресурсами. Это означает, что тип файла либо программа, которую пытаются внедрить, должна присутствовать на машине клиента. Например, если OLE оперирует таблицами Microsoft Excel, то программа Excel должна быть инсталлирована на машине пользователя.

OLE 1.0 был выпущен в 1990 году на основе технологии DDE (Dynamic Data Exchange), использовавшейся в более ранних версиях операционной системы Microsoft Windows. В то время как технология DDE была сильно ограничена в количестве и методах передачи данных между двумя работающими программами, OLE имел возможность оперировать активными соединениями между двумя документами либо даже внедрить документ одного типа в документ другого типа.

OLE сервера и клиенты взаимодействуют с системными библиотеками при помощи таблиц виртуальных функций (англ. virtual function tables, VTBL). Эти таблицы содержат указатели на функции, которые системная библиотека может использовать для взаимодействия с сервером или клиентом. Библиотеки OLESVR.DLL (на сервере) и OLECLI.DLL (на клиенте) первоначально были разработаны для взаимодействия между собой с помощью сообщения WM_DDE_EXECUTE, предоставляемого операционной системой.

OLE 1.1 позднее развился в архитектуру COM (component object model) для работы с компонентами программного обеспечения. Позднее архитектура COM была преобразована и стала называться DCOM.

Когда объект OLE помещен в буфер обмена информацией, он сохраняется в оригинальных форматах Windows (таких как bitmap или metafile), а также сохраняется в своём собственном формате. Собственный формат позволяет поддерживающей OLE программе внедрить порцию другого документа, скопированного в буфер, и сохранить её в документе пользователя.

Следующим эволюционным шагом стал OLE 2.0, сохранивший те же цели и задачи, что и предыдущая версия. Но OLE 2.0 стал надстройкой над архитектурой COM вместо использования VTBL. Новыми особенностями стали автоматизация технологии drag-and-drop, in-place activation и structured storage.

В 1996 году Microsoft переименовала технологию OLE 2.0 в ActiveX. Были представлены элементы управления ActiveX, ActiveX документы и технология Active Scripting. Эта версия OLE в основном используется веб-дизайнерами для вставки в страницы мультимедийных данных.

Подводя итог, можно сделать вывод, что OLE является набором средств, позволяющим легко подготавливать документы, включающие в себя данные, подготовленные в различных приложениях. Чтобы вы могли объединить данные, подготовленные в различных приложениях, необходимо, чтобы эти приложения поддерживали технологию OLE. Стандартные приложения Windows - Paintbrush, Write, Sound Recorder, Cardfile, Object Pakager поддерживают OLE. Кроме стандартных приложений Windows, многие другие приложения, разработанные фирмой Microsoft и другими независимыми фирмами, включают в себя поддержку OLE-технологии. Microsoft Word for Windows 2.0 и 6.0, Microsoft Excel 4.0 и 5.0, ZSoft PhotoFinish 2.0, Designer, FoxPro for Windows, Access и многие другие пакеты включают поддержку OLE-технологии.

OLE (англ. Object Linking and Embedding, произносится как oh-lay [олэй]) - технология связывания и внедрения объектов в другие документы и объекты, разработанная корпорацией Майкрософт.

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

Таким образом первое что необходимо сделать это создать папку проекта. Имя папки рекомендуется задать следующим образом: «Название вида работ» + «Название дисциплины» + «ФИО исполнителя». Например «Отчет по практическим ИТ в профессиональной деятельности Иванова ИИ», допускается использование сокращений: «Отчет по пр ИТ в профдеятел Иванов ИИ».

На втором этапе необходимо поместить в папку документ Word «Отчёт по практическим работам» (это документ получившейся у вас по итогам выполнения практической работы №1 «Работа с текстовым процессором Word»). После чего необходимо поместить в данную папку документ Excel,полученный в ходе выполнения данной практической работы. Также в данную папку будут, помещается все файлы, используемые при выполнении работ предусмотренных данными методическими указаниями.

Так как по сути технология OLE это механизм организации различных режимов вставки в офисном пакете MSOffice, ниже будут представлены некоторые режимы.

Допустим необходимо вставить некоторую информацию в документ Word из документа Excel. Для этого необходимо поместить курсор в нужное место документа Word, далее выбирается меню «Вставка» инструмент «Объект» (смотри рисунок 2.34)

Рисунок 2.34 «Вставка объекта»

После чего появится диалоговое меню мастера «Вставка объектов», в котором необходимо перейти на панель «Создание из файла». В данном окне нажимаем кнопку «Обзор» и выбираем нужный нам файл, проставляем галочку в поле «Связь с файлом» и жмём кнопку «ОК» (смотри рисунок 2.35).

Рисунок 2.35 «Вкладка «Создание из файла» мастера «Вставка объектов»»

Результат представлен на рисунке 2.36. необходимо отметить, что двойной клик мыши по вставленному объекту запускает приложение, при помощи которого был создан объект, в данном случае это Excel.

Рисунок 2.36 «Результат вставки объекта»

Данный режим позволяет автоматически обновлять данные в документе Wordв случай внесения изменений в исходный файл Excel. При каждом открытии документа Word проверяются связи документа и в случаи внесения изменений ходя бы в один из исходных файлов, на которые ссылается документ Word всплывает долговое окно, в котором пользователю предлагаются одно из действий на выбор (смотри рисунок 2.37).



Рисунок 2.37 «Диалоговое окно предлагающее выбор одного из действий при внесении изменений в исходные файлы»

Мастер «Вставка объекта» не накладывает на форматы вставляемых объектов, это может быть любой файл в плоть до приложения. Необходимо отметить что допускается возможность вставки в виде значка (ярлыка) (смотри рисунок 2.38).

Рисунок 2.38 «Пример добавления значка (ярлыка)»

Важно отметить, что при «Вставке из файла» можно указывать не только абсолютную ссылку, включающую полное имя файла, начиная от имени диска, но и относительную ссылку, начинающуюся с имени каталога (папки) в которой хранятся файлы (смотри рисунки 2.39 и 2.40).


Рисунок 2.39 «Полное имя файла»


Рисунок 2.40 «Относительный адрес»

На самостоятельное рассмотрение студентами оставляется вкладка «Создание» мастера «Вставка объекта» и прочие инструменты панели инструментов меню «Вставка».

OLE-технология

OLE – технология(Object Linking and Embedding – объектное связывание и встраивание) позволяет создавать сложные составные документы, в которых содержатся разнотипные объекты, созданные различными приложениями. Так в текстовый документ редактора Word можно вставить таблицу Excel, диаграмму, поясняющую текст, или математическую формулу, для пользователя это останется единым документом. Приложение, отвечающее за составной документ, принято называть контейнером. Оно имеет сложную структуру, так как умеет работать с “чужими” объектами. Приложение, создавшее объект, называется сервером.

Контейнеры и серверы могут поддерживать два режима взаимодействия:

    встраивание (внедрение) объектов. Этот режим означает, что данные объекта будут храниться вместе с основным документом (например, внедренная таблица Excel будет сохранена в.doc – файле редактора Word).

    связывание объектов. В составном документе хранится только ссылка на объект, данные которого находятся в другом документе.

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

Для редактирования связанных данных открывается отдельное окно, того приложения, в котором эти данные были созданы, т.е. сервера. При внедрении объектов можно также запустить сервер в отдельном окне, но можно и редактировать данные «на месте» («in Place»), т.е. в окне контейнера, если он это позволяет. В этом случае контейнер обязан иметь меню, а загрузившийся «in Place»сервер дополнит его своими командами.

Компонент OLEContainer

На странице System палитры компонент в Borland Builder С++ есть специальный компонент, предназначенный для внедрения и связывания объектов из других приложений - OLEContainer .

Основные свойства

Свойство State позволяет определить состояние объекта и его сервера. Его значения:

    osEmpty–контейнер не содержит объекта;

    osLoaded– объект в контейнере, сервер не выполняется;

    osRunning– сервер запущен;

    osOpen– OLE –объект открыт в отдельном окне сервера;

    osInPlaceActive– объект активизирован «на месте», но меню еще не изменено. Это промежуточное состояние объекта перед полной загрузкой сервера.

    osUIActiveобъект активизирован «на месте», меню изменено.

Следующий код позволяет определить имя объекта, загруженного в контейнер (свойство AnsiString OleClassName ), способ работы с объектом (Linked = true– связывание, иначе – внедрение), а также получить имя связанного документа:

if (OleContainer1 -> State != osEmpty)

Label2 -> Caption = OleContainer1 -> OleClassName;

// Состояние контейнера – целое число, начиная с 0 (osEmpty)

Label6 -> Caption = OleContainer1 -> State;

if (OleContainer1 -> Linked)

Label4 -> Caption = OleContainer1 -> SourceDoc;

Свойство bool AllowInPlace определяет возможность редактировать внедренный объект «на месте». ЕслиAllowInPlace = trueиIconic = false(свойствоIconicопределяет должен ли объект быть представлен в виде пиктограммы), то «InPlace» – редактирование разрешено. ПриAllowInPlace = falseсервер будет открываться в отдельном окне.

Свойство AutoActivate имеет три возможных значения:aaManual,aaGetFocus,aaDoubleClickи определяет способы активизации загруженного в контейнер объекта.

По умолчанию AutoActivate = aaDoubleClick , то есть объект становится активным при двойном щелчке. ЗначениеaaGetFocus определяет активизацию при получении фокуса ввода. ПриAutoActivate = aaManual за активизацию объекта отвечает программист. В этом случае можно использовать метод компонента-контейнераDoVerb, который отвечает за передачу команд от контейнера серверу. Например, можно воспользоваться следующим оператором:

OleContainer1->DoVerb (ovShow); // Показать объект

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

Создание и сохранение нового объекта (внедрение)

Создание нового объекта можно обеспечить использованием специального диалогового окна Insert Object (вставка объекта) или вызовом методаCreateObject . В первом случае класс объекта выбирает пользователь из системного списка возможных объектов, а во втором программно создается конкретный объект.

Для использования диалогового окна можно воспользоваться следующим кодом, расположенным, например, в команде меню «новый»:

AnsiString File_Name; // переменная объявлена глобально или в классе формы

if (OleContainer1->InsertObjectDialog())

{ File_Name = "";

OleContainer1->DoVerb(ovShow);

В появившемся диалоговом окне необходимо установить значение RadioButton- кнопки «Создать новый», в списке выбрать необходимый тип объекта и щелкнуть «OK».

Программно объект можно создать так (операторы можно вставить, например, в соответствующие пункты меню):

    таблица Excel

OleContainer1->CreateObject("Excel.sheet",false);

    документ Word

OleContainer1->CreateObject("Word.Document",false);

Если создать нужно объект, имя типа которого неизвестно, то нужно обратиться либо к соответствующей документации по серверу, либо написать тестовую программу с загрузкой объекта методом OleContainer->InsertObjectDialog() и воспользоваться свойствомOleContainer -> OleClassNameдля определения его имени.

При создании нового объекта используется внедрение (так как для связывания необходим файл). В этом случае за хранение данных объекта отвечает программа - контейнер. Сохранить данные в файле можно с помощью метода SaveToFile (<имя файла>), например, в пункте меню «Файл - Сохранить…» можно использовать следующий код:

void __fastcall TForm1::FSaveClick(TObject *Sender)

{ if (File_Name=="")

if (SaveDialog1->Execute())

File_Name = SaveDialog1->FileName;

OleContainer1->SaveToFile(ChangeFileExt(File_Name,".ole"));

В данном примере расширение файла.ole указывает на то, что объект будет сохранен в специальном формате отличном от формата сервера. Приложение - сервер отдельно от контейнера прочесть эти данные не сможет.

Функция ChangeFileExt была использована в примере для замены расширения файла. При выполнении команд сохранения и извлечения данных из файла могут понадобиться и другие функции обработки имен файлов:

    ChangeFileExt (const AnsiString FileName, const AnsiString Extension)– принудительно изменяет имя файла FileName, заменяя расширение на Extension;

    функция AnsiString ExtractFileExt (AnsiString FileName) возвращает расширение файла и, следовательно, позволяет проверить его тип;

    AnsiString ExtractFileName (AnsiString FileName)возвращает имя файла, извлеченное из строкиFileName, т.е. после последнего обратного слэша или двоеточия;

    AnsiString ExtractFilePath (AnsiString FileName)извлекает путь к файлу, включая последний слэш или двоеточие;

    AnsiString ExtractFileDrive (AnsiString FileName) извлекает диск файла с двоеточием (например, «D:»).

Метод контейнера LoadFromFile (<имя файла>)позволяет загрузить запомненный объект в контейнер:

void __fastcall TForm1::FOpenClick(TObject *Sender)

if (OpenDialog1->Execute())

if (ExtractFileExt(OpenDialog1->FileName)!= ".ole")

File_Name = OpenDialog1->FileName;

OleContainer1->LoadFromFile(File_Name);

OleContainer1->DoVerb(ovShow);

Создание объекта из файла (внедрение)

Для создания объекта из имеющегося файла можно воспользоваться тем же окном Insert Object , как и в случае создания нового объекта. В случае внедрения пользователь устанавливает значение RadioButton-кнопки «Создать из файла», а для поиска файла щелкает на кнопке «Обзор…».

Программный способ создания объекта из файла обеспечивается методом: OleContainer-> CreateObjectFromFile (AnsiString<имя файла>,boolIconic).

Параметры методы определяют имя исходного файла и режим отображения объекта (Iconic=true– объект в виде пиктограммы). Вот такой код можно вставить в соответствующий пункт меню:

void __fastcall TForm1::FFileClick(TObject *Sender)

if (OpenDialog1->Execute())

OleContainer1->CreateObjectFromFile(OpenDialog1->FileName,false);

OleContainer1->Repaint();

Метод OleContainer->Repaint() приводит к перерисовке окна контейнера и, следовательно, появлению данных объекта на экране.

Создание связанного объекта

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

Пользователю в окне Insert Object следует выполнить действия по выбору файла, перечисленные выше, и дополнительно установить флажок «Связь».

Программист должен воспользоваться методом: OleContainer->CreateLinkToFile (AnsiString <имя файла>, bool Iconic).

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

Работа с сервером

Поскольку работать с данными объекта может только программа создавшая объект (сервер), то контейнеру могут потребоваться знания о возможных действиях над объектом. Метод DoVerb (int Verb)требует выполнения одной из команд, а весь список возможных действий содержит свойствоObjectVerbs компонента контейнера. Получить этот список можно только после загрузки объекта в контейнер, и, естественно, что каждый сервер (а, следовательно, и объект) имеет свой список команд.

Константа ovShow– это пример зарезервированной OLE – команды. Использование методаDoVerbс параметромovShow, которое было уже рассмотрено в одном из предыдущих разделов, приводит к немедленному открытию сервера.

Следующий код проявляет список возможных команд объекта в компоненте ListBox(команды нумеруются с нуля) и просит выполнить вторую команду в списке:

ListBox1->Items = OleContainer1->ObjectVerbs;

OleContainer1->DoVerb(1);

Кроме этого контейнер может попросить сервер сохранить данные объекта в виде документа в формате сервера. Для этого используется метод SaveAsDocument (<имя файла>). Этот документ в дальнейшем может обрабатываться приложением сервером без участия контейнера. Интересно, что этот метод можно использовать как для связанных так и для внедренных объектов.

При завершении работы с объектом программа может освободить OleContainer, вызвав метод OleContainer->DestroyObject() - разрушить загруженный объект. Этот метод можно вызывать перед загрузкой нового объекта или в команде меню «Файл-Выход».

1. Создать новое приложение. На главной форме расположены следующие компоненты:

  • Несколько элементов Label

И два невизуальных компонента:

Примерный вид главного окна приложения представлен на рисунке. В OleContainerзагружен рисунок (файл с расширением.bmp). Состояние сервера:osRunning.

2. Добавить на форму компонент, в котором будет отображаться информация об объекте: «не загружен» / «внедрение» / «связывание».

3. Меню должно содержать следующие команды:

    «Объект» (InsertDialog, новый объект Excel, новый объект Paint, внедренный из файла, внедренный из «имя презентации PowerPoint», связанный из файла, связанный из «имя документа Word», Выполнить команду);

    «Свойства» (Свойства объекта, Команды сервера);

    «Справка» (О программе).

Предусмотреть, чтобы пункты меню были доступны только в тот момент, когда соответствующие им действия могут быть выполнены. Например, пункт «Объект»| «Выполнить команду» может быть доступен только, если объект загружен в OleContainer, а в список ListBox помещен список доступных команд сервера.

4. Для всех команд меню создать соответствующие обработчики событий.

    «Файл» | «Загрузить объект» - сохраненный объект загружается из ole – файла.

    «Файл» | «Разорвать связь» - разрыв связи с объектом;

    «Файл» | «Выход» - корректный выход из программы (если была связь с объектом разорвать ее);

    «Объект» | InsertDialog – объект и его способ загрузки в контейнер выбирается в диалоговом окне пользователем;

    «Объект» | «Объект Excel» – создается новый объект;

    «Объект» | «Объект Paint» – создается новый объект;

    «Объект» | «Внедренный из файла» – имя файла определяется пользователем в диалоговом окне OpenDialog;

    «Объект» | «Внедренный из «имя презентации PowerPoint» - в контейнер вставляется предварительно созданная презентация слайдов;

    «Объект» | «Связанный из файла» » – имя файла определяется пользователем в диалоговом окне OpenDialog;

    «Объект» | «Связанный из «имя документа Word» - в контейнер вставляется предварительно созданный документ;

    «Объект» | «Выполнить команду» - серверу для выполнения передается команда, выбранная пользователем в списке ListBox$

    «Свойства» | «Свойства объекта» - контейнер запрашивает у сервера имя объекта, состояние сервера и имя связанного документа, на основании полученной информации делается вывод: «объект – не загружен / внедрен / связан». Полученная информация выводится в компоненты Label главного окна приложения.

    «Свойства» | «Команды сервера» - список команд сервера выводится в компоненте ListBox;

    «Справка» | «О программе…» - окно с информацией оприложении и его авторе.

5. Провести полное тестирование приложения на различных объектах и серверах.