- •Разработка объекта автоматизации в среде delphi.
- •6.6 Методические указания.
- •6.6.1 Расширения com
- •6.6.2 Мастера для создания сом-объектов
- •6.6.3 Технология автоматизации
- •6.6.4. Интерфейс iDispatch
- •6.6.5. Интерфейсы диспетчеризации
- •6.6.6 Создание серверов автоматизации в Delphi
- •6.6.6.1 Создание внешнего сервера автоматизации.
- •6.6.6.2 Разработка клиента автоматизации
- •7.6.7 Использование ole-документов в приложениях
- •6.6.7.1 Основные сведения об ole-документах
- •6 .6.7.2 Компонент tOleContainer.
- •6.6.7.3 Применение компонента tOleContainer для работы с ole-документами.
- •6.6.7.3.1 Простейший пример использования компонента tOleContainer.
- •6.6.7.3.2 Основные способы использование компонента tOleContainer.
- •6.6.7.3.3 Управление объектом внутри ole-контейнера
6 .6.7.2 Компонент tOleContainer.
Для создания и использования OLE-документов в приложениях, разрабатываемых на Delphi, предназначен компонент ToleContainer, находящийся на странице System палитры компонентов. Он позволяет поместить OLE-документ на поверхности формы. Этот компонент инкапсулирует все интерфейсы, необходимые для создания клиентов OLE-документов. Он является удобным контейнером для размещения связанного или внедренного OLE-объекта. Такие объекты (фрагменты текста, картинки, таблицы и т. п.) на форме приложения Delphi выглядят как обычно или заменяются значками.
Свойства компонента ToleContainer приведены в Приложении 4, его методы описаны в Приложении 5, а события – в Приложении 6.
Наиболее часто используемыми свойствами этого компонента являются:
AutoActivate, определяющие, каким образом активизируется OLE-документ;
State - состояние OLE-контейнера;
OleClassName - имя класса (CLSID) OLE-объекта, содержащегося в контейнере.
Наиболее часто используются следующие методы этого компонента:
InsertObjectDialog — выводит стандартное диалоговое окно Object для выбора типа документа или загрузки его из файла (аналогичное диалоговому окну Вставка объекта, показанному на рис. 6. );
CreateObject - создает OLE-объект;
CreateObjectFromFile - создает OLE-объект на основе существующего файла, содержащего OLE-документ, и помещает его в OLE-контейнер;
DestroyObject - уничтожает объект, содержащийся в OLE-контейнере.
Все методы, с помощью которых производится создание или сохранение объектов в OLE-контейнере, строятся на основе системных диалоговых окон (аналогичных диалоговому окну Вставка объекта, показанному на рис. 6. ), а соответствующие методы просто экспортируют их из операционной системы. При визуальном проектировании приложения вы можете, вызвав всплывающее меню контейнера, выбрать команду Вставка | Объект (Insert | Object или Insert Object) и внедрить или связать объект, хранящийся в виде файла, с контейнером. Во время работы приложения те же действия можно выполнить с помощью методов CreateObjectFromFile или CreateLinkToFile. После этого всплывающее меню контейнера дополнится списком операций, которые допускается производить над данным объектом. Чтобы получить список для функционирующего приложения, надо обратиться к свойству ObjectVerbs.
Объект разрешается вставить из буфера обмена как во время визуального проектирования приложения (команда всплывающего меню Paste Special), так и во время его работы (методы Paste или PastSpecialDialog).
Вы можете создать “пустой” объект с помощью раздела всплывающего меню Insert Object (в этом случае в диалоговом окне надо просто указать класс объекта, например документ Microsoft Word, но не помещать в него информацию). Аналогичные действия нетрудно выполнить для функционирующего приложения, воспользовавшись методами InsertObjectDialog, CreateObjectFromlnfo или CreateObject.
Во время работы допускается активизировать встроенный объект с помощью метода DoVerb либо при выборе объекта (свойство AutoActivate имеет значение aaGetFocus), либо при двойном щелчке мышью (свойство AutoActivate равно aaDoubleClick).
После активизации объекта в клиентской части контейнера появится пользовательский интерфейс сервера (если свойство AllowInPlace равно True). В противном случае сервер будет загружен в отдельном окне. Заметим, что некоторые серверы не поддерживают местную активизацию и, поэтому, всегда будут загружаться отдельно.
Отредактированный объект можно сохранить в виде файла (метод SaveAsFile или SaveAsDocument), а также скопировать в буфер обмена (команда Сору). Чтобы ускорить загрузку сервера при активизации документа, заранее запустите его с помощью метода Run.
