008 – C++ Builder. Приклад створення та виклику нової форми з головної форми програми

Приклад створення та виклику нової форми з головної програми в C++ Builder

Умова задачі

Розробити програму, яка обчислює об’єм призми. Формула об’єму призми

05_01_00_008_formula_

де V – об’єм призми, 05_01_00_008_formula2_ – площа основи, h – довжина висоти.

Вивід результату організувати у вигляді окремого вікна. Для отримання вікна результату створити нову форму.

Виконання

1. Завантажити Borland C++ Builder.

Створити новий проект як “VCL Form Application“. Зберегти проект в довільній папці.

Ім’я модуля головоної форми залишити як “Unit1.cpp”. Ім’я модуля проекту залишити як “Project1.cbproj”.

 

2. Побудова головної форми додатку.

На даний момент маємо головну форму додатку з іменем “Form1”. Ім’я форми можна змінити в Object Inspector – властивість Name (рис. 1). Залишаємо все без змін.

05_01_00_008_01_

Рис. 1. Властивість Name головної форми додатку

З вкладки Standard розміщуємо на формі такі компоненти (рис. 2):

  • компонент типу TButton;
  • два компоненти типу TLabel;
  • два компоненти типу TEdit.

Розміщуємо компоненти так, як показано на рисунку 2.

05_01_00_008_02_

Рис. 2. Розміщення компонент на головній формі

У результаті створюються об’єкти-змінні з такими іменами: Label1, Label2, Edit1, Edit2, Button1.

З допомогою Object Inspector встановлюємо такі властивості компонент:

– у компоненті Label1 властивість Caption = “S = “;

– у компоненті Label2 властивість Caption = “h = “;

– у компоненті Edit1 властивість Text = “” (пустий рядок);

– у компоненті Edit2 властивість Text = “”;

– у компоненті Button1 властивість Caption = “Обчислити“.

Змінюємо також назву форми. Для цього потрібно виділити форму (компонент Form1) і у властивості Caption ввести текст “Об’єм призми“.

Після внесених змін та корегування розмірів компонент форма додатку має вигляд як показано на рисунку 3.

05_01_00_008_03u

Рис. 3. Головна форма додатку

3. Створення нової форми.

У новій формі має виводитись результат обчислення.

Нова форма буде викликатись після натиску на кнопці “Обчислити“.

Для створення нової форми викликається команда (рис. 4):

File -> New -> Form C++ Builder

05_01_00_008_04_

Рис. 4. Команда створення нової форми

У результаті відкриється вікно новоствореної форми. Новій формі відповідає об’єкт-змінна з іменем Form2 (рис. 5).

05_01_00_008_05_

Рис. 5. Новостворена форма

 

Після виклику команди збереження

File -> Save All

буде запропоновано зберегти файл модуля форми під іменем “Unit2.cpp“. Залишимо це ім’я без змін.

Крім того, буде створено файл “Unit2.dfm” в якому описується інформація про поточні параметри форми, а саме: розміри форми, колір фону та тексту, параметри шрифту форми, відносні координати лівого верхнього кута форми та інше.

4. Побудова нової форми Form2.
Розміщуємо на формі Form2 такі компоненти:

– компонент типу TLabel;

– компонент типу TButton.

У результаті буде створено два об’єкти (змінні) з іменами Label1 та Button1.

Також треба здійснити корегування розмірів форми з допомогою мишки.

У результаті форма Form2 матиме вигляд як показано на рисунку 6.

05_01_00_008_06_

Рис. 6. Новостворена форма з розміщеними компонентами

Здійснимо налаштування деяких параметрів форми Form2. Для цього спочатку виділимо форму Form2.

Наступним кроком є встановлення в Object Inspector таких властивостей форми Form2:

– властивість Caption = “Результат“;

– властивість BorderStyle = “bsDialog“. Після цього форма матиме вигляд діалогового вікна.



Додатково робимо налаштування компонент Label1 та Button1 форми Form2:

– у компоненті Label1 властивість Caption = “Результат“;

– у компоненті Button1 властивість Caption = “ОК“.

У результаті, форма матиме вигляд як показано на рисунку 7.

05_01_00_008_07ru

Рис. 7. Новостворена форма після налаштування

5. Програмування події кліку на кнопці “ОК” форми Form2.

Для того, щоб отримати результат повернення з форми Form2 та закрити вікно форми, спочатку потрібно викликати подію кліку на кнопці “ОК“.

Для цього потрібно виконати таку послідовність дій (рис. 8):

– виділити кнопку Button1 форми Form2;

– в Object Inspector перейти у вкладку “Events”;

– в списку подій знайти подію OnClick;

– здійснити подвійний клік мишкою у текстовому полі навпроти події OnClick.

05_01_00_008_08ru

Рис. 8. Виклик події OnClick

У результаті відкриється лістинг процедури обробки події:

void __fastcall TForm2::Button1Click(TObject *Sender)
{
 
}

Між фігурними дужками { } потрібно вписати код обробки події. Вписуємо наступний рядок коду:

ModalResult = mrOk;

Таким чином, процедура обробки події матиме вигляд:

void __fastcall TForm2::Button1Click(TObject *Sender)
{
  ModalResult = mrOk; 
}

У фрагменті коду використовується глобальна змінна форми ModalResult. Ця змінна відповідає за поведінку вікна форми. За замовчуванням значення змінної рівне нулю. Це означає, що вікно форми закрите. Якщо значення змінної ModalResult стає ненульовим, то відбувається закриття вікна форми з кодом повернення цього значення. У нашому випадку у змінну ModalResult заноситься значення глобальної константи mrOk. Це означає, що відбувається закриття вікна форми Form2 з кодом повернення mrOk.

Глобальна константа ModalResult може приймати й інші значення, наприклад mrAll, mrCancel, mrIgnore, mrNo, mrYes, mrRetry та інші.

 

6. Встановлення зв’язку між формами.

Для того, щоб викликати форму Form2 з форми Form1 потрібно здійснити підключення модуля “Unit2.cpp” (що відповідає формі Form2) у файлі “Unit1.cpp” модуля основної форми Form1.

Це здійснюється стандартним для C++ способом. У заголовочному файлі “Unit1.h” форми Form1 вводимо текст підключення модуля “Unit2.h“:

#include "Unit2.h"

Щоб перейти в текст модуля “Unit1.h” потрібно в Project Manager здійснити подвійний клік на назві “Unit1.h” (див. рис. 9).

05_01_00_008_09_

Рис. 9. Рядок підключення модуля “Unit2.h” до модуля “Unit1.h

 

7. Програмування розрахунку обчислення площі призми.

Для того щоб здійснити розрахунок площі призми, потрібно запрограмувати подію кліку на кнопці “Обчислити” форми Form1.

Для цього виконаємо такі операції:

– з допомогою Project Manager переходимо у вікно форми Form1 вибравши файл “Unit1.dfm” (рис. 10);

– викликаємо код обробки події кліку на кнопці “Обчислити” (див. п. 5.). Виклик коду обробки події здійснюється так само як і в п. 5;

– вводимо текст розрахунку об’єму призми.

05_01_00_008_10u

Рис. 10. Вибір файлу “Unit1.dfm” в Project Manager

Лістинг тексту обробки події кліку на кнопці “Обчислити” наступний.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 float s, h, v;
 s = StrToFloat(Edit1->Text); // зчитати площу основи
 h = StrToFloat(Edit2->Text); // зчитати висоту
 v = s * h; // розрахунок об’єму
 Form2->Label1->Caption = "Результат = " + FloatToStrF(v,ffFixed, 8,2);
 Form2->ShowModal(); // вивід форми з результатом
}

У фрагменті коду для перетворення з рядкового типу в дійсний тип використовується функція StrToFloat.

Для зворотного перетворення з дійсного типу в рядковий тип використовується функція FloatToStrF. Ця функція отримує вхідними значення дійсної величини v, тип формату виведення результату (ffFixed), ширину поля виведення (8 знаків) та точність виведення (2 знаки після коми).

Після цього можна запускати проект на виконання і тестувати його роботу.


Подібні теми: