property Active: Boolean;
property InPlaceActive: Boolean;
Различие между ними в том, что второе (по возможности) осуществляет активизацию "по месту".
Запуск и работа сервера OLE может быть длительным процессом. На время, пока объект загружается в сервер, в контейнере устанавливается флаг:
property InActivation: Boolean;
После того, как сервер OLE полностью активизировался, происходит событие
property OnActivate: TNotifyEvent;
и устанавливается в True свойство:
property Modified: Boolean ;
Если при этом вы снова переключитесь на приложение Delphi, то увидите, что на время работы сервера клиентская область контейнера заштриховывается.
Свойство
property Zoom: TZoomFactor;
TZoomFactor = (г025,z050,zlOO,zl50,z200) ;
показывает, с каким масштабом отображаются объекты OLE внутри контейнера (при этом размеры самого контейнера остаются неизменными; если при увеличении часть изображения объекта выходит за границы контейнера, она отсекается).
Взаимодействие сервера OLE со строкой состояния осуществляется посредством обработки событий:
property OnStatusLineEvent: TStatusLineEvent;
TStatusLineEvent = procedure(Sender: TObject; Msg: String) of object;
Контейнер получает от сервера извещение о наступлении такого события. Он должен обработать это сообщение, например, отобразив где-либо строку Msg.
Инициировать это событие можно также при помощи процедуры:
procedure DoStatusLineMsg (Msg :String);
Контейнер может выгружать/загружать содержимое в поток и буфер обмена:
procedure LoadFromFile(const FileName: strings-procedure LoadFromStream(Stream: TStream);
procedure SaveToFile(const FileName: strings-procedure SaveToSCream(Stream: TStream);
procedure CopyToCUpboard (Clear : Boolean);
Параметр Clear в последней процедуре означает необходимость очистки предыдущего содержимого.
TOLEContainer является оконным элементом управления и поддерживает все соответствующие возможности: обработку сообщений от мыши и клавиатуры, фокус ввода, интерфейс Drag&Drop и т. п.
Наконец, в TOLEContainer есть "выходы" на элементы внутреннего устройства интерфейса OLE. Использование этих возможностей не документировано, и более подробное их обсуждение имеет смысл отложить до выхода следующей версии продукта. Здесь мы их только перечислим:
Code: |
function GetContainer: TIBCont; property Storage: IStorage; property Site: TIBSite; property Part: IBPart; property PartRect: TRect; procedure DeleteSite; procedure DeleteStorage; |
Меню OLE
У каждой формы есть свойство ObjectMenuItem. Оно ссылается на пункт меню, который специально выделяется для того, чтобы сервер OLE мог модифицировать его, разместив на этом месте свое подменю. Каждый сервер может производить над данными те или иные операции; их перечень отражаются в подменю. Оно может быть проанализировано с помощью методов, имеющихся у контейнера:
function GetObjectMenultemCount: Integer;
function GetObjectMenuItem(Index: Integer): string;
Первая функция возвращает число пунктов в подменю, а вторая — имя заданного пункта. Например, при вставке документа русской версии Microsoft Word первыми двумя будут "Редактировать" и "Открыть". Последними двумя пунктами в добавляемом меню всегда являются разделитель и пункт "Convert...", служащий для преобразования типа объекта OLE. Вы можете определить контекст помощи, предназначенный для этого диалога:
property ConvertDlgHelp: THelpContext;
Вызвав функцию GetObjectMenuItem с параметром -1, можно получить имя самого подменю, например, "Paintbrush Picture Object" или "Документ Word".
Действия сервера, связанные с нужным пунктом меню, можно инициировать из программы путем вызова метода:
procedure ObjectMenuAction(Index: Integer);
Подменю становится доступным при получении фокуса компонентом TOLEContainer и блокируется при его утере. Также устанавливает состояние меню метод:
procedure ActivateObjMenuItem(Activate: Boolean);
- << Назад
- Вперёд
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!