Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Меньшикова / Пособие - 5 курс / К.Г.Меньшикова -32 с.doc
Скачиваний:
15
Добавлен:
13.03.2016
Размер:
321.02 Кб
Скачать

Создание и сохранение нового объекта (внедрение)

Создание нового объекта можно обеспечить использованием специального диалогового окна Insert Object (вставка объекта), например:

AnsiString File_Name; if (OleContainer1->InsertObjectDialog() ) { File_Name = "";OleContainer1->DoVerb(ovShow); }

Программно объект можно создать методом CreateObject, например:

OleContainer1->CreateObject("Excel.sheet",false); OleContainer1->CreateObject("Word.Document",false);

При создании нового объекта используется внедрение (так как для связывания необходим файл). В этом случае за хранение данных объекта отвечает программа-контейнер. Сохранить данные в файле можно с помощью метода SaveToFile (<имя файла>), например:

OleContainer1 ->SaveToFile (ChangeFileExt(File_Name,".ole"));

Загрузить запомненный объект в контейнер позволяет метод LoadFromFile(<имя файла>).

Программный способ создания объекта из файла обеспечивается методом OleContainer-> CreateObjectFromFile (AnsiString <имя файла>, bool Iconic). Параметры метода определяют имя исходного файла и режим отображения объекта (Iconic=true – пиктограмма).

Метод OleContainer->Repaint() приводит к перерисовке окна контейнера и, следовательно, появлению данных объекта на экране.

Создание связанного объекта

Так же как и при внедрении, создать связанный объект может или пользователь, или программист. Пользователю в окне Insert Object следует выбрать файл и установить флажок «Связь».

Программист должен воспользоваться методом OleContainer-> CreateLinkToFile (AnsiString <имя файла>, bool Iconic).

Работа с сервером

Поскольку работать с данными объекта может только программа, создавшая объект (сервер), то контейнеру могут потребоваться знания о возможных действиях над объектом. Метод DoVerb (int Verb) запрашивает выполнение команды, свойство ObjectVerbs контейнера содержит весь список возможных действий. Получить этот список можно только после загрузки объекта в контейнер. Следующий оператор размещает список команд объекта в ListBox:

ListBox1->Items = OleContainer1->ObjectVerbs;

Контейнер может попросить сервер сохранить данные объекта в виде документа в формате сервера. Этот метод можно использовать как для связанных, так и для внедренных объектов: SaveAsDocument(<имя файла>).

При завершении работы с объектом программа может освободить OleContainer, вызвав метод OleContainer->DestroyObject().

Если в контейнер загружен объект, который экспонирует какие-либо свойства и методы, то доступ к ним можно получить, используя свойство OleObject. Например, в контейнер был загружен рабочий лист Excel (или открыт файл – рабочая книга Excel). Свойство ObjectVerbs содержит команды: «Изменить», «Открыть». Выполнение любой команды приведет к запуску сервера. После этого следующий код, например, сможет записать значение (745) в ячейку таблицы:

Variant app, Wbs, WShs; app=OleContainer1->OleObject.OlePropertyGet("Parent"); Wbs=app.OlePropertyGet("WorkBooks"); WShs=Wbs.OlePropertyGet("Item",1).OlePropertyGet ("WorkSheets"); WShs.OlePropertyGet("Item",1).OlePropertyGet("Cells"). OlePropertyGet("Item",4,2).OlePropertySet("Value",-745);