Взаимодействие приложения с внешними программами 397

Рис. 6.2

Форма простого приложения OLE

Процедура, соответствующая разделу меню «Новый», может иметь вид:

{

if (01eContainerl->InsertObjectDialog() )
FName = "";

Вызываемый этим оператором метод InsertObjectDialog осуществляет обра-
щение к стандартному окну Windows Insert Object (вставка объекта), в котором по-
льзователь может указать тип вставляемого объекта, инициализирует объект OLE
и загружает его в контейнер OleContainerl. Работу с окном Вставка объекта мы
рассмотрим несколько позднее, а пока продолжим создание приложения.

Процедура, соответствующая разделу меню Закрыть, может иметь вид:

void _fastcall TFormI::MCloseClick(TObject *Sender)
{

01eContainerl->DestroyObject() ;

)

Эта процедура разрушает объект в контейнере OLE.
Процедура, соответствующая разделу меню Сохранить, может иметь вид:

void _fastcall TFormI::MSaveClick(TObject *Sender)
{

if (FName == "")

if (SaveDialogl->Execute ())

FName = SaveDialogl->FileName;

else return;

01eContainerl->SaveToFile(ChangeFileExt(FName,".ole")) ;

}

Если имя файла не задано, то вызывается диалог Сохранить как... (SaveDia-
logi), с помощью которого пользователь задает имя файла. Затем методом SaveTo-
File объект сохраняется в файле. При этом во избежание ошибок расширение фай-
ла принудительно заменяется на .ole с помощью функции ChangeFileExt, изменя-
ющей расширение файла (см. главу 14 раздел 14.12.5).

Процедура, соответствующая разделу меню Открыть, может иметь вид:

void _fastcall TFormI::MOpenClick(TObject *Sender)
{

if (OpenDialogl->Execute())
1

01eContainerl->LoadFromFile(OpenDialogl->FileName) ;

FName = OpenDialogl->FileName;

01eContainerl->Repaint();