Кент Рейсдорф. BORLAND C++BUILDER. Раздел 4

Кент Рейсдорф. BORLAND C++BUILDER. Страница 441

Теперь вы можете проверить, действительно ли Autocon может вызывать методы, определенные в TMyOLEEditServer. Используйте для этого кнопки в Autocon. Щелкните на кнопке Get Val для получения текущего содержимого компонента Editl в MyAuto. Теперь наберите текст в окне редактирования TEdit приложения Autocon и щелкните на кнопке Set Val. Вы увидите, как введенный текст появится в окне Editl приложения MyAuto. В завершение щелкните на кнопке Clear приложения Autocon.

При нажатии на кнопку Clear вы получите сообщение об ошибке, по­скольку мы не реализовали метод С1еаг(), когда копировали код из Autosrv в MyAuto. Так как реализация OLE в C++Builder основана на позднем свя­зывании (late binding), вы часто будете узнавать о подобных промахах только при тестировании приложения.

Вы завершили создание своего автоматизированного сервера OLE. Как видите, этот процесс действительно прост, если пройти через него один или два раза.

Листинги 15.4-15.8 содержат полный исходный код приложения MyAuto.

см. продолжение

Olemdi и Olesdi

Теперь, когда вы познакомились с работой автоматизированных серве­ров OLE, давайте рассмотрим контейнеры OLE. Контейнер OLE позволяет приложению работать с объектом, принадлежащим другому приложению. Объект может быть вставлен либо как значок (и просматриваться/редак­тироваться в своем исходном приложении), либо с сохранением своего ори­гинального вида, что позволяет просматривать или редактировать его непосредственно. При работе с документами OLE основное внимание уде­ляется не исходному приложению, а самому документу.

В C++Builder для поддержки контейнеров OLE используется компонент TOLEContainer, который предоставляет специальные методы для создания объектов OLE. Вы можете использовать CreateObject или CreateObjectFromFile для создания внедренного объекта OLE, тогда как CreateLinkToFile создает связанный объект. Внедренный объект OLE реально содержится в своем ба­зовом документе. Связанный объект, напротив, располагается на диске — базовый документ содержит только ссылку на него. Преимущество внедрен­ных объектов заключается в том, что их базовые документы являются одно­временно и контейнерами — в этом случае не требуются никакие дополни­тельные или служебные файлы. Вы можете пересылать документ с внедренными объектами OLE, не беспокоясь о включении дополнительных файлов. При работе со связанными объектами требуется включение исходных документов. В этом случае размер базового документа получается меньше, поскольку он содержит только ссылки на связанные объекты, а не сами эти объекты.

Web-дизайн (с) 2010 All rights reserved