- •Лабораторна робота 5
- •Хід роботи
- •20. Напишіть метод створення форми.
- •21. Напишіть метод заповнення полів редагування NewEdit.
- •22. Напишіть метод заповнення комбінованого списку NewComboBox.
- •23. Збережіть роботу, запустіть програму, заповніть таблицю даними і переконайтесь в тому, що програма правильно записує на диск і зчитує з диска файли телефонних довідників.
- •24. Запрограмуйте команду головного меню „Збережіть зміни в списку записів”.
- •25. Запрограмуйте кнопку переходу на попередій запис "Попередній".
- •26. Аналогічно запрограмуйте кнопку "Наступний".
- •27. Збережете програму і переконаєтеся в правильності її роботи.
- •Контрольні запитання
20. Напишіть метод створення форми.
Для цього у вікні інспектора об’єктів активізуйте об’єкт PagesDlg (вікно форми з багатосторінковим блокнотом) і два рази натисніть на рядок OnCreate (МоментСтворення) закладки Events цього об’єкту. Сформуйте метод створення головної форми програми:
void __fastcall TPagesDlg::FormCreate(TObject *Sender)
{
//Заповнюємо заголовок таблиці
StringGrid1->Cells[0][0] = "Прізвище";
StringGrid1->Cells[1][0] = "Ім’я";
StringGrid1->Cells[2][0] = "Адрес";
StringGrid1->Cells[3][0] = "Телефон";
//Створюємо пустий рядок в комбінованому списку
ComboBox1->Items->Add("");
//Активізуємо цей рядок на випадо створення нового довідника
ComboBox1->ItemIndex=0;
}
21. Напишіть метод заповнення полів редагування NewEdit.
Виклик цього методу здійснюється, зокрема, в момент вибору прізвища для пошуку, тобто в момент зміни активного рядка в комбінованому списку. Тому для ініціалізації заготовки цього методу в файлі заголовків TABPGDLG.h оголосіть прототип методу: void __fastcall NewEdit(TObject *Sender);
та активізуйте на закладці Events вікна Object Inspector об’єкта ComboBox1 рядок OnChange (МоментЗаміни) і в правому стовпці вкажіть назву процедури реакції на цю подію: NewEdit. Два рази клацніть мишею на введеній назві і заповніть заготовку цієї процедури таким чином:
void __fastcall TPagesDlg::NewEdit(TObject *Sender)
{
//і – номер рядка даних в таблиці
int i = ComboBox1->ItemIndex + 1;
if (i > 0)
{
//Для значущих позицій комбінованого списку
Edit1->Text = StringGrid1->Cells[0][i]; //копіюємо дані і-го запису з
Edit2->Text = StringGrid1->Cells[1][i]; //правої сторінки форми в
Edit3->Text = StringGrid1->Cells[2][i]; //відповідні поля на другій сторінці
Edit4->Text = StringGrid1->Cells[3][i];
}
}
22. Напишіть метод заповнення комбінованого списку NewComboBox.
Спочатку до опису типу класу (об’єкта) TPagesDlg (багато сторінкової форми) в розділі public добавте оголошення методу:
void __fastcall NewComboBox(void);
А у виконавчому файлі добавте опис цієї процедури:
void __fastcall TPagesDlg::NewComboBox(void)
{
int j = ComboBox1->ItemIndex; //Запам’ятовуємо активну позицію type
ComboBox1->Clear(); //Очищаємо комбінований список
for(int i = 1;i<N;i++)//Для всіх N записів...
ComboBox1->Items->Add(StringGrid1->Cells[0][i]);
//В оновлений комбінований список добавляємо всі прізвища з першого стовпця таблиці
ComboBox1->ItemIndex = j; //Переходимо на позицію j
}
23. Збережіть роботу, запустіть програму, заповніть таблицю даними і переконайтесь в тому, що програма правильно записує на диск і зчитує з диска файли телефонних довідників.
24. Запрограмуйте команду головного меню „Збережіть зміни в списку записів”.
void __fastcall TPagesDlg::N8Click(TObject *Sender)//Тут N8 – номер команди „Записати в файл”, у вас може бути інший
{
int i = ComboBox1->ItemIndex + 1; //Визначаю номер активного запису
if (PageControl1->ActivePage==TabSheet2)
{//Якщо активна друга сторінка
StringGrid1->Cells[0][i] = Edit1->Text; //то вносимо зміни в першу
StringGrid1->Cells[1][i] = Edit2->Text;
StringGrid1->Cells[2][i] = Edit3->Text;
StringGrid1->Cells[3][i] = Edit4->Text;
}
else NewEdit(ComboBox1); //Інакше - вносимо зміни в другу сторінку
NewComboBox(); //В обох випадках обновляємо комбінований список
}
