12.3. Организация обмена данными
ЧТО ТАКОЕ ОБМЕН ДАННЫМИ
Обмен данными в широком смысле — это передача информации от одного объекта другому. В компьютерном мире до недавнего времени под обменом данными часто понимали процесс ввода и вывода данных между оперативной памятью и периферийными устройствами. С появлением концепции Windows под обменом данными стали понимать передачу данных от одного объекта к другому. В результате этого процесса объекты могут изменяться, а также могут создаваться новые объекты, образующиеся из одного или нескольких существующих объектов.
Такими объектами могут быть приложения, папки, документы, а передаваемыми данными — фрагменты документов, документы, файлы, папки, т.е. также объекты среды Windows. Так, в результате копирования файла или папки появляются их копии, а вследствие обмена данными между приложениями создаются составные документы, собранные из фрагментов, сформированных в разных приложениях.
Обмен данными в среде Windows осуществляется либо через буфер обмена, либо без него перетаскиванием выделенного объекта мышью. Обмен данными через буфер выполняется с помощью стандартных команд Вырезать (Cut), Копировать (Сору) и Вставить (Paste). Команда Специальная вставка (Paste Special) позволяет выбрать формат, в котором передаются данные. Большинство приложений Windows содержат перечисленные команды в структуре своих меню, а также включают их в контекстные меню.
Помимо перечисленных команд в приложении могут быть задействованы специальные команды, которые дают возможность использовать данные из ранее созданных и хранящихся в файлах объектов.
ПОНЯТИЕ СОСТАВНОГО ДОКУМЕНТА
При создании документа часто возникает необходимость вставить в него фрагмент из документов, созданных в других программных средах. Такой фрагмент по отношению к документу, в который он вставляется, может иметь иной тип данных. Например, в текст, созданный в текстовом редакторе WordPad, включается растровый рисунок из графического редактора Paint, а также таблица из табличного процессора Excel. В результате появляется документ, включающий данные разного типа, созданные в разных приложениях.
Такая же ситуация может возникнуть и при использовании одного приложения. Например, текст и векторные рисунки можно сделать в среде текстового процессора Word, объединив их затем в одном документе. Налицо фрагменты разного типа данных — текст и рисунки, и хотя они созданы в одном приложении, для их создания использовались разные инструменты. Поэтому их объединение легче строить, считая, что они созданы в разных средах.
Операционная система Windows поддерживает такие механизмы обмена данными, с помощью которых любое приложение может включать в свои документы практически
любые данные, даже если с этими данными оно и не может работать. Эту универсальность обеспечивает технология OLE, о которой подробнее речь пойдет далее. Документ, содержащий разнотипные данные, ничем не отличается от обычных документов. Его можно печатать, хранить и производить с ним любые другие действия. Подобный документ получил название составного или интегрированного документа.
Составной (интегрированный) документ — документ, в котором объединены данные разного типа, созданные в разных приложениях.
В большинстве случаев в составном документе можно выделить главную часть, которая создавалась в одном приложении и куда вставлялись объекты из других приложений. Составной документ вызывается из приложения, где создавалась его главная часть. Видимо, настолько прочно вошла в практическую деятельность пользователя работа с составным документом, что все чаще стали заменять понятие составного документа просто документом. Следует заметить, что возможно создание составного документа, у которого нет главной части и который весь состоит из объектов, созданных в других приложениях. Например, документ Word может состоять из единственного рисунка, созданного в графическом редакторе Paint.
Часто при создании составного документа используют такую терминологию:
источник или сервер — приложение, откуда производится вставка фрагмента в составной документ;
приемник или клиент (адресат) — приложение, где находится главная часть составного документа и куда вставляются объекты из других приложений (источников).
Замечание. Учитывая, что понятия "сервер" и "клиент" также широко используются в контексте сетей, в дальнейшем для приложения будем использовать понятия "источник" и "приемник".
Рис. 12.13. Формирование составного документа
Понятие составного документа иллюстрируется рис. 12.13, где в качестве источника (сервера) служат два приложения (например, Paint, в котором создан рисунок, и Excel, в котором подготовлена таблица), а в качестве приемника (клиента) используется одно приложение (например, им может быть текстовый процессор Word).
ОБМЕН ДАННЫМИ ПЕРЕТАСКИВАНИЕМ ОБЪЕКТА МЫШЬЮ
Во многих приложениях обмен данными может быть выполнен путем перетаскивания с помощью мыши. Так можно реализовать и операцию копирования, и операцию перемещения. Операцию перетаскивания мышью рекомендуется использовать, когда источник на экране монитора находится недалеко от приемника. Дня этого окна приложений целесообразно расположить рядом.
Перемещение объекта с помощью мыши осуществляется следующим образом:
выбирается перемещаемый объект, для чего на этом объекте нужно установить указатель мыши. Можно выбрать группу объектов (например, фрагмент текста), протащив мышь при нажатой левой кнопке;
при нажатой левой кнопке мыши выделенный объект перетаскивается до места назначения.
Копирование осуществляется аналогично перемещению при одновременно нажатой клавише <Ctrl>. При этом перемещаемый объект будет обозначен дополнительно знаком "плюс".
Замечание. В среде Windows нажатие управляющей клавиши учитывается, как правило, в момент отпускания кнопки мыши. Поэтому можно сначала перетащить объект, затем, не отпуская кнопки мыши, оценить ситуацию и при необходимости нажать <Cui>, <Shift> или какую-либо другую комбинацию управляющих клавиш.
ОБМЕН ДАННЫМИ ЧЕРЕЗ БУФЕР
Роль буфера обмена
Буфер обмена (clipboard) играет важнейшую роль при организации обмена данными. Это часть виртуальной памяти, которая служит неким перевалочным пунктом при обмене данными. При небольших объемах передаваемых данных для буфера обмена выделяется часть оперативной памяти.
Для наглядности можно провести некоторую аналогию между буфером обмена и ячейкой склада, куда отправляется на временное хранение некий объект. В этой ячейке можно хранить лишь один объект. Чтобы поместить в ячейку новый объект, необходимо убрать из нее старый объект, ранее помещенный туда. В буфере обмена объект хранится до тех пор, пока в него не будет помещен новый объект, который автоматически сотрет прежний. Находящийся в буфере обмена объект можно копировать неограниченное количество раз.
Основные приемы работы с буфером обмена поддерживаются большинством программных продуктов. Его широко используют:
при создании и редактировании простого документа, когда с помощью буфера обмена осуществляются копирование, перемещение и удаление его фрагментов;
при создании и редактировании составного документа, когда необходимо использовать объекты из разных приложений;
при перемещении или копировании объектов файловой системы (файлов и папок);
для сохранения в файле выделенного фрагмента документа.
Буфер обмена — специальная область памяти, которая предназначена для временного хранения переносимого, копируемого или удаляемого объекта.
Буфер обмена обслуживается операционной системой и характеризуется следующими свойствами:
в буфере обмена хранится объект, помещенный в него одним из известных пользователю способов;
в буфере обмена объект хранится до тех пор, пока не будет помещен в него новый объект;
буфер обмена доступен из любого приложения;
содержимое буфера обмена можно просмотреть или сохранить в файле с помощью приложения. Просмотр буфера обмена;
буфер обмена очищается при перезагрузке операционной системы либо специальной командой;
объект в буфере обмена хранится в формате, определяемом приложением-источником, но при его вставке в составной документ, как правило, предоставляется возможность преобразования в другой формат.
При обмене данными между приложениями через буфер обмена можно установить связь между источником и приемником. Эта связь позволяет редактировать объект непосредственно в составном документе средствами приложения-приемника (связь между составным документом и приложением-источником) либо обновлять объект, если он был записан в файл и впоследствии изменен приложением-источником (связь между составным документом и файлом). Такая связь в одних случаях необходима, а в других нет. Так, при копировании или перемещении объектов файловой системы между папкой-источником и папкой-приемником не устанавливается никакой связи. Но при удалении файла он фактически перемещается в специальную папку Корзина, причем устанавливается связь Корзины с папкой, в которой этот файл находился. Эта связь позволяет при необходимости вернуть файл на прежнее место.
Для вставки объекта из буфера обмена можно воспользоваться командой Вставить, вызвав ее любым способом, например из контекстного меню. После выполнения этой команды объект становится частью документа, создаваемого в приложении-приемнике. При этом объект вставляется в составной документ, как правило, как OLE-объект, сохраняющий связь с приложением-источником. Его можно редактировать непосредственно в составном документе, вызвав приложение-источник. Отметим, что по технологии OLE 2.0 вызывается не само приложение-источник, а лишь необходимые инструменты редактирования: при двойном щелчке на OLE-объекте пользователь остается в среде приложения-приемника, но меню и панели инструментов этого приложения меняются.
Пользователь может в определенных пределах изменять способ вставки объекта из буфера обмена. Для этого нужно использовать команду Специальная вставка, которая во многих приложениях располагается в меню Правка (Edit).
Технология обмена данными через буфер
Обмен данными через буфер выполняется в следующей последовательности (рис. 12.14):
выделяется объект, подлежащий копированию или перемещению;
выделенный объект переносится в буфер обмена с помощью команды. Копировать или Вырезать (например, через контекстное меню);
указатель мыши устанавливается в место вставки объекта;
объект вставляется в указанное место командой Вставить или командой Специальная вставка (через контекстное меню или меню Правка).
Рис. 12.14. Схематичное представление обмена данными через буфер
ТЕХНОЛОГИЯ ВНЕДРЕНИЯ И СВЯЗЫВАНИЯ ОБЪЕКТОВ OLE
Представление о технологии OLE
Появление технологии OLE обусловлено необходимостью формирования документов из данных разного типа. Основное достоинство технологии OLE, которая была разработана фирмой Microsoft, состоит в том, что она не имеет ограничений и позволяет организовать передачу данных практически между любыми приложениями. Технология OLE определяется правилами (протоколом) взаимодействия Windows-приложений. Базовый вариант технологии OLE был впоследствии расширен до версии OLE 2.0, которая в настоящее время является наиболее употребительной.
Примечание. Аббревиатура OLE означает Object Linking and Embedding, что переводится как связывание и внедрение объекта.
Технологию OLE полностью поддерживают не все Windows-приложения, а только те, которые предназначены для разработки составных документов. Одни приложения можно использовать только в качестве приемника, другие — только в качестве источника, но есть приложения, которые могут выступать и в той, и в другой роли.
Например, текстовый редактор WordPad полностью обеспечивает работу по технологии OLE, так как он предназначен для создания текстовых документов, в которых могут быть рисунки, звуки, таблицы, видеоклипы и др. Графический редактор Paint предназначен для подготовки несложных рисунков, он не может работать по технологии OLE только как приложение-источник. Текстовый процессор Word представляет собой сложный комплекс и фактически включает в себя несколько приложений: редактор рисунков, редактор формул, текстовый редактор и др. Эти приложения по-разному используют технологию OLE. Редактор формул действует только как приложение-источник (OLE-сервер), а текстовый редактор может выступать как в роли источника, так и в роли приемника (OLE-клиента). Просмотреть список действующих в системе OLE-серверов можно, выполнив команду Вставить объект (в среде Word эта команда включена в меню Вставка).
Технология OLE обеспечивает пользователю возможность редактировать вставленный в составной документ объект средствами, которые предоставляет приложение-источник. OLE-объект всегда сохраняет связь с приложением-источником (эта связь активизируется двойным щелчком), но может и не быть связанным с документом-источником.
Технология OLE предусматривает два варианта обмена данными:
внедрение объекта, при котором в документ-приемник вставляется сам объект. Для отображения на экране или распечатки документа OLE-объект не использует средств приложения-источника. Например, при переносе составного документа на другой компьютер OLE-объект будет отображаться нормально, даже если на этом компьютере нет соответствующего приложения-источника Однако OLE-объект сохраняет связь с приложением-источником, которая позволяет обеспечить редактирование OLE-объекта внутри составного документа;
связывание объекта, при котором в документ-приемник помещается не сам объект, а лишь ссылка на документ-источник. В этом случае OLE-объект будет связан не с приложением-источником, а с документом-источником, в котором находится этот объект. Эта связь позволяет изменить представление объекта в документе-приемнике, как только этот объект будет изменен в документе-источнике.
Внедрение объекта
При внедрении объекта в документ-приемник вставляется сам объект. Если этот объект получен копированием данных из некоторого документа-источника, то данные сохраняются на прежнем месте, а в документ-приемник вставляется их копия, причем связь между объектом и его копией не устанавливается. При этом наряду с командой Вставить можно использовать команду Специальная вставка.
Внедрить объект в документ можно несколькими способами:
из открытого документа (с помощью команд Вставить и Специальная вставка);
из файла (специальной командой вставки файла или импорта файла);
непосредственным вызовом OLE-сервера (командой Вставить объект). Внедрение объекта из открытого документа выполняется следующим образом:
в приложении-источнике вьщеляется объект, который будет внедряться;
выделенный объект копируется в буфер обмена с помощью команды Копировать или Вырезать;
осуществляется переход в приложение-приемник, где формируется составной документ, и указатель мыши устанавливается в место вставки объекта;
вставляется объект с помощью команды Вставить или Специальная вставка;
при использовании команды Специальная вставка на экране появляется диалоговое окно «Специальная вставка» (рис. 12.15), в котором необходимо выбрать способ вставки данных как объекта, отметить кнопку выбора <Вставить> и нажать кнопку <ОК>. Данные можно вставлять в составной документ также в виде значка, для чего в диалоговом окне «Специальная вставка» следует отметить соответствующий переключатель.
Технология внедрения содержимого файла, которая рассматривается на примере приложения Word, состоит в следующем:
в составном документе указывается место внедрения;
вводится команда Файл из управляющего меню Вставка;
в диалоговом окне «Вставка файла» (рис. 12.16) устанавливаются необходимые параметры и выбирается имя файла При этом не следует устанавливать переключатель <Связь с файлом>, чтобы содержимое файла оказалось внедренным;
нажать кнопку <ОК>.
Рис. 12.15. Окно «Специальная вставка» в текстовом процессоре Word
Рис. 12.16. Окно «Вставка файла» в текстовом процессоре Word
Для других приложений технология аналогична, отличие состоит в конкретных названиях команд.
В составной документ новый объект внедряется следующим образом:
в составном документе указывается место внедрения;
вводится команда Вставить объект (в среде Word — пункт Объект управляющего меню Вставка);
в диалоговом окне «Вставка объекта» (рис. 12.17) выбирается тип внедряемого объекта, т.е. приложение-источник. Флажок <Связь с файлом> устанавливать не следует, для того чтобы объект оказался внедренным;
нажимается кнопка <ОК>;
Рис. 12.17. Окно «Вставка объекта» в текстовом процессоре Word
Объект, внедренный по технологии OLE, можно редактировать средствами приложения-источника следующими способами:
выбрать соответствующую команду в управляющем или контекстном меню;
дважды щелкнуть левой кнопкой мыши на внедренном объекте.
Отметим, что если один и тот же объект внедряется в несколько документов, то в каждом документе будет храниться своя копия объекта. В этом случае хранение объекта и всех его копий требует дополнительного расхода внешней памяти. Кроме того, не сохраняется никакой связи между копиями объекта, изменение одной из копий никак не влияет на остальные копии объекта.
Связывание объекта
При просмотре или распечатке составного документа связанный объект ничем не отличается от внедренного. Различие проявляется лишь при редактировании объекта. Связанный объект всегда находится в документе-источнике, а в составном документе-приемнике хранится ссылка (указание местонахождения) на файл с этим документом (рис. 12.18).
Таким образом, при связывании объекта в документах-приемниках указываются ссылки на объект, а сам объект хранится в единственном экземпляре в документе-источнике. Любые изменения объекта, проводимые в документе-источнике, обязательно отражаются на представлении объекта в составных документах. При открытии составного документа необходимо позаботиться о том, чтобы присутствовали все файлы, в которых хранятся связанные с ним объекты, причем в точности в тех папках, в которых они находились при связывании.
Рис.12.18. Процедура связывания объектов по технологииOLE
Технологией связывания объекта целесообразно пользоваться в следующих случаях:
объект вставляется в несколько разных документов, и необходимо, чтобы любые изменения этого объекта отражались в этих документах;
объект занимает слишком много места и затрудняет работу с составным документом;
при недостатке внешней памяти.
Создание связанных объектов в составном документе возможно двумя способами:
из открытого документа. При этом в составной документ можно включить лишь некоторый фрагмент из документа-источника;
из файла. При этом документ-источник полностью включается в составной документ.
Обратите внимание! Для связывания объекта необходимо, чтобы объект был сохранен в файле как документ или его часть.
Связывание объекта из открытого документа выполняется следующим образом:
в приложении-источнике выделяется объект, который будет связываться;
выделенный объект переносится в буфер обмена с помощью команды Копировать;
осуществляется переход в приложение-приемник, в котором формируется составной документ, и указатель мыши устанавливается в место вставки объекта;
вводится команда Специальная вставка;
в диалоговом окне «Специальная вставка» отмечается кнопка выбора <Связать>, указывается способ вставки объекта (в обычном виде или в виде значка) и нажимается кнопка <ОК>.
Связывание с файлом (на примере текстового процессора Word) состоит в следующем:
в составном документе указывается место вставки;
вводится команда Файл из меню Вставка;
в диалоговом окне «Вставка файла» (см. рис. 12.16) устанавливаются флажок <Связь с файлом> и другие
необходимые параметры, затем выбирается документ, в котором хранится объект;
▪ нажимается кнопка <OK>.
Изменить связанный объект можно, отредактировав документ-источник, в котором он размещен. Это можно осуществить одним из двух способов. Первый способ — открыть документ-источник непосредственно в среде приложения-источника, второй способ — открыть документ-источник из составного документа, где находится связанный объект. Открытие можно осуществить либо с помощью контекстного меню, либо двойным щелчком кнопки мыши на этом объекте.
Поскольку связанные объекты хранятся отдельно от составного документа в своих документах-источниках, важно иметь сведения о связях составного документа. Просмотреть, обновить и изменить связи составного документа можно в диалоговом окне «Связи» («Links»), которое, например, в приложении Word вызывается командой Связи из меню Правка (рис. 12.19). Это диалоговое окно содержит информацию о связях данного объекта:
спецификацию (путь) файла;
тип или формат объекта;
режим обновления объекта в составном документе — автоматическое или ручное (по запросу).
При автоматическом обновлении связанный объект в составном документе изменяется сразу, как только он изменился в документе-источнике. При ручном обновлении необходимо явное указание со стороны пользователя.
Рис. 12.19. Диалоговое окно «Связи» в текстовом процессореWord