Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота 5.doc
Скачиваний:
1
Добавлен:
30.11.2018
Размер:
90.11 Кб
Скачать

Лабораторна робота 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;