Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VC_Lect.doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
15 Мб
Скачать
☆

40.Внедрение и связывание объектов

40.1.Понятие внедрения и связывания объектов

Начать обсуждение этого понятия можно с такого простого примера.

Наберем некоторый текст в приложении WordPad, выделим его и выполним команду «Вставить» из меню «Правка» (или подадим клавишную команду Ctrl+C). Теперь запустим приложение Microsoft Word, создадим новый документ или откроем существующий и выполним команду «Вставить» из меню «Правка» этого приложения (или клавишную команду Ctrl+V). Само собой, в нашем Word-документе появится текст, набранный в приложении WordPad, который в дальнейшем мы будем редактировать с помощью редактора Word. При чем здесь технология OLE? Совершенно верно – ни при чем.

Теперь выполним, в приложении Word, тему «Специальная вставка» того же меню «Правка». Появится диалоговое окно, приведенное на рис. 1.

Рис. 1. Окно команды «Правка | Специальная вставка» приложения Word

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

Выбор способов вставки «Текст в формате RTF», «Неформатированный текст» или «Текст в кодировке Юникод» приведет практически к тому же результату, что и выполнение обычной команды вставить. Если же выбрать способ «Документ WordPad (объект)», то текст станет внедренными данными (embedded items), что обеспечивает технология OLE.

Что же из этого следует? Во-первых, при попытке выделения вставленного текста появляется обрамляющая текст рамка. Во-вторых, с помощью редактора Word такой текст отредактировать не удастся, так как он представляет собой внедренный объект, редактирование которого должно осуществлять то приложение, которое его создало, т.е. WordPad.

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

Выбор команды «Объект Документ WordPad | Изменить» приведет к активации приложения WordPad «на месте» (in-place activation). При этом все темы меню редактора Word, кроме меню «Файл», будут удалены и на их месте появятся все темы меню приложения WordPad, опять-таки кроме меню «Файл». Кроме того, будут удалены панели инструментов редактора Word, но можно, с помощью меню «Вид», сделать видимыми панели инструментов WordPad и воспользоваться ими для редактирования текста. По нажатию клавиши Escape приложение WordPad закроется и приложение Word вновь приобретет привычный вид. Того же результата – возврата к приложению Word – можно достичь и простым щелчком мыши вне окна редактирования WordPad.

Выбор команды «Объект Документ WordPad | Открыть» приведет к запуску WordPad как самостоятельного приложения, в окне которого появится внедренный текст. Единственное отличие в такой активации WordPad от его запуска как отдельного (stand-alone) приложения проявится в изменении тем меню файл: вместо обычных тем WordPad появятся «Обновить Документ», «Сохранить копию как…» и «Выход и возврат к Документ». (Здесь «Документ» – это имя файла.) Выполнение команды «Обновить Документ» приведет к немедленному обновлению открытого документа в Word. Выбор последней темы меню «Выход и возврат к Документ» приведет к завершению приложения WordPad.

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

Проведем еще один эксперимент. Также запустим WordPad как самостоятельное приложение, наберем какой-нибудь текст и сохраним его в файле, допустим, с именем Temp.rtf. Теперь запустим Word, создадим новый документ и выполним тему меню «Вставка | Объект». В результате появится окно, приведенное на рис. 2.

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

Рис. 2. Окно команды «Вставка | Объект» приложения Word

Выберем в окне вкладку «Создание из файла», установим флажок «Связь с файлом» (рис. 3) и с помощью кнопки «Обзор» выберем и загрузим файл Temp.rtf. Содержимое файла будет вставлено в документ Word и выделено рамкой.

В контекстном меню «Связанный объект Документ» для вставленного компонента имеются команды «Изменить связь» и «Открыть связь».

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

Замечание. Так как формат .rtf-файла непосредственно поддерживается сервером Word, то здесь возникает своего рода коллизия или дилемма: какое приложение надо считать «родительским» для данного документа?

Рис. 3. Вкладка «Создание из файла» окна команды «Вставка | Объект» приложения Word

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

Пример со вставкой файла в формате .rtf в документ Word не является наглядным по той причине, что rtf-файлы непосредственно обрабатываются редактором Word. Если же Вы выполните вставку в документ объекта, созданного, например, приложением Excel, то обнаружите, что этот связанный объект редактируется только приложением Excel в его отдельном окне и при его изменении автоматически обновляется и документ Word.

Команды контекстного меню зависят от типа связанного объекта. Например, при вставке звукового файла появятся команды «Объект пакетАктивировать содержимое» или «Объект пакетИзменить пакет».

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

Любые данные, внедрены ли они или связаны, имеют тип, ассоциированный с породившим их приложением. Это приложение, тем не менее, может создавать более чем один тип данных. К примеру, приложение Excel может создавать листы, диаграммы и макролисты (macrosheet). Каждый из этих видов данных однозначно идентифицируется CLSID (идентификатором класса).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]