sonyps4.ru

Справочное руководство по Delphi - OLE. Электронный учебник по курсу "повышение квалификации руководящих работников, специалистов и преподавателей вуза в области икт"

В Access 2010 имеется возможность добавлять объекты в поле с типом данных OLE . В том случае, когда тип данных задан, как OLE (Object Linking and Embedding – связывание и внедрение объекта), тогда СУБД Access сохраняет внешний объект в общем файле базы данных, отводя на его хранение столько места, сколько этот объект занимает в виде отдельного файла. Под объектами следует понимать файлы, созданные в виде приложений в графических редакторах, видеоклипов, в приложениях MS Office и т.д. При заполнении таблицы данными, которые являются объектами, в соответствующей позиции поля с типом данных OLE формируется сообщение о программе, с помощью которой можно открыть этот объект. Отображение объекта будет осуществляться только в формах и отчетах.

Для встраивания объекта в поле с типом данных OLE необходимо открыть таблицу в режиме «Конструктор». Добавить новое поле, например «Фото товара». Выбрать тип данных «Поле объекта OLE» , после чего сохранить таблицу.

Затем в режиме «Таблица» в строке для ввода данных щелкнуть правой клавишей мыши, в открывшемся меню следует выбрать строку с командой , что приведет к открытию диалогового окна (рис. 3.38, рис. 3.39).

Рис. 3.38 Вставка объекта

Рис. 3.39 Диалоговое окно для добавления нового объекта в таблицу Access

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

Рис. 3.40 Добавления нового объекта в таблицу Access из файла

1. Создание объекта из файла.

Когда речь заходит о данных, которые являются объектами для базы данных, и являются внешними файлами, то требуется иметь эти файлы. Поэтому, потребуется создать несколько файлов, чтобы в дальнейшем увидеть их отображение в базе данных, а также попробовать провести изменение этих файлов. Например, если вы имеете фотографию объекта в файле Монитор.jpg (jpg - универсальный фото формат). Для того чтобы этот файл сохранился в базе данных, следует в окне (рис. 3.40) поставить отметку «Создать из файла» , после чего появится окно, которое представлено на рисунке 3.41. С помощью кнопки «Обзор» следует выбрать необходимый файл.

Рис. 3.41 Поиск файла при создании объекта в базе данных

В соответствующей строке для поля например, «Фото товара» появится слово «Пакет» (Package) , это означает, что файл привязан к приложению, с помощью которого он был создан. Поэтому, при просмотре базы данных, будет ли это запрос, форма или отчет, пользователь увидит изображение файла в виде значка , а при двойном щелчке по этому изображению система сначала найдет приложение, а затем в нем отобразит содержимое файла (в данном примере это фотография). Исключением являются файлы с изображениями, сохраненные с расширением .bmp (bit map format). Вместе с тем, следует напомнить, что файлы, созданные в приложениях Microsoft, будут отображаться сразу в формах и отчетах. Вывод простой, фотографии можно вставлять в такие приложения как Paint, Word, Power Point, сохранять в виде отдельных файлов, а затем подключать в виде объекта к базе данных. Попробуйте создать несколько файлов с фотографиями и текстом, используя различные редакторы Windows. Например, можно открыть документ Word, вставить из файла фотографию, добавить текст, а затем сохранить как: Монитор.docx (рис. 3.42).

Рис. 3.42 Файл с фотографией, созданный в Word

2. Создание новых объектов.

Под созданием новых объектов в базе данных следует подразумевать использование приложения, в котором создается файл, а затем подключается в поле с описанием типа данного OLE. Для запуска режима создания новых объектов, необходимо открыть таблицу в режиме «Таблица» , выбрать вариант «Создать новый» в диалоговом окне (рис. 3.39), а затем в списке выделить «Тип объекта» (необходимое приложение). Перечень приложений, которые поддерживает Access для создания объекта, находятся в списке (рис. 3.43), который раскроется после запуска команды «Вставить объект» .

Рис. 3.43 Перечень типов объектов Access, которые можно использовать для создания файлов

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

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

Например, необходимо создать объект с изображением предприятия и текстом, который в дальнейшем пользователь базы данных сможет заменить или исправить. Для этого необходимо выбрать из списка объект Bitmap Image , дальнейшая технология создания объекта показана на рисунке 3.44.

1. Откройте приложение Paint

2. Вставьте фото из файла.

3. Добавьте текст (если это необходимо).

4. Сохраните, как файл.

5. Закройте приложение.

Рис. 3.44 Технология создания объекта в приложении Paint

Задание3.11

1. В таблице «Товары » в режиме «Конструктор» добавьте новый столбец с именем «Фото товара» , тип данных «Поле объекта OLE» , сохраните изменения.

2. В режиме «Таблица» в поле «Фото товара» выберете строку «Вставить объект из файла» , выберите (поставьте точку) «Создать новый» и из раскрывающегося списка укажите документ Microsoft Word . При этом откроется текстовый редактор MS Word , здесь необходимо вставить рисунок, соответствующий товару в данной строке. Рисунки выберите из списка, который хранится непосредственно в редакторе (вкладка «Вставка», значок «Картинка», в диалоговом окне справа кнопка «Начать»), или вставьте рисунок из других программ. Можете использовать приложение Paint (объект Bitmap Image), где нарисуйте товар самостоятельно. Созданный файл закройте, он автоматически будет привязан к вашей базе, к строке, в которую ее вставили.

3. Проделайте данную процедуру для всех строк вашей таблицы «Товары» .

4. Сохраните изменения.

Контрольные вопросы

1. Какие объекты можно вставить в базу данных с типом данных OLE?

2. Как можно вставить фото в таблицу в режиме «Таблица»?

3. Где в базе данных будет отображаться фотография?

4. Чем отличается способ «Создать новый объект» от способа «Создать из файла»?

5. Как поместить файл фотографии товара в базу данных, если он имеет расширение .png ?

6. Можно ли осуществлять правку файла, который вставлен как объект в базу данных непосредственно в файловой системе компьютера?

7. Как вставить презентацию в базу данных?

8. Объекты каких приложений можно вставить в базу данных?

Технология 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).

    OLE Automation технология компании Microsoft, позволяющая обращаться к COM объектам из интерпретаторов скриптовых языков, таких, как VBScript (на настоящий момент поддержка обращений к OA объектам есть в Windows версиях всех популярных… … Википедия

    команда OLE - Выводятся на экран при установке курсора на OLE объект и нажатии правой кнопки мыши. Тематики информационные технологии в целом EN verb …

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

    Объект в архитектуре Microsoft COM. Описание Моникер является неизменяемым объектом, инициализируемым строкой, и имеющим операцию «создать экземпляр объекта из сохраненных данных, которые находятся в месте, указанном данной строкой». Иными… … Википедия

    В данной статье или разделе имеется список источников или внешних ссылок, но источники отдельных утверждений остаются неясными из за отсутствия сносок … Википедия

    Класс языка: объектно ориентированное программирование Появился в: 1992 Автор(ы): Кристен Нюгорд, Ole Lehrmann Madsen, Birger Møller Pedersen и Bent Bruun Kristensen Типизация данных: строгая, статическая Основны … Википедия

    У этого термина существуют и другие значения, см. библиотека (значения). TLB (англ. Type Library библиотека типов) иерархическое хранилище информации о возможностях ActiveX сервера в OLE Automation. Библиотека типов одно из … Википедия

    - (обычно просто VBScript) скриптовый язык программирования, интерпретируемый компонентом Windows Script Host. Он широко используется при создании скриптов в операционных системах семейства Microsoft Windows. VBScript был создан компанией Microsoft … Википедия

    У этого термина существуют и другие значения, см. .NET. .NET Remoting компонент, созданный компанией Microsoft. API для межпроцессного взаимодействия. Реализация от Microsoft протокола SOAP (веб сервисы). Выпущен в 2002 году вместе с… … Википедия

    связывание и внедрение объектов - Технология фирмы Microsoft. Позволяет сочетать различные прикладные программы компоненты в среде Windows. Связывание и внедрение являются двумя способами включения программируемых объектов в составной документ. При связывании исходные данные… … Справочник технического переводчика

    Windows PowerShell … Википедия

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. Провести полное тестирование приложения на различных объектах и серверах.

Чтобы включить содержимое из других программ, например Word или Excel можно использовать объект связывание и внедрение (OLE).

Интерфейс OLE поддерживается множеством различных программ и используется для помещения содержимого, созданного в одной программе, в другую программу. Например, можно вставить документ Office Word в книгу Office Excel. Чтобы посмотреть, содержимое какого типа можно вставить, на вкладке Вставка в группе Текст выберите элемент Объект . В поле Тип объекта отображаются только объекты программ, установленных на данном компьютере и поддерживающих интерфейс OLE.

Общие сведения о связанные и внедренные объекты

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

Связанные и внедренные объекты в документе

1. У внедренного объекта нет связи с исходным файлом.

2. Связанный объект связан с исходных файлом.

3. При обновлении исходного файла обновляется связанный объект.

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

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

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

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

Когда следует использовать внедренные объекты

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

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

Изменение способа отображения объекта OLE

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

Внедрение объекта на лист

Вставка ссылки на файл

Примечание:

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


Внедрение объекта на лист

Вставка ссылки на файл

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

Примечание: Если связанный файл переместить, ссылка не будет работать.

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

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


Связывание или внедрение содержимого из другой программы с помощью OLE

Можно связать или внедрить содержимое (целиком или частично) из другой программы.

Внедрение содержимого из другой программы

Связывание или внедрение Частичное содержимое из другой программы

Изменение способа отображения объекта OLE

    Объект тип объекта (например, Объект Документ ) и выберите команду Преобразовать .

    • Чтобы отобразить содержимое объекта, снимите флажок В виде значка .

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

Управление обновлением в связанных объектах

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

Установка обновления вручную связи с другой программой

Установка автоматического обновления связи с другой программой

Проблема: не удается обновить автоматические связи на листе

Параметр Автоматически в Excel переопределяется параметром Обновить ссылки на другие документы .

Чтобы обеспечить автоматическое обновление автоматических связей с объектами OLE, сделайте следующее:

Немедленное обновление связи с программой

Изменение содержимого из программы OLE

В приложении Excel можно изменить содержимое, связанное или внедренное из другой программы.

Редактирование связанного объекта в исходной программе

Редактирование внедренного объекта в исходной программе

    Дважды щелкните внедренный объект, чтобы его открыть.

    Внесите необходимые изменения.

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

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

Примечание: Если дважды щелкнуть некоторые внедренные объекты, такие как видео- и звуковые клипы, начнется их воспроизведение, а не открытие. Чтобы изменить такой внедренный объект, щелкните правой кнопкой мыши значок или объект, наведите указатель на элемент Объект тип объекта (например, Объект Клип мультимедиа ), а затем выберите команду Изменить .

Редактирование внедренного объекта в программе, отличной от источника

    Выделите внедренный объект, который необходимо изменить.

    Щелкните правой кнопкой мыши значок или объект, наведите указатель на элемент Объект тип объекта (например, Объект Документ ) и выберите команду Преобразовать .

    Выполните одно из следующих действий.

    • Чтобы преобразовать внедренный объект в тип, выбранный в списке, установите флажок преобразовать в .

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

Выделение объекта OLE с помощью клавиатуры

    Нажмите клавиши CTRL+G для отображения диалогового окна Переход .

    Нажмите кнопку Выделить , выберите вариант объекты и нажмите кнопку ОК .

    Несколько раз нажмите клавишу TAB, пока не будет выделен требуемый объект.

    Нажмите клавиши SHIFT+F10.

    Наведите указатель на элемент Объект или Объект Диаграмма и выберите команду Изменить .

Проблема: при двойном щелчке по связанному или внедренному объекту появляется сообщение "Нельзя изменить"

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

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

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

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

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

Убедитесь, что имя исходного файла не изменилось. Если исходный файл, который требуется изменить, является связанным объектом, убедитесь, что он имеет то же имя, что и при создании связи, а также что он не был перемещен. Чтобы узнать имя исходного файла, выделите связанный объект, а затем на вкладке Данные в группе Подключения выберите команду Изменить связи . Если исходный файл был переименован или перемещен, воспользуйтесь кнопкой Смена источника в диалоговом окне Изменение связей , чтобы найти исходный файл и восстановить связь.

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community , попросить помощи в сообществе Answers community , а также предложить новую функцию или улучшение на веб-сайте



Загрузка...