Объекты OLE. Компонент OleContainer. Связывание и встраивание объектов.
Цель занятия:
Освоение принципов использования технологии OLE в среде Delphi.
Изучение свойств объекта OleContainer.
Получение практических навыков работы объектно-ориентированного программирования.
Вопросы для коллоквиума.
1. Что представляет собой технология OLE.
2. Укажите назначение компонента компонент OleContainer.
3. Перечислите свойства компонента OleContainer.
4. Укажите назначение OLE Контейнера.
Порядок выполнения работы.
- Создайте новый проект.
- Бросьте на форму компонент OleContainer с закладки System палитры компонентов. Теперь дважды щёлкните внутри окна компонента (или щёлкните правой кнопкой и в появившемся меню выберите пункт Insert Object). Перед вами откроется следующее окно:
- В этом окне, в списке «Тип объекта» найдите строку «Рисунок PaintBrush». Выделите эту строку. Если поставить галочку «В виде значка», то на форме вы потом увидите только значок объекта, а по двойному щелчку будет запускаться выбранное приложение (PaintBrush). Если галочки нет, то приложение встраивается прямо в окно.
- Запустите программу и дважды щёлкнуть внутри компонента OLEContainer. Компонент будет взят в рамочку и вы сможете рисовать в нём как в самом PaintBrush.
- Таким способом мы встроили стороннее приложение в свою программу.
- Для добавления меню в ваше приложение бросьте на форму компонент MainMenu. Туда не надо добавлять никаких пунктов, достаточно просто его бросить. Если у формы есть главное меню, то OLE компонент будет автоматически встраиваться в него.
- Запустите программу и убедитесь, что меню появляется.
- Теперь измените свойство Align у компонента OleContainer1 на alClient, чтобы растянуть его по всей форме. Запустите программу и посмотрите на результат. Теперь ваше приложение превратилось в полноценный PaintBrush. Единственное, что отличает его – заголовок окна и иконка Delphi.
|
|
- Создайте в нашем главном меню два пункта Файл и Правка. У обоих пунктов добавьте подпункты Выход и Копировать.
- Теперь запустите программу и посмотрите на результат. Когда вы пытаешься активизировать OLE объект, то меню Файл остаётся ваше, а аналогичное из программы PaintBrush исчезает. К тому же у вас должно получиться два пункта Правка. Пункты меню, у которых в свойстве GroupIndex стоит чётное значение (0, 2, 4 …) – остаются неизменными. Пункты меню, у которых GroupIndex нечётное – заменяются аналогичными из OLE объекта. Попробуйте поставить у пункта Правка в свойстве GroupIndex значение 1 и запустите программу. Теперь при активизации OLE объекта пункт меню «Правка» будет заменён аналогичным из объекта.
- Изменим наш пример. Добавьте на форму одну панель TToolBar (вкладка Win32) и бросьте на неё набор кнопок:
- Вставить объект.
|
|
- Свойства объекта.
- Вставить из файла
- Открыть объект.
- Сохранить объект.
- Закрыть объект.
- Сразу же изменим одно его свойство – дважды щёлкните по свойству EdgeBorders и измените свойство ebTop на false. Это заставит исчезнуть оборочку сверху панели.
- Измените свойство AutoSize на true, чтобы панель принимала размеры соответствующие кнопкам.
- Теперь создадим кнопки на панели. Для этого щёлкните по ней правой кнопкой мыши и выберите из появившегося меню пункт New Button. Пункт New Separator этого же меню создаёт разделитель между кнопками. Если вам нужно будет удалить кнопку или разделитель, то просто выделите его и нажмите кнопку Del (на клавиатуре).
-
Таким образом создайте все кнопки вместе с разделителями. У вас должно получиться нечто похожее на рисунок: - Теперь необходимо сделать так, чтобы кнопки что-то отображали. Но для начала выделите саму панель и изменить свойство Flat на true, чтобы кнопки на панели выглядели более изящно (плоско).
- Теперь бросьте на форму компонент TImageList (вкладка Win32)и добавьте в него картинки.
- Выделите панель и в свойстве Images укажите созданный набор картинок. На кнопках сразу же отобразятся картинки в той последовательности, в которой вы их добавили. Если вы хотите изменить картинку на какой-нибудь кнопке, то надо выделить её и изменить свойство ImageIndex.
- Теперь для каждой кнопки в свойстве Caption напишите осмысленный текст (по умолчанию там стоит текст ToolButton плюс порядковый номер кнопки). Желательно, чтобы текст соответствовал изображению на картинке.
- Если хотите, чтобы панель отображала на кнопках не только картинки, но и указанный в свойствах Caption текст установите true в свойстве ShowCaptions у панели инструментов. (Если ещё установить свойство List у панели инструментов, то текст будет отображаться справа от картинки)
- У вас должна получится форма приблизительно такого вида:
- По нажатию кнопки «Вставить объект» пишем следующий код:
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
OleContainer1.InsertObjectDialog;
end;
- Теперь, после нажатия этой кнопки, программа будет отображать уже знакомое вам окно, с помощью которого можно будет сменить OLE объект на другой.
- По нажатию второй кнопки (свойства объекта) пишем следующий код:
procedure TForm1.ToolButton2Click(Sender: TObject);
begin
OleContainer1.ObjectPropertiesDialog;
end;
Этим кодом мы будем отображать окно свойств объекта.
- По нажатию кнопки «Вставить из файла» пишем следующий код:
procedure TForm1.ToolButton4Click(Sender: TObject);
begin
if OpenDialog1.Execute then
OleContainer1.CreateObjectFromFile(OpenDialog1.FileName, false);
end;
- Так как в для открытия файла требуется компонент OpenDialog, бросьте его на форму.Как только пользователь выбирает файл, создается объект на основе выбранного файла. Попробуйте запустить приложение и открыть bmp, doc или xls файл. Как только вы нажмёте кнопку «Открыть», так сразу перед вами появиться соответствующий выбранному файлу OLE объект. Если вы выберете doc файл, то запуститься Word.
- По нажатию кнопки «Открыть объект» пишем следующий код:
procedure TForm1.ToolButton4Click(Sender: TObject);
begin
OleContainer1.LoadFromFile('ole.dat');
end;
Здесь мы открываем объект из указанного файла. В качестве имени файла используем ‘ ole.dat ’.
- По нажатию кнопки сохранить мы пишем следующее:
procedure TForm1.ToolButton4Click(Sender: TObject);
begin
OleContainer1.SaveToFile('ole.dat');
end;
Здесь мы сохраняем объект в тот же файл ‘ ole.dat ’. Файл созданный OLE объектом не совместим с форматом самой программы объекта. Это значит, что ole.dat – это не bmp картинка, хотя и bmp – это родной формат для программы PaintBrush. Так что вы не сможете открыть файл ole.dat с помощью PaintBrush.
- По нажатию кнопки закрыть пишем следующее:
procedure TForm1.ToolButton11Click(Sender: TObject);
begin
OleContainer1.Close;
end;
Здесь мы закрываем запущенный OLE объект. Если пользователь дважды щёлкнул по контейнеру, то OLE объект запускается и закрыть его можно с помощью этой кнопки.
|
|
- Если вы все сделали правильно, у вас получится следующее приложение:
- Представить результаты выполнения преподавателю.
- Закончить работу с Delphi.