Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6_TKP_ObAvt.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
341 Кб
Скачать
☆

6.6.7.3 Применение компонента tOleContainer для работы с ole-документами.

Как правило, для работы с OLE-документами на форму, кроме компонента TOleContainer, необходимо устанавливать компоненты TmainMenu и ТРапеl. Они нужны для отображения меню и панелей инструментов OLE-серверов, обслуживающих отображаемые в компоненте TOleContainer объекты. Если на форме, содержащей компонент TOleContainer, присутствует меню, то имеющееся у сервера меню будет присоединено к меню приложения согласно правилам слияния меню, принятым в Windows. Если компонент ТOleContainer помещен на компонент TPanel, то последний будет отображать панель инструментов сервера.

6.6.7.3.1 Простейший пример использования компонента tOleContainer.

С

procedure TForm1.FormCreate(Sender: TObject);

const

BMP_Name = 'C:\Program Files\Common Files\Borland Shared\Images\' + 'Splash\16Color\athena.bmp';

begin

OleContainer1.CreateObjectFromFile(BMP_Name, False);

end;

оздадим новое приложение с пустой формой и добавим на нее главное меню TMainMenu с единственной командой Файл (вставленной из шаблона). Установим на форму компонент TOleContainer. Установим его свойство Align равным значению alClient. Создадим обработчик события OnCreate для формы Form1, позволяющий загружать графический файл в графический редактор (если графический файл находится в другой папке или имеет другое имя – откорректируйте константу BMP_Name):

Запустите созданное приложение на выполнение и, дважды щелкните на изображении мышью. После паузы, вызванной загрузкой программы-сервера, вы увидите окно этой программы. Обычно это программа Paint, однако, если на вашем компьютере графические файлы ассоциированы с другим графическим редактором, способным выступать в роли OLE-сервера то может оказаться загруженной и другая программа.

Теперь вы можете использовать средства графического редактора Paint для редактирования изображения. Чтобы завершить редактирование, нажмите клавишу Esc - окно примет первоначальный вид, но изображение в нем сохранит все внесенные в него изменения. Таким образом, для полноценного доступа к сложной технологии OLE понадобился всего один-единственный вызов одного из его методов!

Компонент может создавать как связанные, так и внедренные объекты и запускать сервер как в отдельном окне, так и в окне содержащей его программы-клиента. В последнем случае при запуске сервера происходит автоматическая замена команд главного меню программы с групповыми индексами 1,3 и 5 (если они есть - вот почему в примере вставлено главное меню с незадействованной командой Файл) командами главного меню сервера, а также вставка в окно программы инструментальных панелей сервера. Если компонент открывается в окне клиента, его свойство Align (или такое же свойство панели, на которую он помещен) должно иметь значение alClient.

6.6.7.3.2 Основные способы использование компонента tOleContainer.

С

procedure TForm1.New1Click(Sender: TObject);

begin

OleContainer1.InsertObjectDialog;

end;

оздадим новое приложение и добавим на форму компонент ТРаnel со свойством Align, равным alClient, а на него - компонент TOleContainer и главное меню (создав в пункте File подпункты New object и Exit). Создадим обработчик события, связанный с выбором пункта меню New Object:

Запустив приложение и щелкнув на кнопке, получим диалоговое окно Insert Object. В списке, представленном в этом диалоговом окне, перечислены все серверы OLE-документов, зарегистрированные на данном компьютере. Можно выбрать один из них (например, Microsoft Excel Worksheet). Теперь после двойного щелчка на компоненте TOleContainer компонент TPanel будет содержать панель инструментов Microsoft Excel и главное меню этого приложения, а сам OLE-контейнер - новую рабочую книгу Excel.

Е

procedure TForm1.NewExcelworksheet1Click(Sender: TObject);

begin

OleContainer1.CreateObject('Excel.Sheet’, False);

end;

сли тип объекта, отображаемого в OLE-контейнере, известен заранее, можно использовать метод CreateObject компонента TOleContainer. Добавив в пункт File подпункт NewExcelworksheet, можно обеспечить активизацию Microsoft Excel непосредственно из этого пункта меню, поставив ему в соответствие следующий обработчик:

Второй параметр этого метода указывает, отображать ли объект внутри OLE-контейнера в виде значка.

Примечание: В диалоговом окне Insert Object содержатся только имена серверов OLE-документов. Однако в подобных компонентах можно отображать, в принципе, любой СОМ-сервер, обладающий пользовательским интерфейсом, в частности, многие из элементов управления ActiveX. В случае если необходимо отобразить в OLE-контейнере пользовательский интерфейс СОМ-сервера, не являющегося сервером OLE-документов, следует указать его идентификатор CLSID в качестве первого параметра метода CreateObject.

М

procedure TForm1.ShowProperties1Click(Sender: TObject);

begin

if OleContainer1.OleObjectlnterface <> nll then OleContainerl1.ObjectPropertiesDialog;

else ShowMessage ('OleContainer is empty');

end;

procedure TForml.Pastespecial1Click(Sender: TObject);

begin

OleContainer1.PasteSpecialDialog;

end;

одифицируем приложение, добавив в меню пункт Action с подпунктами Show Properties (Показать свойства) и PasteSpecial (Специальная вставка). Создадим соответствующие обработчики событий:

Скомпилируем приложение и на этапе выполнения добавим какой-нибудь объект в OLE-контейнер. Выбрав команду Action | Show Properties нашего приложения, получим стандартное диалоговое окно с описанием свойств OLE-объекта.

Поместив какие-либо данные в буфер обмена, выберем команду Action | PasteSpecial нашего приложения и получим диалоговое окно специальной вставки объекта из буфера обмена Paste Special. Выбрав тип вставляемого объекта в предложенном списке, мы можем поместить его в OLE-контейнер.