Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания практические ООП 2012 час...doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
18.03 Mб
Скачать

3 Частина

Розташуємо на формі кнопку

Додамо до панелі елементів наступний компонент:

Створимо нову форму та розташуємо наступні компоненти

Для форми створимо обробники подій

#pragma endregion

// Программа создает таблицу с данными о клиентах (названия организаций,

// контакты) и таблицу с данными о заказах (номер заказа, его объем,

// организация-заказчик). Между таблицами устанавливается связь

// посредством одинаковых столбцов (названий организаций). При этом

// таблица с данными о клиентах будет родительской, а таблица с данными

// о заказах - дочерней. Каждая строка родительской таблицы отображается

// со знаком "плюс". При щелчке на знаке "плюс" открывается узел,

// содержащий ссылку на дочернюю таблицу.

// ~ ~ ~ ~ ~ ~ ~ ~

Boolean ПоказатьКлиентов;

System::Data::DataSet ^ НаборДанных;

private: System::Void Form_zt_Load(System::Object^ sender, System::EventArgs^ e) {

button1->Text = "Переключатель таблиц"; button1->TabIndex=0;

Form_zt::Text = "Связанные таблицы"; ПоказатьКлиентов = true;

// Р О Д И Т Е Л Ь С К А Я Т А Б Л И Ц А "К Л И Е Н Т Ы":

System::Data::DataTable ^ Таблица = gcnew DataTable("Клиенты");

// Создаем первый столбец в таблице:

DataColumn ^ Столбец = gcnew DataColumn("Название организации");

Столбец->ReadOnly = true; // - его нельзя модифицировать

// Значения в каждой строке столбца должны быть уникальными:

Столбец->Unique = true;

// Добавляем этот столбец в таблицу:

Таблица->Columns->Add(Столбец);

// Добавляем второй и третий столбец в таблицу:

Таблица->Columns->Add("Контактное лицо");

Таблица->Columns->Add("Телефон");

// Создаем набор данных:

НаборДанных = gcnew DataSet();

// Добавляем таблицу "Клиенты" в набор данных:

НаборДанных->Tables->Add(Таблица);

// Заполняем строки (ряды) в таблице:

Таблица->Rows->Add(

"НИИАСС", "Погребицкий Олег", "095 345 22 37");

Таблица->Rows->Add(

"КНУБА", "Борис Григорьевич", "050 456 21 03");

Таблица->Rows->Add(

"МИИГАИК", "Стороженко Светлана", "067 456 56 72");

// Д О Ч Е Р Н Я Я Т А Б Л И Ц А "З А К А З Ы":

Таблица = gcnew DataTable("Заказы");

// Создаем первый столбец в таблице "Заказы":

DataColumn ^ Столбец1 = gcnew DataColumn("Номер заказа");

Столбец1->DataType = System::Type::GetType("System.Int32");

Столбец1->ReadOnly = true; Столбец1->Unique = true;

Таблица->Columns->Add(Столбец1);

// Добавляем второй и третий столбец в таблицу:

Таблица->Columns->Add("Объем заказа");

Таблица->Columns->Add("Организация-заказчик");

НаборДанных->Tables->Add(Таблица);

// Заполняем строки (ряды) в таблице:

Таблица->Rows->Add(1, "230000", "НИИАСС");

Таблица->Rows->Add(2, "178900", "КНУБА");

Таблица->Rows->Add(3, "300000", "НИИАСС");

Таблица->Rows->Add(4, "345000", "МИИГАИК");

Таблица->Rows->Add(5, "308000", "КНУБА");

// С О З Д А Н И Е С В Я З Е Й М Е Ж Д У Т А Б Л И Ц А М И:

// Связывем одинаковые столбцы в двух таблицах:

DataColumn ^ Родитель = НаборДанных->

Tables["Клиенты"]->Columns["Название организации"];

DataColumn ^ Дочь = НаборДанных->

Tables["Заказы"]->Columns["Организация-заказчик"];

DataRelation ^ Связь1 = gcnew DataRelation(

"Ссылка на заказы клиента", Родитель, Дочь);

// В родительской таблице значения в связываемом столбце

// должны быть уникальными, а в дочерней - нет.

НаборДанных->Tables["Заказы"]->ParentRelations->Add(Связь1);

// И С Т О Ч Н И К Д А Н Н Ы Х Д Л Я D A T A G R I D:

dataGrid1->SetDataBinding(НаборДанных, "Клиенты");

dataGrid1->CaptionText = "Родительская таблица \"Клиенты\"";

dataGrid1->CaptionFont = gcnew

System::Drawing::Font("Consolas", 11);

}

private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {

// Показываем либо "таблицу Клиенты", либо таблицу "Заказы":

ПоказатьКлиентов = !ПоказатьКлиентов;

if (ПоказатьКлиентов == true)

{

dataGrid1->SetDataBinding(НаборДанных, "Клиенты");

dataGrid1->CaptionText = "Родительская таблица \"Клиенты\"";

}

else

{

dataGrid1->SetDataBinding(НаборДанных, "Заказы");

dataGrid1->CaptionText = "Дочерняя таблица \"Заказы\"";

}

}

Повернемося до першої форми. До першої форми підключимо нову форму. Для події клацання на кнопці створимо обробник для відкриття нової форми

Запустимо прикладення. Якщо клацнемо на кнопці

Завершимо роботу із програмою.