|
||||||||
|
Использование OLE. Свойства контейнера
Проверить наличие объекта OLE в контейнере позволяет метод:
Свойство
означает, что контейнер автоматически принимает размер помещенного в него объекта OLE. Играет роль оно только в момент внедрения (связывания). После того, как в контейнер загружен объект OLE, его можно идентифицировать при помощи свойств:
Свойство ObjClass представляет собой имя (класс) объектов, поддерживаемых данным сервером OLE, например "Документ Microsoft Word 6.0", "Visio 3.0 Drawing" или "Paintbrush Picture". Свойства ObjDoc и ObjItem применяются только для связанных объектов. Первое свойство представляет собой имя документа (зачастую имя файла), а второе ? имя его части (если контейнер связан только с частью документа, например, с фрагментом изображения). Вы можете увидеть значения ObjDoc и ObjItem в диалоге LinksDlg: они разделяются восклицательным знаком и в паре составляют имя связи. Нужно отметить, что правило присвоения этих трех имен ? прерогатива сервера, и подробности этого нужно искать в соответствующей документации. Редактирование внедренных объектов возможно как в отдельном окне, создаваемом сервером, так и прямо в содержащем его документе ("по месту"). Последняя возможность предусмотрена спецификацией OLE 2.0; при этом могут заменяться главное меню и строка состояния формы. Контейнер OLE в VCL поддерживает работу с серверами обеих спецификаций. Если же по каким-либо причинам активизация сервера "по месту" нежелательна, то установка в False свойства
позволяет ее запретить. Поскольку загрузка сервера "по месту" подразумевает изменение главного меню, то оно должно быть у приложения, содержащего форму с контейнером. Загруженный объект OLE можно активизировать (то есть вызвать его сервер) тремя способами:
Типичным способом (принятым по умолчанию) является двойной щелчок (aaDoubleClick). При установленном aaGetFocus активизация происходит при получении объектом фокуса ввода. Наконец, aaManual обязывает активизировать объект OLE установкой в True одного из свойств:
Различие между ними в том, что второе (по возможности) осуществляет активизацию "по месту". Запуск и работа сервера OLE может быть длительным процессом. На время, пока объект загружается в сервер, в контейнере устанавливается флаг:
После того, как сервер OLE полностью активизировался, происходит событие
и устанавливается в True свойство:
Если при этом вы снова переключитесь на приложение Delphi, то увидите, что на время работы сервера клиентская область контейнера заштриховывается. Свойство
показывает, с каким масштабом отображаются объекты OLE внутри контейнера (при этом размеры самого контейнера остаются неизменными; если при увеличении часть изображения объекта выходит за границы контейнера, она отсекается). Взаимодействие сервера OLE со строкой состояния осуществляется посредством обработки событий:
Контейнер получает от сервера извещение о наступлении такого события. Он должен обработать это сообщение, например, отобразив где-либо строку Msg. Инициировать это событие можно также при помощи процедуры:
Контейнер может выгружать/загружать содержимое в поток и буфер обмена:
Параметр Clear в последней процедуре означает необходимость очистки предыдущего содержимого. TOLEContainer является оконным элементом управления и поддерживает все соответствующие возможности: обработку сообщений от мыши и клавиатуры, фокус ввода, интерфейс Drag&Drop и т. п. Наконец, в TOLEContainer есть "выходы" на элементы внутреннего устройства интерфейса OLE. Использование этих возможностей не документировано, и более подробное их обсуждение имеет смысл отложить до выхода следующей версии продукта. Здесь мы их только перечислим:
Для комментария : kadan@grsu.grodno.by | |||||||||||
За содержание страницы отвечает Гончарова М.Н. © Кафедра СПиКБ, 2002-2017 |