Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Shimarik / Shimarik / Специальная часть.doc
Скачиваний:
18
Добавлен:
16.04.2013
Размер:
1.9 Mб
Скачать

2.6.2. Внедрение и связывание объектов

Теперь рассмотрим основные приемы использования OLE в Delphi. На странице System библиотеки визуальных компонентов имеется контейнер OLE OleContainer — компонент, обеспечивающий внедрение и связывание. Продемонстрирую его возможности сначала на очень простом примере. На рисунке показано простое придожение.

Рис 2.9. Форма демонстрационного приложения для иллюстрации работы с компонентом OleContainer

При нажатии на кнопку “Вставить объект” выполняется следующий код:

procedure TForm1.Button1Click(Sender: TObject);

var Fname:ansistring;

begin

if OleContainer1.InsertObjectDialog then Fname:='';

end;

В результате появляется окно вставки:

Рис 2.10. Форма “Вставка объекта” для типа объекта, вставляемого в приложение.

В нем выбирается объект вставки. После этого при двойном щелчке на OleContainer’e будет загружаться выбранное приложение в программу. Например, так можно осуществить вызов Excel для создания объекта этого приложения моей демонстрационной программой и потом при необходимости сохранить результаты в файле.

Рис 2.11. Форма демонстрационного приложения при редактировании “внедренного” объекта Micrpsoft Excel.

Это был пример внедрения объекта. В частности я внедрил объект Microsoft Excel в свое демонстрацинное приложение.

Существует также возможность связывания объекта. Для этого при появлении окна “Вставка объекта” я выбиру пункт “Создать из файла”.

Рис 2.12. Форма “Вставка объекта”. Объект создается из файла.

Для реализации связывания выбранного объекта с программой для его обработки нужно установить галочку “Связь”. Например, я открою так файл Excel:

Рис 2.13. Форма демонстрационного приложения. В OLEContainer помещен объект, “связанный” с Microsoft Excel.

Содержимое файла отобразится в OleContainer. Этот файл также можно сохранить в последующем. Однако теперь документ в объекте не просто внедрен, а и связан с исходным файлом. Это означает, что все изменения в исходном файле от­разятся в объекте и наоборот. Кроме того изменяется и взаимодействие демонстрационного приложения с документом, Если сделать двойной щелчок на объекте в вашем приложении, то откроется отдельное, полноценное окно программы, обра­батывающей ваш объект, например, Microsoft Excel, с загруженным в него документом. Можно что-то изменить в нем, напечатать его, сохранить. Как только он будет сохранен, в приложении отразятся введенные изменения.

Рис 2.14. Форма демонстрационного приложения. В OLEContainer помещен объект, “связанный” с Microsoft Excel. Редактирование объекта средствами Microsoft Excel.

Связь с файлом можно организовать и программным путем. Для этого используется функция:

OleContainer1.CreateLinkToFile(const AnsiString FileName,bool iconic);

В системе “Эксперт” я использовал именно этот способ связывания.Отображение файла Excel, который нужно было экспортировать в программу, было необходимо для того, что б убедится:

  • Открыт нужный файл

  • Файл имеет необходимую структуру для экспортирования (или ее можно было сразу исправить)

Полученный результат в программе выглядит следующим образом:

Рис 2.15. Форма из приложения “Эксперт” для конвертирования файла Excel в формат базы “Эксперт”.

При двойном щелчке на таблице запускает Microsoft Excel, где можно отредактировать файл.