- •Разработка объекта автоматизации в среде delphi.
- •6.6 Методические указания.
- •6.6.1 Расширения com
- •6.6.2 Мастера для создания сом-объектов
- •6.6.3 Технология автоматизации
- •6.6.4. Интерфейс iDispatch
- •6.6.5. Интерфейсы диспетчеризации
- •6.6.6 Создание серверов автоматизации в Delphi
- •6.6.6.1 Создание внешнего сервера автоматизации.
- •6.6.6.2 Разработка клиента автоматизации
- •7.6.7 Использование ole-документов в приложениях
- •6.6.7.1 Основные сведения об ole-документах
- •6 .6.7.2 Компонент tOleContainer.
- •6.6.7.3 Применение компонента tOleContainer для работы с ole-документами.
- •6.6.7.3.1 Простейший пример использования компонента tOleContainer.
- •6.6.7.3.2 Основные способы использование компонента tOleContainer.
- •6.6.7.3.3 Управление объектом внутри ole-контейнера
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;
Запустите созданное приложение на выполнение и, дважды щелкните на изображении мышью. После паузы, вызванной загрузкой программы-сервера, вы увидите окно этой программы. Обычно это программа 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;
Запустив приложение и щелкнув на кнопке, получим диалоговое окно 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-контейнера в виде значка.
Примечание: В диалоговом окне 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;
Скомпилируем приложение и на этапе выполнения добавим какой-нибудь объект в OLE-контейнер. Выбрав команду Action | Show Properties нашего приложения, получим стандартное диалоговое окно с описанием свойств OLE-объекта.
Поместив какие-либо данные в буфер обмена, выберем команду Action | PasteSpecial нашего приложения и получим диалоговое окно специальной вставки объекта из буфера обмена Paste Special. Выбрав тип вставляемого объекта в предложенном списке, мы можем поместить его в OLE-контейнер.
