C++. C++ Builder. Пример создания и вызова новой формы из главной формы приложения




Пример создания и вызова новой формы из главной формы приложения в C++ Builder

Условие задачи

Разработать приложение, которое вычисляет объем призмы. Формула объема призмы следующая:

05_01_00_008_formula_где V – объем призмы, 05_01_00_008_formula2_– площадь основы, h – длина высоты призмы.

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

Выполнение

1. Запуск Borland C++ Builder. Создание проекта.

Запустить Borland C++ Builder.

Создать новый проект как «VCL Form Application«. Сохранить проект в произвольной папке. Пример запуска Borland C++ Builder и сохранения проекта подробно описан здесь.

Имя модуля главной формы оставить как «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_03r

Рис. 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_10r

Рис. 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 знака после запятой).

После этого можно запускать проект на выполнение и тестировать его работу.