Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
С++_навч_пос14_new.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.86 Mб
Скачать

TOleContainer – контейнер ole

//при створенні форми

void __fastcall TForm1::FormCreate(TObject *Sender)

{

if (OleContainer1->InsertObjectDialog())//якщо вибраний OLE об’єкт з діалогу

//вивести ім’я класу в заголовку форми

Caption=OleContainer1->OleClassName;

//інакше

else

if (OpenDialog1->Execute())//якщо вибраний файл

//створити OLE об’єкт з файлу

OleContainer1->CreateObjectFromFile(OpenDialog1->FileName,false);

//створити другий OLE об’єкт класу Equation.3

OleContainer2->CreateObject("Equation.3", false);

//завантажити з файлу

OleContainer2->LoadFromFile("1.ole");

//заповнити список ListBox1 списком команд OLE контейнера

ListBox1->Items=OleContainer2->ObjectVerbs;

OleContainer2->DoVerb(1);//виконати другу команду

}

//при натиску кнопки Button1

void __fastcall TForm1::Button1Click(TObject *Sender)

{

OleContainer2->SaveToFile("1.ole");//зберегти об’єкт у файл

OleContainer1->SaveAsDocument("1");//зберегти як документ

OleContainer2->DestroyObject();//знищити об’єкт

}

TDdeServerConv, tDdeServerItem, tDdeClientConv, tDdeClientItem – компоненти для динамічного обміну даними

1 Створюємо DDE сервер, зберігаємо проект під назвою «Project1_s»:

//при створенні форми

void __fastcall TForm1::FormCreate(TObject *Sender)

{

DdeServerItem1->ServerConv=DdeServerConv1;//вказує об’єкт для елемента

DdeServerItem1->Lines->Add("Hello");//додає рядки в елемент

DdeServerItem1->Lines->Add("Hello2");

Edit1->Text=DdeServerItem1->Lines->Strings[0];//виводить рядок в Edit1

Edit2->Text=DdeServerItem1->Lines->Strings[1];//виводить рядок в Edit2

}

//при зміні Edit1

void __fastcall TForm1::Edit1Change(TObject *Sender)

{

DdeServerItem1->Lines->Strings[0]=Edit1->Text;//змінити рядок в елементі

}

//при зміні Edit2

void __fastcall TForm1::Edit2Change(TObject *Sender)

{

DdeServerItem1->Lines->Strings[1]=Edit2->Text;//змінити рядок в елементі

}

2 Створюємо DDE клієнта:

//при створенні форми

void __fastcall TForm1::FormCreate(TObject *Sender)

{

DdeClientConv1->ConnectMode=ddeManual;//режим з’єднання

DdeClientItem1->DdeConv=DdeClientConv1;//вказує об’єкт для елемента

DdeClientItem1->DdeItem="DdeServerItem1";//вказуємо на елемент сервера

}

//натиснута кнопка Button1

void __fastcall TForm1::Button1Click(TObject *Sender)

{

//якщо установлений зв’язок з сервером

if(DdeClientConv1->SetLink("Project1_s","DdeServerConv1"))

{

if(DdeClientConv1->OpenLink())//якщо відкритий зв’язок

{

//запит даних з елементу сервера і розміщення їх в елементі клієнта

DdeClientConv1->RequestData(DdeClientItem1->DdeItem);

DdeClientConv1->FormatChars=true;//установка форматування рядків

//вивід рядків елементу в Edit1 і Edit2

Edit1->Text=DdeClientItem1->Lines->Strings[0];

Edit2->Text=DdeClientItem1->Lines->Strings[1];

DdeClientConv1->CloseLink();//закрити зв’язок

}

else Caption="Not OpenLink";

}

else Caption="Not SetLink";

}

4.8 Діалогові вікна tOpenDialog – відкриття файлу, tSaveDialog – збереження файлу

//при натиску кнопки "прочитати"

void __fastcall TForm1::Button1Click(TObject *Sender)

{

OpenDialog1->DefaultExt = "TXT";//розширення файлу по замовчуванню

OpenDialog1->FileName = "*.txt";//ім’я файлу

OpenDialog1->Title="Open text";//заголовок діалогу

OpenDialog1->InitialDir="C:\\";//початковий каталог

if (OpenDialog1->Execute())//показати діалог і, якщо вибір файлу зроблений

//прочитати рядки з вибраного файлу

Memo1->Lines->LoadFromFile(OpenDialog1->FileName);

}

//при натиску кнопки "зберегти"

void __fastcall TForm1::Button2Click(TObject *Sender)

{

SaveDialog1->Options<<ofAllowMultiSelect;//дозволити вибір багатьох файлів

if (SaveDialog1->Execute())//показати діалог і, якщо вибір зроблений

{

//цикл з першого по останній рядок у списку вибраних файлів

for (int i=0;i<SaveDialog1->Files->Count;i++)

//зберегти рядки у кожен файл

Memo1->Lines->SaveToFile(SaveDialog1->Files->Strings[i]);

}

}

//при спробі закрити діалог без відміни

void __fastcall TForm1::SaveDialog1CanClose(TObject *Sender,

bool &CanClose)

{//цикл з першого по останній рядок у списку вибраних файлів

for (int i=0;i<SaveDialog1->Files->Count;i++)

//якщо рядки зі списку файлів не містять ".txt", не закривати діалог

if (!SaveDialog1->Files->Strings[i].Pos(".txt")) CanClose=false;

}