Компонент TOLEContainer
TObject->TPersistent-"TComponent->TControl—>TWinControl—>
•>TCustomControl-"TOLEContainer
Модуль TOCTRL
Страница Палитры компонентов System
Загрузить объект OLE в контейнер можно тремя путями:
• созданием нового объекта или связыванием с уже существующим через вызов диалога InsertOLEObjectDIg;
• "перетаскиванием" объекта из сервера OLE в форму, содержащую контейнер, с помощью Drag&Drop;
• помещением объекта из буфера обмена (посредством вызова диалога PasteSpecialDIg).
Общим является то, что во всех трех способах формируется поначалу определенная структура данных (типа BOLEInitInfo). Она является "визитной кар
точкой" сервера OLE и его данных. Как только значение указателя на нее присваивается свойству контейнера property PInitInfo: Pointer;
происходит процесс внедрения или связывания объекта. При этом может произойти активизация сервера. Несколько примеров использования этого свойства рассмотрено ниже.
Сразу после присвоения значения свойству контейнера PInitInfo потребность в созданной структуре отпадает. Ее можно уничтожить при помощи процедуры:
procedure ReleaseOLEInitInfо(PInitInfo: Pointer);
Контейнер, однако, продолжает хранить содержащуюся в этой структуре информацию. Для доступа к ней нужно воспользоваться свойством:
property Initlnfo: BOLEInitInfo;
Тип BOLEInitInfo не документирован Borland и его описание здесь не приводится.
Ниже будут подробнее рассмотрены все три варианта загрузки объекта OLE в контейнер.
Создание нового объекта
Этот способ применяется, когда вы хотите добавить к приложению данные из уже существующего файла, снабдив их возможностями одного из серверов OLE, который "умеет" с этими данными работать. Данные можно внедрить или связать. Можно также внедрить новый (пустой) объект, в этом случае сразу будет вызван сервер. В основе этого способа лежит вызов функции:
function InsertOLEObjectDIg(Form: TForm; HelpContext: THelpContext;
var PInitInfo: Pointer): Boolean;
Она инициализирует диалог, позволяющий создать новый объект OLE. В случае успешного окончания диалога создается структура типа BOLEInitInfo. Пример этого достаточно прост:
Code: |
procedure TFormI-BitBtnIClick(Sender: Tobject); var Thelnfo : Pointer; begin if InsertOLEObjectDIg(Self, 0, Thelnfo) then begin OLEContainerI.PInitInfo := Thelnfo; ReleaseOLEInitInfо(Thelnfo) ; end; end; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!