- •Разработка приложения с обработкой списков.
- •Компонент tListBox
- •Combo Box - комбинированная строка ввода
- •Использование компонента tListBox
- •Использование компонента tComboBox
- •Графика в Делфи
- •Приложение Задание1. Заставка. Порядок выполнения
- •Пример создания заставки
- •Задание 2. Анимация иллюстрация вращения луны вокруг Земли. Порядок выполнения
- •Задание 3. Диаграмма. Порядок выполнения
- •Разработка приложения с обработкой исключительных ситуаций
- •Лабораторная работа №5.
- •Стандартные компоненты для использования dde и ole в Delphi
- •Динамический обмен данными — dde
- •Внедрение и связывание объектов — ole
- •Технология com
- •Технология сом
- •Разработка справочной системы
- •Общие сведения о справочной системе
- •Создание текстовых файлов справочной системы
- •Создание проекта справочной системы
- •Создание файла содержания справочной системы
- •Прикрепление справочной системы к программе
- •Список литературы Основная
- •Дополнительная
Внедрение и связывание объектов — ole
Прежде, чем рассматривать реализацию в Delphi технологии внедрения и связывания объектов, остановимся на некоторых базовых понятиях. Эта технология появилась как OLE 1.0 в Windows 3.1 и означала, что пользователь мог создавать сложные составные документы, в которых содержались объекты различного происхождения. Внедренные объекты могли редактироваться простым двойным щелчком мыши на соответствующем элементе данных. Например, можно было дважды щелкнуть на электронной таблице Excel, встроенной в документ редактора Word, и в отдельном окне запускался Excel с загруженным рабочим листом, готовым к редактированию. После завершения редактирования Excel позволял сохранить изменения во внедренном в документ Word объекте Excel.
Другой особенностью было связывание объектов. Это позволяло связать электронную таблицу с документом Word (по сути внутри документа Word хранился просто указатель на электронную таблицу). Если данные в оригинале электронной таблицы обновлялись, то при следующей загрузке документа Word ссылка обновляла документ и отражала в нем проведенные изменения.
Дальнейшее развитие внедрение и связывание получило в OLE 2.0. Основой этого усовершенствованного подхода явилась компонентная модель объекта (СОМ). Это модель объекта в системном обеспечении, которая предусматривает полную совместимость во взаимодействии между компонентами, написанными разными компаниями и на разных языках. Ключом к успеху является модульность этих компонентов. Они могут покупаться, модернизироваться или заменяться поодиночке или группами, причем это никак не влияет на работу целого.
СОМ определяет двоичный интерфейс, полностью независимый от языка программирования, использованного при реализации компонента. Компонент, написанный в соответствии со спецификациями двоичного интерфейса СОМ, может вступать во взаимодействие с другим компонентом, не зная в действительности ничего о реализации последнего.
Новая особенность, появившаяся в OLE 2.0, — это автоматизация OLE, которая обеспечивает доступ к объектам приложения и манипуляцию с ними извне. Такие объекты, предоставленные (экспонированные) для внешнего пользования, называются автоматными объектами OLE. Типы объектов, которые могут быть экспонированы, так же разнообразны, как и сами приложения Windows. Текстовый процессор мог бы экспонировать в качестве автоматного объекта документ, абзац или предложение. Электронная таблица могла бы экспонировать таблицу, диаграмму, ячейку или группу ячеек.
Главное отличие автоматных объектов от обычных объектов OLE состоит в том, что автоматные объекты доступны только программно, они создаются и используются при помощи программного кода и, следовательно, в принципе временны. Они не могут быть внедрены или связаны. Они могут существовать только в течение времени выполнения ваших программ и не видны непосредственно конечному пользователю.
Существуют два типа автоматных серверов: внутри-процесса и вне-процесса (их еще называют локальными). Delphi поддерживает оба типа серверов.
Сервер внутри процесса является DLL (динамически связываемой библиотекой), которая экспортирует автоматные объекты. Поскольку автоматные объекты поставляются из DLL, а не из других приложений, они являются частью приложения клиента. Это избавляет от больших накладных расходов, сопутствующих каждому вызову автоматного сервера.
Сервер вне процесса — это автономный исполняемый файл, экспортирующий автоматные объекты. Примером этого мог бы быть Microsoft Word. Word имеет некоторое количество объектов, которые он экспонирует в качестве автоматных.
Автоматизации OLE, чтобы функционировать правильно, опирается на три различных источника информации: классы, документы и элементы.
Класс OLE определяет приложение сервера, которое создает автоматный объект. Например, если класс объекта — документ .doc, то он был создан с помощью Word.
Документы OLE ссылаются на исходный файл, содержащий данные объектаOLE. Любой документ OLE должен быть связанным документом (т.е. не внедренным), потому что данные связанных документов должны храниться в файле. Элемент OLE определяет, какая часть документа содержит данные, подлежащие связыванию или внедрению в другой документ. Это способ, с помощью которого вы можете вместо целого документа связывать с другими документами лишь небольшую часть его данных. Элементы OLE позволяют сократить размеры объектов.
Теперь рассмотрим основные приемы использования OLE в Delphi. На странице System библиотеки визуальных компонентов имеется контейнер OLE — основной компонент, обеспечивающий внедрение и связывание. Начнем его изученияс примера.
Задания
Создать форму и разместить на ней следующие элементы: Edit1, Button1, Button2, DdeClientConv1. Кнопке Button1 дать заголовок «Получить», кнопке Button2 – «Отправить».
Открыть MS Excel и создать таблицу. Сохранить. Скопировать произвольную ячейку.
Перейти к инспектору объекта DdeClientConv1 и щелкнуть по любому из свойств клиента (DDETopic, DDEService). Появится редактор связи. Если Excel способен быть сервером DDE, то на появившейся при щелчке форме кнопка Paste Link будет активна. (При этом MS Excel, в котором была скопирована ячейка, должен быть открыт). Тогда щелкнуть по этой кнопке. Затем нажать OK.
Написать простейший обработчик для кнопки «Получить»:
procedure TForm1.Button1Click(Sender: TObject);
var
FromExcel:PAnsiChar;
begin
FromExcel := DDEClientConv1.RequestData('R4C2');
//r4 - строка, c2 – столбец.
edit1.Text:=StrPas(FromExcel);
end;
Написать простейший обработчик для кнопки «Отправить»:
procedure TForm1.Button2Click(Sender: TObject);
var
ToExcel:array[0..100] of Ansichar;
begin
StrPCopy(ToExcel,Edit1.Text);
DDEClientConv1.PokeData('R4C2',ToExcel);
end;
В разделе Uses добавить DdeMan, StdCtrls.
Лабораторная работа №7
