400 Глава б

Рис. 6.6

Приложение с внедренным объектом
OLE - просмотр файла

h Простой пример OLE

вите индикатор Связь (Link). После щелчка на ОК в окне вашего приложения снова
появится выбранный вами объект документа. Вы опять можете сохранить этот
объект командой Сохранить. Но теперь документ в вашем объекте не просто вне-
дрен, а и связан с исходным файлом. Это означает, что все изменения в исходном
файле отразятся в вашем объекте и наоборот. Кроме того изменяется и взаимодей
ствие вашего приложения с документом. Если вы сделаете двойной щелчок на тек
сте в вашем приложении, то откроется отдельное, полноценное окно программы.
обрабатывающей ваш объект, например, Microsoft Paint, с загруженным в него до
кументом. Вы можете что-то изменить в нем, напечатать его, сохранить. Как толь-
ко он будет сохранен, в тексте документа в вашем приложении отразятся введен
ные изменения.

Вы создали очень простое приложение, использующее OLE. Его можно усовер-
шенствовать, добавив в меню еще несколько разделов. Один из них — Открыть
файл. В отличие от рассмотренного ранее раздела, открывающего объект OLE, г,
данном разделе можно создавать новый объект на основе какого-то существующего
файла документа. Делается это методом CreateObjectFromFile:

void CreateObjectFromFile(AnsiString FileName, bool Iconic);

Аргумент FileName определяет имя открываемого файла. Второй аргумент
функции Iconic, значение которого обычно задается равным false, показывает, что
объект отображается в том виде, в каком он содержится в исходном файле. Если
задать этот аргумент, равным true, то объект будет отображаться в виде пиктог
раммы.

Таким образом, в вашем приложении обработчик команды Открыть файл мо-
жет иметь вид:

void   fastcall TFormI::MOpenFClick(TObject *Sender)
f

if (OpenDialogl->Execute())
(

01eContainerl->CreateObjectFromFile(OpenDialogl->FileName, false);

FName = OpenDialogl->FileName;

01eContainerl->Repaint() ;

Выполнение этой команды эквивалентно описанному ранее созданию внедрен-
ного объекта OLE из файла, но исключает необходимость пользователю работать с
окнами рис. 6.3 и 6.5.

Имеется также аналогичный метод CreateLinkToFile, позволяющий создавать
внедренный и связанный объект:

void CreateLinkToFile(const AnsiString FileName, bool Iconic);