- •Лабораторна робота 5
- •Хід роботи
- •20. Напишіть метод створення форми.
- •21. Напишіть метод заповнення полів редагування NewEdit.
- •22. Напишіть метод заповнення комбінованого списку NewComboBox.
- •23. Збережіть роботу, запустіть програму, заповніть таблицю даними і переконайтесь в тому, що програма правильно записує на диск і зчитує з диска файли телефонних довідників.
- •24. Запрограмуйте команду головного меню „Збережіть зміни в списку записів”.
- •25. Запрограмуйте кнопку переходу на попередій запис "Попередній".
- •26. Аналогічно запрограмуйте кнопку "Наступний".
- •27. Збережете програму і переконаєтеся в правильності її роботи.
- •Контрольні запитання
Лабораторна робота 5
Тема: Багатосторінковий блокнот, комбінований список. Створення нових вікон та стандартних діалогів. Робота з структурами.
Мета:Ознайомитися з новими об'єктами: багатосторінковим блокнотом (РаgeControl), сторінкою блокнота (ТаbSheet), комбінованим списком (ComboBox), діалоговим вікном (АboutBox), стандартними діалогами відкриття і збереження файлів (ОpenDialog i SaveDialog).
Завдання до роботи
Створити програму для роботи з Базою даних – телефонним довідником. Сформулювати в вигляді файла записів. В кожній записі виділені поля: прізвище і ім’я (рядок довжиною по 20 символів кожна), адрес і номер телефону (рядок довжиною 100 і 15 символів відповідно). Необхідно реалізувати наступні операції: створення і видалення запису, збереження і зчитування файлу записів з диска, редагування, пошук і сортування даних за алфавітом , перегляд записів і навігацію по базі.
Хід роботи
1.Завантажте середовище візуального програмування Borland C++ Builder та створіть новий проект.
2.Створіть нову форму з багатосторінковим блокнотом.
File => New...=>Other => Таbbed Pages => Ок.
3.Виділіть і видаліть клавішею Delete панель (Panel) із кнопками Ок, Саnсеl і Неlр у нижній частині відкритої форми.
4.Поміняйте заголовок форми з "Тabbed Notebook Dialog" на "Телефонний довідник" і поміняйте стиль границі вікна (BorderStyle) на bsSizeable (здатний змінювати розмір).
Для цього спочатку у вікні Object Inspector у списку компонентів поточної форми виберіть об'єкт PagesDlg (вікно форми з багатосторінковим блокнотом). Тільки тепер можна поміняти його заголовок і стиль.
5.Виділіть (клацнувши усередині сторінки мишею) і видаліть (Delete) третю сторінку блокнота ТаbSheet3.
Будьте уважні і не видаліть весь багатосторінковий блокнот - об'єкт РаgeControl1. У разі потреби Ви можете відмовитися від неправильної дії командою Edit => Undelete. Додати нову сторінку в блокнот можна командою New Page контекстного меню об'єкта РageControl1 (блокнот) чи ТаbShееt (сторінка блокнота).
6.Замініть заголовки (властивість Caption) першої і другої сторінок блокнота (об'єктів ТabSheet1 і ТabSheet2) на "Список усіх записів" і "Редагування і пошук записів" відповідно.
7.Заповніть обидві сторінки форми візуальними об'єктами так, як це показано на Рис. 7.1 і Рис. 7.2.
Для створення об'єкта Комбінований Список скористайтеся кнопкою (СomboBox) на закладці Standart палітри компонентів. Кнопки "Попередній" - "Наступний" називаються Button1 – Button4 відповідно. Очистіть поля властивості Text об'єктів Edit1 - Edit5 і СomboBox1. Установіть властивість Style об'єкта СomboBox1 у csDropDownList (випадаючий список). Задайте такі значення властивостей об'єкта StringGrid1:
Рис.1 Зображення другої закладки
Властивість |
Значення |
ColCount |
4 |
FixedCols |
0 |
RowCount |
100 |
FixedRows |
1 |
Options => goEditing |
True |
8. Збережіть виконану на даний момент форму у своїй папці.
9.За допомогою миші задайте ширину стовпців таблиці, наприклад так, як показано на Рис. 2.
Для цього мишею пересуньте границю між двома стовпцями в першому (сірому) рядку таблиці StringGrid1. Не допускайте появу горизонтальної смуги прокручування в таблиці.
10. Додайте на форму головне меню і введіть назви його команд, як показано на Рис.7.2.
Для того, щоб провести лінію-роздільник, між командами меню "Записати у файл" і "Кінець" створіть додатковий пункт із заголовком "-" (символ "мінус").
11. Створіть вікно форми "Про програму".
Додайте до проекту нове вікно форми типу Аbout bох (File => New... => Other => Аbout bох => Ok). Поміняйте тексти і заголовок форми, вказавши своє прізвище. Поміняйте зображення у вікні за своїм розсудом, змінивши властивість Picture об'єкта ProgramIcon.
12. Запрограмуйте Команду "Про програму" головного меню вікна "Телефонний довідник" так, щоб у момент її виконання на екрані з'являлося щойно спроектоване вікно.
Для цього під’єднайте файл заголовків об'єкта AboutBox, виконавши команду File => Uses Unit => About => Ok або запишіть самостійно #include "ABOUT.h".
У заготовку процедури обробки цієї команди введіть рядок для виклику методу Show (показати) об'єкта AboutBox:
AboutBox->Show();
Рис. 2 Зображення першої закладки
13. Запрограмуйте кнопку Ок вікна "Про програму".
Для цього поверніться до форми "Про програму" і в процедурі OkButtonClick кнопки Ок уведіть метод закриття активної форми:
Close();
14. Видаліть непотрібну порожню форму Form1 з проекту.
Для цього викличте менеджер проекту командою View=>Project Manager. Виділіть рядок зі значенням Form1.cpp і натисніть клавішу Dеlеtе. Не зберігайте цю форму (No). Закрийте вікно менеджера проекту.
15. Запрограмуйте команду Файл => Вихід.
16. Збережіть роботу і запустіть проект на виконання.
Переконайтеся в правильності роботи закладок, комбінованого списку, наявності можливості редагувати поля таблиці і переміщатися по них за допомогою смуги прокручування. Викличте вікно "Про програму" і закрийте його клавишією Ок. Закінчіть роботу командою Файл => Вихід.
17. Опишіть глобальні змінні і типи дані програми: тип запису телефонного довідника (info), файл записів (F), змінну типу info (r) і цілу змінну кількості записів (N).
struct info
{
char prizv [20];
char imja [20];
char adresa [100];
char tel [15];
}F, *r;
int N;
18. Добавте на форму два об’єкти – стандартні діалоги Windows для відкриття і збереження файлів.
Кнопки OpenDialog і SaveDialog знаходяться на закладці Dialogs панелі компонентів Borland C++ Builder. На Рис 1 та рис. 2 ці об’єкти знаходяться у правому верхньому куті форми.
19. Запрограмуйте функції відкриття і збереження файлів телефонного довідника (команди головного меню „Прочитати з файлу” і „Записати в файл”).
procedure TPageDlg.N3Click(Sender: Tobject); {тут N3 – номер команди „Прочитати з файлу”, у вас може бути інший номер}
var i : integer;
begin
{Виконання стандартного діалогу “Open file”}
if OpenDialog1.Execute then
begin
{F – назва обраного діалогом файлу
(властивості FileName об’єкта OpenDialog1)}
AssignFile(F, OpenDialog1, FileName);
Reset(F);
N := 0; {Читаємо з початку файлу}
{Зчитуємо всі записи з файлу}
while not eof(F) do
begin
{В змінну r зчитуємо даний запис}
Read(F, r);
{Прізвище – в перший стовпець таблиці}
StringGrid1Cells[0, N+1] := r.prizvushche;
{Ім’я – в другий стовпець таблиці}
StringGrid1Cells[1, N+1] := r.imja;
{Адрес – в третій стовпець таблиці}
StringGrid1Cells[2, N+1] := r.adres;
{Телефон – в четвертий стовпець таблиці}
StringGrid1Cells[3, N+1] := r.tel;
N := N + 1; {Збільшуємо загальне число записів N}
end;
CloseFile(F); {Закриваємо файл}
{Описана нижче процедура заповнює поля редагування
другої сторінки форми}
NewEdit(ComboBox1);
{Описана нижче процедура заповнює комбінований список
другої сторінки форми }
NewComboBox;
end
end;
procedure TpagesDlg.N4Click(Sender: TObject); {Тут N4 – номер команди “Записати в файл”, у вас можу бути інший номер}
var i : integer;
begin
if SaveDialog1.Execute then
begin
AssignFile(F, SaveDialog, FileName);
Rewrite(F);
for i:=1 to N do
begin
r:prizv:= StringGrid1.Cells[0, i];
r:imja := StringGrid1.Cells[1, i];
r:adresa := StringGrid1.Cells[2, i];
r:tel := StringGrid1.Cells[3, i];
Write(F, r);
end;
CloseFile(F);
end;