72716

Изучение основных компонентов среды С++ Builder 6: Button, Edit, Label. Решение алгебраических задач

Лабораторная работа

Информатика, кибернетика и программирование

Из главной формы необходимо вызвать вторую форму нажатием кнопки мыши на поле главной формы. На поле второй формы должны быть расположены поле для ввода числа поле результата суммирования вводимых чисел поля ввода и вывода чисел должны иметь поясняющий текст.

Русский

2014-11-27

443.5 KB

5 чел.

Лабораторная работа №3

«Изучение основных компонентов среды С++ Builder 6: Button, Edit, Label. Решение алгебраических задач»

1. Цель работы

Приобретение навыков разработки  приложения  Windows на C++ Builder 6 [1] с использованием компонент TEdit (однострочный редактор текста) для ввода чисел, компоненты TButton (простая кнопка) и TLabel (поясняющий текст) [1-3], а также использование нескольких форм в приложении и изменение свойств компонент из приложения. Кроме того, необходимо познакомиться с основными свойствами, методами и событиями форм и используемых компонент.

 

2. Постановка задачи

Разработать приложение Windows со следующим cценарием работы. Из главной формы необходимо вызвать вторую форму нажатием кнопки мыши  на поле главной формы. На поле второй формы должны быть расположены  поле для ввода  числа, поле результата суммирования вводимых чисел, поля ввода и вывода чисел должны иметь поясняющий текст. Суммирование чисел должно производиться по нажатию кнопки, расположенной на второй форме.

3. Порядок выполнения работы

Ознакомтесь с принцыпами использования компонент TEdit (однострочный редактор текста) для ввода чисел, компоненты TButton (простая кнопка) и TLabel (поясняющий текст) при решении прикладных задач.

Шаг 1.  Создайте новое приложение, нажав на пункте  главного меню File/New Application.

Шаг 2. В Инспекторе объектов установите свойство Color (цвет фона формы) в значение  clAgua, в свойстве Caption (заголовок формы) можете установить любой текст, соответствующий заголовку формы:

Шаг 3. Теперь познакомьтесь с основными свойствами и событиями формы [1-3]. В описание к лабораторной работе приведены только те из них, которые имеет смысл изменять и использовать при первом знакомстве с компонентой.  Подробный перечень свойств и событий можно найти в файлах, которые прилагаются к описанию выполнения работы.

Основные свойства формы

Name  -  идентификатор, используемый для обращения к форме из приложения.

Caption – заголовок.

Width и Height – ширина и высота окна.

Left и Тор  - координата верхнего левого угла формы.

Position  - определяет размещение формы, например:

  •  poDefault - размер и положение формы подбираются  Windows;
  •  poDesigned - размер и положение задаются значениями свойств Left, Top, Width, Height, установленными во время разработки приложения.

Scaled - если значение true, то форма автоматически
масштабируется в зависимости от разрешающей способности монитора.

WindowState - определяет в каком виде показывается формы:

wsNormal - нормальный вид;

wsMinimized -форма свернута;

wsMaximized -форма развернута;

Color - цвет фона рабочей области формы. 

Icon - значок формы.

Visible - определяет будет ли видна форма на экране, если значение равно false, то форма будет невидимой, если значения true, то форма появится на экране.

Enabled -  если значение равно false, то форма не будет активной, но  на экрана будет показана.

Основные события формы

OnActivate -  пользователь переключается на форму.

OnClick - нажата кнопка мыши на форме.

OnClose - форма закрывается.

OnCreate - форма создается.

OnDestroy -формы разрушается.

OnMouseMove - курсор мыши перемещен.

OnMouseDown - кнопка мыши нажата.

OnMouseUp -  кнопка мыши отпущена (отжата).

OnPaint  - требуется перерисовка формы.

Шаг 4. Теперь создайте вторую форму. Для этого выберите пункт меню File/New Form. Появиться вторая форма. В Инспекторе объектов установите свойство Color  для второй формы в значение  clYellow. Свойства Caption  и Name можете оставить прежними.

Шаг 5. Перетащите на форму компонент TEdit (однострочный редактор текста) из вкладки Standart .

 

Шаг 6.  Познакомьтесь с основными свойствами,  методами и событиями компоненты TEdit [1-3].

Основные свойства компонента ТEdit

Autosize  - если равно true, то высота поля редактора
автоматически    подгоняется по высоте текста.

MaxLength -  максимальное количество символов, которое можно ввести, если оно равно 0, то можyj ввести текст неограниченной длины.

ReadOnly - если равно true, то нельзя изменить текст в редакторе, а только прочитать.

Textтекст в формате AnsiString, который выводится в поле компоненты.

Основные события компонента ТEdit

OnChange - произошло изменение текста.

OnMouseMove - перемещен курсор мыши.

OnClick  - нажата кнопка мыши.

OnKeyPress -  нажата клавиши.

Шаг 7. В Инспекторе объектов заполните свойство Text пробелами или любым  текстом, который должен появляться в редакторе при первом отображении компонента. Для того, чтобы придать компоненту объемный вид установите свойство Ctr3D в значение true. Свойством Color установите желаемый цвет поля компонента.

Шаг 8. Откройте заголовочный файл формы Uint2.h и убедитесь, что после метки __published  добавлена  строка
                                               

TEdit *Edit1;

Запомните, что Edit1 является указателем на созданный объект класса TEdit, является членом класса TForm2  и доступен каждой функции класса TForm2.

Шаг 9. Аналогичным образом перетащите на форму еще одну компоненту TEdit для  вывода результата. Установите необходимые значения свойств этого компонента. 

Откройте заголовочный файл формы Uint1.h и убедитесь, что после метки __published:   добавлена  строка   

TEdit *Edit2;

Запомните, что указатель Edit2 на объект класса TEdit соответствует полю вывода результата.

Шаг 10. Перетащите на форму компонент TLabel (поясняющий текст) из той же вкладки Standart и расположите компоненту рядом с полем ввода  числа. Компонента отображает на форме прямоугольную область статического текста, который нельзя редактировать. В Инспекторе объектов задайте свойству Caption значение “Число”, при этом переведите клавиатуру в режим русского шрифта:

Шаг 11. Познакомьтесь с основными свойствами и событиями компоненты TLabel [1-3].

Основные свойства компоненты TLabel:

Align - определяет выравнивания компонента в пределах рабочей области формы. Чтобы можно было изменять размер поля компоненты, оставьте его значение alNone.

Alignment -  определяет расположение текста в пределах компонента:

  •  taLeftJustify   - текст прижат к левой границе;
  •  taRightJustify - к правой границе;
  •  taCenter - расположен по центру.

Autosize - если значение равно true, то размеры компонента автоматически подгоняются по ширине и высоте текста.

Captionопределяет текст поясняющей надписи.

Основные события компонента TLabel:

OnMouseMove  -  происходит при перемещение курсора мыши.

OnMouseDown -  происходит при нажатии кнопки мыши.

OnClick             -  происходит при нажатии кнопки мышки.

OnDblClick  - происходит при двойном нажатии кнопки мышки.

Шаг 12. Аналогичным образом перетащите на форму еще одну компоненту TLabel  и расположите  рядом с полем вывода результата. В Инспекторе объектов введите  соответствующий текст свойству Caption для этих компонент:

Шаг 13.  Обратите внимание на заголовочный файл второй формы. В нем появились две новые строки:

TLabel * Lable1;

TLabel * Lable2;

Шаг 14.  Сохраните проект командой меню File/ Save Project as.

Шаг 15. Перетащите на форму компонент TButton (простая кнопка) из вкладки Standart и измените ее размеры:

Компонента создает прямоугольную кнопку с надписью. Если нажать на кнопку при выполнении приложения, то возникает событие OnClick, в ответ на которое можно выполнить определенное действие, т.е. вызвать функцию отклика.

Шаг 16. Познакомьтесь с основными свойствами,  методами и событиями компоненты TButton [1-3].

Основные свойства компонента TButton:

Cancel - если равно true, то кнопка срабатывает при нажатии <Esc>

Caption - текст, расположенный на кнопке.

Enabled - Если равно true, то кнопка срабатывает при нажатии <Enter>.

Font - определяет тип шрифта надписи на кнопке.

ModalResult - если задать свойству ненулевое значение, то это обеспечит завершение модального окна диалога при нажатии этой кнопки.

Основные события компонента TButton:

OnClick – происходит при нажатии кнопки мышки.

OnEnter – происходит при получении фокуса ввода.

Шаг 17. Откройте заголовочный файл формы Uint1.h и убедитесь, что после метки __published:   добавлена  строка TButton *Button1;

Шаг 18.  В Инспекторе объектов задайте свойству Caption значение “суммировать”:

Шаг 19.  Теперь необходимо определить функции отклика на соответствующие события. Начните с отклика на нажатие кнопки на второй форме. Для этого перейдите в Инспекторе объектов на вкладку Events (события):

И двойным щелчком левой кнопки мыши на поле  OnClick, соответствующего событию нажатия кнопки,  откройте      функцию отклика в файле Uint2.cpp:

Шаг 20.  Добавьте следующий код в тело функции отклика:

Шаг 21. Рассмотрите назначение и последовательность операторов:

  1.  Объявите  целую переменную статического типа

static int sum=0;

  1.  Объявите символьный массив

char s[80];

  1.  Объявите целую переменную

int a;

  1.  Введите из поля редактора текста с указателем Edit1 текстовую строку, которую необходимо преобразовать к целому числу. Для этого воспользуйтесь знакомой функцией ввода из символьной строки sscanf(), объявленнной в файле stdio.h

sscanf(Edit1->Text.c_str(),"%d",&a);

  1.  Обратите внимание на запись Edit1->Text.c_str().

Когда компонента перенесена на поле формы, то  динамически создается объект класса ТEdit1. Указатель на этот объект с именем Edit1 передается в приложение и объявляется в заголовочном файле формы Uint2.h после метки __published:    TEdit *Edit1;

Указатель Edit1 является член-данным класса TForm2 второй формы и доступен каждой функции класса TForm2, в том числе и функциям отклика. Поскольку объект класса ТEdit1 задается через указатель Edit1, то доступ к членам класса ТEdit1 должен осуществляться через операцию (->). Text является свойством класса ТEdit1, поэтому запись Edit1->Text означает чтение значения этого свойства.  Любые изменения текста в поле компоненты Edit1 приведут к изменению значения свойства Text.

Текст читается из поля редактора текста в формате AnsiString. Для того, чтобы его преобразовать к формату обычной символьной строки, необходимо использовать функцию c_str(). Таким образом, запись Edit1->Text.c_str() соответствует значению свойства Text в  формате обычной символьной строки.

  1.  Найдите сумму

    sum=sum+a;

  1.  Выведите сумму в символьную строку s

    sprintf(s,"%d", sum);

  1.  Присвой те значение символьной строки свойству Text

    Edit2->Text = s;

Внимание! Не забудьте подключить знакомый файл  stdio.h:

 

Шаг 22. Обратите внимание на то, что объявление функции Button1Click()

void __fastcall Button1Click(TObject *Sender);

вставлено в описание класса TForm1 автоматически.

Шаг 23. Перейдите к первой форме и добавьте обработчик события OnClick (нажатие любой кнопки мыши). Для этого в Инспекторе объектов щелкните мышью на  вкладке Events, а затем на правом поле события  OnClick:

Откликом на событие должен быть показ второй формы. Для этого нужно вызвать метод формы Show(), если форму необходимо показать  немодально, или ShowModal(), если – модально.  Добавьте  вызов второй формы, как

Form2->Show();

Шаг 24. Теперь необходимо подключить вторую форму к первой. Для этого необходимо подключить заголовочный файл второй формы к файлу Uint1.cpp первой формы. Это можно сделать вручную, добавив строку

#include "Uint2.h"

Кроме того, подключить форму Form2 к  форме Form1 можно  командой главного меню File | Include Unit Hdr... При этом окно файла  Uint1.cpp  формы Form1 в редакторе кода должно быть активным.  В появившемся диалоговом окне нужно выбрать заголовочный файл Uint2.h, соответствующий подключаемой форме.

В файле Uint1.cpp автоматически добавится необходимая строка:  

#include "Uint2.h"

Шаг 25. Теперь для первой формы добавьте обработчик события OnDestroy, соответствующий  закрытию главной формы, а, следовательно, и закрытию приложения.

Для корректного закрытия приложения необходимо вызвать функцию Terminate() класса ТАpplication.  Для этого в функцию отклика добавьте строку:  

Application->Terminate();

Шаг  26. Сохраните проект и запустите приложение на выполнение. Вы увидите главную форму приложения. Щелкните кнопкой мыши на поле формы, чтобы реализовать сценарий работы с приложением. Появится вторая форма приложения. Наберите нужное число, например, 25 в поле первого редактора текста и щелкните мышью на поле кнопки:

Шаг  27.  Попробуйте изменять значения свойств из приложения. Например, измените цвет поля «Результат». Это можно сделать в конструкторе второй формы, добавив строку

Edit2->Color=clGreen;

Шаг 28. Запустите приложение на выполнение и, щелкнув мышью на поле первой формы, получите измененную вторую форму:

Шаг 28. Закройте приложение и  для компоненты Edit2 второй формы установите свойство Visible в значение false,

т.е. компонент Edit2 должен быть невидимым при появлении второй формы. Запустите приложение на выполнение и покажите вторую форму, на которой компонент Edit2 не будет показан:

Шаг 29. Закройте приложение и измените отклик на нажатие кнопки так, чтобы компонента Edit2 становилась видимой и в ее поле результат появляется только тогда, когда в поле Edit1 набрано число,  большее 10. Запустите приложение на выполнение. Если число больше 10, например, 25, то появится компонента Edit2 c результатом. Если число меньше 10, то  компонента Edit2 станет опять невидимой:

Шаг 30. Добавьте две строки в код функции отклика на нажатие кнопки так, чтобы изменялся шрифт и размер надписи на кнопке, если число больше 10:

Button1->Font->Name="System";

и восстанавливался, если число будет меньше 10:

Button1->Font->Name="MS Sans Serif";

Окончательно  функция отклика будет такой:

//-------------------------------------------------------------------

void __fastcall TForm2::Button1Click(TObject *Sender)

{

  static int sum = 0;

  char s[80];

 int a;

sscanf (Edit1->Text.c_str(),"%d",&a);

 sum=sum+a;

 if (a >= 10)

{

    Edit2->Visible = true ;

    Button1->Font->Name="System";

}

   else

    {

      Edit2->Visible = false;

      Button1->Font->Name="System";

    }

sprintf (s,"%d",sum);

Edit2->Text = s;

}

//-------------------------------------------------------------------

Шаг 31.  Запустите приложение на выполнение.  Если число больше 10,  то шрифт  изменится. Если число меньше 10, то шрифт надписи на кнопке восстанавливается. Если ввести значение 7, то результат не появится, но шрифт надписи на кнопке изменится:

4. Задания к лабораторной работе

На основе разобранного примера создайте прикладной программный продукт, реализующий решение следующей математической задачи

Варианты заданий

Найти решение данных задач:

1)     

2)

3)

4)

5)

6)

7)

8)  

9)

10)

11)

12)

13)

14) Выполнить сложение вычитание комплексных чисел Z1 и Z2

15) Перевести комплексное число Z=a+ib, заданное в алгебраической форме в тригонометрическую и показательную формы

Примечание: Комплексное число в тригонометрической форме:

где

Комплексное число в показательной форме:

Замечания:

Для ввода значений параметров ai,bi,ci и вывода результата используйте компоненты TEdit. Для пояснеий используйте компоненты TLabel.

5. Содержание отчета по лабораторной работе

  1.  Файлы проекта.
  2.  Текстовый файл с  нумерацией операторов и пояснениями к ним.

6. Контрольные вопросы

  1.  Назовите основные свойства и события компонент TEdit, TButton, TLable.
  2.  Как изменить размер компоненты TEdit при выполнении приложения?
  3.  Как вызвать одну форму из другой при выполнении приложения?
  4.  Как сделать компоненту невидимой при визуальном проектировании формы?
  5.  Как сделать компоненту невидимой при выполнении приложения?
  6.  Как завершить приложение?
  7.  Как изменить цвет компоненты  при выполнении приложения?
  8.  Как подключить одну форму к другой?
  9.  Какая форма является главной?
  10.  Как закрыть модальную форму?

13

PAGE  10


 

А также другие работы, которые могут Вас заинтересовать

12732. Кэш или сверхоперативная память 30 KB
  Кэш или сверхоперативная память очень быстрое ЗУ небольшого объёма которое используется при обмене данными между микропроцессором и оперативной памятью для компенсации разницы в скорости обработки информации процессором и несколько менее быстродействующей операти
12733. Работа с большими документами в Microsoft Office Word 2007 223 KB
  Лабораторная работаТема: Работа с большими документами в Microsoft Office Word 2007 Цель работы: Научиться работать со стилями текста колонтитулами создавать оглавление и указатель оформлять документ используя макросы. Задание: В свою папку скопируйте файл Основы HTML. ...
12734. Выполнение расчетов в Microsoft Office Excel 2007 83 KB
  Лабораторная работаТема: Выполнение расчетов в Microsoft Office Excel 2007 Цель работы: Научиться создавать расчетные таблицы и выполнять расчеты в Microsoft Office Excel 2007. Упражнение 1. Построение расчетной таблицы простейшие вычисления Откройте Microsoft Excel. На Листе 1 создайт
12735. Работа со стандартными функциями в Microsoft Office Excel 2007 125.5 KB
  Лабораторная работа Тема: Работа со стандартными функциями в Microsoft Office Excel 2007 Цель работы: Научиться работать со стандартными функциями СЧЁТЕСЛИ СУММЕСЛИ ЕСЛИ в Microsoft Office Excel 2007. Задание: В MS Office Excel 2007 создайте расчетную таблицу. Выполните расчеты используя станд
12736. Разработка реляционной базы данных 603.98 KB
  Лабораторная работа №5 Тема: Разработка реляционной базы данных Цели работы: Изучить возможности СУБД Microsoft Access 2007. Научиться создавать многотабличную реляционную базу данных обеспечивающую хранение различных видов данных. Разрабатывать интерфейс пользователя баз
12737. Подготовка презентации в Microsoft PowerPoint 3.8 MB
  Лабораторная работа Тема: Подготовка презентации в Microsoft PowerPoint Цель работы: Научиться разрабатывать мультимедийную презентацию содержащую различные виды представления информации навигацию по представленному материалу а также анимацию отдельных объектов и пере
12738. Выполнение расчетов с использованием пакета символьной математики MathCAD 714.2 KB
  Лабораторная работа Тема: Выполнение расчетов с использованием пакета символьной математики MathCAD Цель работы: изучить возможности пакета символьной математики MathCAD в области вычисления математических выражений использования при расчетах переменных величин различн...
12739. Создание и обработка векторной графики 416.27 KB
  Лабораторная работа №2Тема: Создание и обработка векторной графики Цель работы: Изучить возможности графического редактора CorelDRAW предназначенного для создания и обработки векторной графики. Научиться создавать изображения на основе примитивов выполнять заливку изо...
12740. Создание и обработка растровой графики 89.03 KB
  Лабораторная работа Тема: Создание и обработка растровой графики Цель работы: Изучить основные возможности графического редактора Adobe Photoshop CS5 предназначенного для создания и обработки растровых изображений. Научиться пользоваться инструментами рисования и слоями д...