2.1 Создание OLE-объектов
Компонент TOleContainer позволяет поместить OLE-объект на
поверхности формы. Основные свойства этого компонента: AutoActivate -
определяет, каким образом активизируется OLE-объект, OleClassName - имя
класса OLE-объекта, содержащегося в контейнере. Основные методы:
InsertObjectDialog - выводит стандартную диалоговую панель Object для
выбора типа объекта или загрузки его из файла, CreateObject - создает
OLE-объект, DestroyObject - уничтожает объект.
Создадим простейший пример использования OleContainer. С
этой целью поместим на форму компонент TPanel со свойством Align, равным
alClient, на него - компонент TOleContainer, кнопку и главное меню (можно
создать в нем один пункт). Панель и меню нужны для отображения
инструментальных панелей и меню OLE-серверов, обслуживающих отображаемые в
TOleContainer объекты.
Рис.7. Форма с TOleContainer
Создадим обработчик события, связанный с нажатием на кнопку: void __fastcall TForm1::Button1Click(TObject *Sender)
{
OleContainer1->InsertObjectDialog();
}
Запустив приложение и нажав на кнопку, получим диалог для
вставки объекта:
Рис.8. Диалог вставки объекта
В списке перечислены все OLE-серверы, зарегистрированные
на данном компьютере.
Можно выбрать один из них (например, документ Word).
Теперь после двойного щелчка на объекте TOleContainer получим на
компоненте TPanel инструментальную панель MS Word, главное меню и сам
документ.
Рис.9. Активный объект в OleContainer
Если тип объекта, включаемого в TOleContainer, известен
заранее, можно использовать метод CreateObject: void __fastcall TForm1::Button1Click(TObject *Sender)
{
OleContainer1->CreateObject("Word.Document",True);
}
Второй параметр этого метода указывает, отображать ли
объект внутри OleContainer в виде пиктограммы.
Модифицируем приложение, добавив еще две кнопки с
надписями "Свойства" и "Вставка", и создадим соответствующие обработчики
событий: void __fastcall TForm1::Button2Click(TObject *Sender)
{
OleContainer1->ObjectPropertiesDialog();
}
//--------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
OleContainer1->PasteSpecialDialog();
}
Скомпилируем приложение. Добавим какой-нибудь объект в
OLEContainer.
Нажав на кнопку "Свойства", получим стандартный диалог с
описанием свойств объекта.
Рис.10. Диалог с описанием свойств объекта
Нажав кнопку "Вставить", получим диалог вставки объекта:
Рис.11. Диалог специальной вставки
Выбрав тип вставки объекта, можем вставить его в OLEContainer:
|