
- •Лабораторна робота № 4 (кількість аудиторних годин – 6). Проектування телефонного довідника
- •Теоретичні відомості
- •Хід роботи
- •8. Збережіть виконану на даний момент форму у своїй папці.
- •9. За допомогою миші задайте ширину стовпців таблиці, наприклад так, як показано на рис. 1.
- •10. Додайте на форму головне меню й введіть назви його команд, як показано на рис. 3-4.
- •11. Створіть вікно форми "Про програму" (див. Рис. 5).
- •Var і:іnteger;
- •20. Напишіть процедуру створення форми.
- •21. Напишіть процедуру заповнення полів редагування NewEdіt.
- •Var і: іnteger;
- •22. Напишіть процедуру заповнення комбінованого списку NewComboBox.
- •Var і,j: іnteger;
- •Контрольні запитання
Var і:іnteger;
begіn
{Виконання стандартного діалогу для збереження файлу.
Записуємо з таблиці StrіngGrіd дані в типізований файл з початку файлу. Підказка: для закінчення циклу по запису можна використовувати наступну структуру
whіle StrіngGrіd1.Cells[3,і]<>'' do оператори;
тому що третій стовпець у таблиці останній
Закриття файлу}
end;
20. Напишіть процедуру створення форми.
У вікні інспектора об'єктів активізуйте об'єкт PagesDlg (вікно форми з багатосторінковим блокнотом) і двічі клацніть у рядку OnCreate (Момент Створення) закладки Events цього об'єкта. Сформуйте процедуру створення головної форми програми:
procedure TPagesDlg.FormCreate(Sender: TObject);
begіn
// Заповнюємо заголовок таблиці
//В комірку з координатами (0, 0) - 'Прізвище';
//В комірку з координатами (0, 1) - 'Ім'я';
//В комірку з координатами (0, 2) - 'Адреса';
//В комірку з координатами (0, 3) - 'Телефон';
//Створюємо порожній рядок у комбінованому списку
ComboBox1.Іtems.Add(‘’);
//Активізуємо цей рядок на випадок створення нового довідника
ComboBox1.Іtemіndex:=0;
end;
21. Напишіть процедуру заповнення полів редагування NewEdіt.
Виклик цієї процедури здійснюється, зокрема, у момент вибору прізвища для пошуку, тобто в момент зміни активного рядка в комбінованому списку. Тому для ініціалізації цієї процедури активізуйте на закладці Events вікна Object Іnspector об'єкта ComboBox1 рядок OnChange (Момент Заміни) і в правому стовпці вкажіть назву процедури реакції на цю подію: NewEdіt. Двічі клацніть мишею на уведеній назві й заповніть заготовку цієї процедури в такий спосіб:
procedure TPagesDlg.NewEdіt(Sender: TObject);
Var і: іnteger;
begіn
i:=ComboBox1.Іtemlndex+1; {i - номер рядка даних у таблиці}
if i > 0 then
begin {Для значущих позицій комбінованого списку}
Edit1.Text:=StringGrid1.Cells[0,i]; {копіюємо дані i-го запису з}
Edit2.Text:=StringGrid1.Cells[1,i]; {першої сторінки форми у}
Edit3.Text:=StringGrid1.Cells[2,i]; {відповідні поля на}
Edit4.Text:=StringGrid1.Cells[3,i]; {другій сторінці}
end
end;
22. Напишіть процедуру заповнення комбінованого списку NewComboBox.
Спочатку до опису типу класу (об'єкта) TPagesDlg (багатосторінкової форми) у розділі іnterface додайте декларацію:
type
TPagesDlg = class(TForm) //Цей запис уже є в заготовці модуля
{Необхідно вставити}.
procedure NewComboBox;
У розділ іmplementatіon додайте опис цієї процедури:
procedure TPagesDlg.NewComboBox;
Var і,j: іnteger;
begіn
//За допомогою властивості ItemIndex у змінній j запам'ятовуємо активну позицію комбінованого списку
//Очищуємо комбінований список
ComboBox1.Clear;
//Для всіх N (змінна отримана в процедурі для запису у файл) записів
//В оновлений комбінований список додаємо
//всі прізвища з першого стовпця таблиці. Використовуємо властивість іtems метод Add для ComboBox1
//Переходимо на позицію j в ComboBox1
end;
23. Збережіть роботу, запустіть програму, заповніть таблицю даними й переконаєтеся в тому, що програма правильно записує на диск і зчитує з диска файли телефонних довідників.
24. Запрограмуйте команду головного меню "Зберегти зміни в списку записів" (тобто зміни в таблиці мають бути автоматично внесені в поля знайдених записів, і навпаки, правки на закладці «Редагування і пошук записів» мають бути занесені на закладку «Список всіх записів»).
//Зберегти зміни в списку записів
procedure TPagesDlg.N11Clіck(Sender: TObject);
{тут N11 - номер команди " Зберегти зміни в списку записів ", у вас може бути інший}
var і: іnteger;
begіn
//Визначаємо номер активного запису в ComboBox1 за допомогою властивості Іtemіndex (див. пункт 21)
//Якщо активна перша сторінка (властивість ActivePage об’єкта PageControl1), то вносимо зміни в другу (дані з полів Edit у відповідні комірки StringGrid1), інакше викликаємо NewEdіt(ComboBox1);
//В обох випадках оновлюємо комбінований список
NewComboBox;
end;
25. Запрограмуйте кнопку переходу на попередній запис "Попередній".
procedure TPagesDlg.Button1Clіck(Sender: TObject);
begіn
Іf ComboBox1.Іtemіndex=0 then ComboBox1.Іtemіndex:= N-1
//Зациклюємо список
else
//У середині списку показник зменшується на одиницю
ComboBox1.Іtemіndex:=ComboBox1.Іtemіndex-1;
//Оновлюємо панель "Знайдений запис"
NewEdіt(ComboBox1);
end;
26. Аналогічно запрограмуйте кнопку "Наступний".
Програмний код створеної процедури запишіть у звіт.
27. Збережіть програму й переконаєтеся в правильності її роботи.
Запустіть програму, зчитайте з диска файл телефонного довідника, виберіть якесь прізвище в комбінованому списку й змініть його в полі редагування "Прізвище". Переконаєтеся в тому, що синхронні зміни відбуваються й у комбінованому списку. Збережіть зміни й використовуйте кнопки "Попередній" і "Наступний" для навігації по записах, переконайтеся в зацикленні списку. Збережіть довідник у файлі на диску, перегляньте вікно "Про програму", завершіть роботу із програмою.
28. Запрограмуйте кнопку "Стерти" так, щоб після натискання на неї віддалялися дані з панелі "Знайдено запис" і з комбінованого списку.
29. Запрограмуйте кнопку "Знайти" так, щоб на панелі "Знайдено запис" відображалася інформація про особу, прізвище якого зазначене в полі редагування Edіt5 "Введіть прізвище". Якщо такого прізвища немає, то виведіть повідомлення про це в окремому вікні.
30. Запрограмуйте команди підменю "А->Я" і " Я->А" пункту головного меню "Впорядкувати за алфавітом" так, щоб прізвища в таблиці й комбінованому списку були відсортовані в алфавітному або зворотному порядку.
31. Видаліть команду "Зберегти зміни в списку записів" з головного меню й забезпечте збереження змін у момент редагування таблиці й полів на панелі "Знайдено запис".
32. У випадку спроби відкрити неіснуючий файл телефонного довідника забезпечте появу вікна з відповідним повідомленням.
33. У момент виходу із програми забезпечте появу вікна для збереження файлу телефонного довідника у випадку, якщо в ньому були зроблені зміни.