
Метода(c++)
.pdf
1.Создать новый проект, в форме разместить два компонента Edit, четыре компонента Label, четыре кнопки. Настроить форму, как показано на рис. 9. Цветовую гамму, размер шрифта и имена для компонентов Label, Edit и Button выбрать самостоятельно.
2.Для кнопки с надписью «+» перейти в обработчик события Click и самостоятельно набрать код, аналогичный приведенному в примере к теоретиче-
Рис. 9. Вид окна приложения
ским сведениям, но с учетом того, что в компоненты Edit пользователь будет вводить вещественные числа.
3.Запустить проект, предварительно сохранив его с именем MyCalc. Имя модуля (формы) – Form1.
4.Проверить правильность работы программы.
5.Ввести в качестве любого операнда какое-либо число с пробелом (слово, число «через точку») и посмотреть на реакцию программы при нажатии на кнопку с надписью «+».
6.Запустить приложение из любого файлового менеджера, вновь ввести некорректное значение операнда и, нажав кнопку «+», посмотреть на реакцию программы.
7.Добавить обработчики событий для кнопок «–», « », «/». Запустить приложение и убедиться в правильности его работы.
8.Для метки «Результат расчета» установить выравнивание по правому краю.
9.Изменить обработчик события Click для кнопки «+», набрав перед выводом результата сложения на форму строку:
<ИмяМетки> –> Caption = ”Результат сложения: ”;
50

10.Самостоятельно изменить обработчики событий для других кнопок аналогичным образом.
11.Запусить проект, проверить правильность его работы.
Краткие теоретические сведения. |
|
|
|
||
XV. Компонент Memo |
|
|
|
|
|
Это |
многострочный |
редактор |
текста, |
который |
удобно |
использовать также для вывода результатов работы программы, если это необходимо сделать в несколько строк. Свойства компонента представлены в табл. 11.
Таблица 11
|
Название |
|
|
|
|
|
|
Смысл |
|
|
|
|
|
|
|
свойства |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
ImeMode |
|
возможность |
|
использования |
редакторов способа |
ввода |
|
||||||
|
|
|
(Input |
Method |
Editor, |
IME). |
Такие |
|
редакторы |
|
||||
|
ImeName |
|
|
|
||||||||||
|
|
|
позволяют |
|
приспособить |
стандартную |
|
раскладку |
|
|||||
|
|
|
клавиатуры для символьных языков для ввода |
|
||||||||||
|
|
|
нестандартных символов (иероглифов и т. д.). |
|
||||||||||
|
|
|
Редакторы |
|
IMЕ |
представляют |
собой |
специально |
|
|||||
|
|
|
устанавливаемое в операционной системе программное |
|
||||||||||
|
|
|
обеспечение (ПО). Имя такого редактора задается в |
|
||||||||||
|
|
|
свойстве |
|
|
ImeName. |
Режим |
работы |
|
редактора |
|
|||
|
|
|
определяется свойством ImeMode. |
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
||||||
|
Lines |
|
Содержит |
информацию, |
выводимую в |
компоненте. |
|
|||||||
|
|
|
Информация представлена в виде массива строк. |
|
|
|||||||||
|
|
|
Для очистки массива строк используется метод |
|
|
|||||||||
|
|
|
<ИмяКомпонента> –> Clear(); |
|
|
|
|
|
||||||
|
|
|
Для добавления новой строки используется метод |
|
||||||||||
|
|
|
<ИмяКомпонента> –>Lines–>Add(Str); |
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|||||
|
ScrollBars |
|
Определяет |
|
наличие |
полос |
прокрутки |
внутри |
|
|||||
|
|
|
компонента. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Возможные значения: |
|
|
|
|
|
|
|
||||
|
|
|
ssBoth |
|
|
Отображаются |
и |
вертикальная, |
|
|||||
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
горизонтальная |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
||||||||
|
|
|
ssHorizon- |
|
Отображается только горизонтальная |
|
||||||||
|
|
|
tal |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
ssNone |
|
|
Не отображается ни вертикальная, |
|
|||||||
|
|
|
|
|
|
горизонтальная |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|||||||
|
|
|
ssVertical |
|
Отображается только вертикальная |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|||||
|
WantReturns |
|
В режиме |
ввода, определяет, |
допустимо |
ли |
при |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51

нажатии Enter добавлять новую строку. Возможные значения:
True |
Значение по умолчанию. Разрешено добавление |
|
строки текста при нажатии клавиши Enter, |
|
курсор находится внутри компонента |
|
|
Fals |
Нажатие клавиши Enter, когда курсор нахо |
eвнутри компонента приводит к возникновению со
Change
WantTabs Определяет режим функционирования клавиши Tab, когда пользователь вводит текст в элементе управления. Возможные значения:
|
|
|
Таблиц 11 (продолжение) |
|
|
|
|
|
|
|
1 |
|
2 |
|
|
|
|
|
|
1 |
|
True |
Клавиша Tab функционирует стандартным образом |
|
|
|
|
вводе текста (сдвигает позицию курсора на зна |
|
|
|
|
табуляции вправо) |
|
|
|
|
|
|
|
|
Fals |
Значение по умолчанию. Клавиша Tab функционир |
eкачестве средства перемещения фокуса на фор одного элемента управления на другой.
Упражнение 6. Работа с компонентом Memo.
Задача: Составить программу вычисления арифметического выражения для заданных значений x, y, z :
Окно программы должно иметь вид, представленный на рис. 10.
Рис. 10. Вид окна приложения
52
Ход решения:
1.Создать новый проект с именем MyMemo.
2.Оформить окно формы, заменив заголовок Form1 на нужный текст
(свойство Caption).
3.Поместить на форму компоненты Label, задав соответствующие значения в свойстве Caption, установить для них шрифты жирного начертания.
4.Поместить на форму компоненты для ввода исходных данных (Edit), выровнять их по верхнему краю; их самих и соответствующие им метки – по середине.
5.Поместить на форму компонент Memo; запретить редактирование его строк, разрешить появление обеих полос прокрутки.
6.Поместить на форму кнопку (Button), оформить ее внешний вид.
7.Перейти в код модуля, и после строки #include <vcl.h> набрать строку
#include <math.h>
Цель набранной строки – подключение модуля встроенных математических функций.
8. Перейти в обработчик события Click для кнопки, в котором указать следующий код:
double x, y, z, a, b ,c, rez; //х, у, z – исходные данные
//а, b, с – вспомогательные переменные; //rez – результат вычисления*/
//Ниже должно быть три строки, обеспечивающие считывание исходных данных и преобразование из типа-строка в тип-вещественное число. Написать самостоятельно. Имена переменных – см. выше.
…
…
…
a= pow(tan(x+y),2);//расчет квадрата тангенса суммы
b= exp(y-z);//расчет экспоненты
c= sqrt(cos(x*x)+sin(z*z));//расчет квадратного корня rez = a-b*c;//общий итог
//вывод результата:
Memo1->Lines->Add("При х="+FloatToStr(x)+";y="+FloatToStr(y)+";z="+FloatToStr(z));
Memo1->Lines->Add("Результат = "+FloatToStr(rez));
9. Запустить проект и проверить его работоспособность.
53
10. Перейти в обработчик события Create для формы. Указать в нем следующий код:
Edit1->Text = "3,4";
Edit2->Text = "7,4e-2";
Edit3->Text = "1,943e2";
Memo1->Clear();
Memo1->Lines->Add("Лабораторная работа № 1");
11. Запустить проект, отследить появившиеся изменения.
Содержание отчета:
1.Титульный лист
2.Цель работы
3.Краткие теоретические сведения (список используемых операторов, их цель, синтаксис, формат и проч.)
4.Коды модулей С++
5.Копии форм и сведения о свойствах компонентов.
6.Копии экрана с примерами работы программ
7.Схемы алгоритмов программ.
8.Выводы по работе.
Контрольные вопросы
1.Перечислите этапы создания приложения с оконным интерфейсом.
2.Что такое форма?
3.Что такое модуль?
4.Каким образом и с какой целью можно открыть окно Project Manager?
5.Каким образом и с какой целью можно открыть окно Object Inspector?
6.Каким образом и с какой целью можно переключаться между модулем и формой?
7.Укажите файловых состав приложения с оконным интерфейсом. Что изменилось в этом составе по сравнению с консольным приложением?
8.Какая классификация компонентов, использующихся для разработки приложений с оконным интерфейсом Вам известна?
9.Предложите способ, согласно которому, не знающий пользователь смог бы определить, какой из компонентов является визуальным, а какой – нет.
10.Как разместить нужный компонент на форме?
54
11.Как выделить группу компонентов на форме? Для каких целей это может понадобиться?
12.Как удалить элемент(ы) интерфейса с формы?
13.Каким образом можно выровнять компоненты интерфейса на форме?
14.Что такое свойства элементов интерфейса?
15.Каким образом можно установить один и тот же размер компонентов интерфейса на форме?
16.Какие вкладки и с какой целью содержит окно Object Inspector?
17.В каких режимах допустимо изменение свойств компонентов?
18.Как в режиме проектирования формы можно изменить свойства компонентов?
19.Как в окне Object Inspector отличить простое свойство от сложного?
20.Как вводить значения свойств компонентов в окне Object Inspector?
21.Перечислите и поясните важнейшие свойства визуальных компонентов.
22.Перечислите и поясните специфические свойства компонента Label.
23.Перечислите и поясните специфические свойства компонента Edit.
24.Перечислите и поясните специфические свойства компонента Button.
25.Поясните термин «событие»
26.Где можно просмотреть список событий, на которые может реагировать тот или иной компонент?
27.Объясните, в какие моменты времени возникают события Click, DBLClick, Change.
28.Какие действия необходимо выполнить, чтобы перейти в режим программирования обработчика нужного события?
29.Каким образом можно менять/устанавливать свойства компонентов в процессе выполнения программы?
30.Какие компоненты используются для организации ввода/вывода данных, необходимых для реализации линейного вычислительного процесса? Перечислите и объясните их свойства и события.
31.Что такое тип данных?
32.Что такое преобразование типов данных?
33.Какие функции преобразования типов данных Вам известны? Приведите их синтаксис и принцип использования.
34.Какой компонент может использоваться для многострочного
ввода/вывода текста? Перечислите и поясните его свойства и события.
55
56

ЛАБОРАТОРНАЯ РАБОТА №7 ПРОГРАММИРОВАНИЕ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА.
ОПЕРАТОРЫ ВЕТВЛЕНИЯ, ЦИКЛА. КОМПОНЕНТЫ CHECKBOX, RADIOBUTTON, RADIOBUTTON,
PANEL, GROUPBOX, BEVEL, SPINEDIT, STRINGGRID.
ДАТЧИК СЛУЧАЙНЫХ ЧИСЕЛ. РАБОТА С МАССИВАМИ.
Цель работы: освоение визуальных компонентов, необходимых для реализаций алгоритмов ветвления и циклических алгоритмов. Закрепление навыков программирования ветвящихся и циклических структур, использования датчика случайных чисел.
Краткие теоретические сведения:
I. Компонент CheckBox (флажок)
Используется для включения/выключения опций. |
Основные |
|||||||||||||
свойства компонента приведены в табл. 12. |
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 12 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Название |
|
|
|
|
|
|
|
Смысл |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
Checked |
|
Определяет, установлен флажок или нет. |
|
|
|
|||||||||
|
|
Возможные значения: |
|
|
|
|
|
|||||||
|
|
True |
|
Флажок установлен |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
False |
|
Флажок снят |
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
State |
|
Регулирует |
|
состояние флажка, если разрешено |
||||||||||
|
|
использование трех его состояний. Возможные |
||||||||||||
|
|
значения: |
|
|
|
|
|
|
|
|
|
|
||
|
|
cbChecked |
|
Флажок установлен («отмечено) |
||||||||||
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|||||
|
|
cbUnChecked |
|
Флажок снят («не отмечено) |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
||||||
|
|
cbGrayed |
|
Состояние флажка не определено |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
Связь между Checked и State |
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|||||||
|
|
Значение State |
|
Значение Checked |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
cbChecked |
|
|
|
True |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
cbUnChecked |
|
|
|
False |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
cbGrayed |
|
|
|
False |
|
|
|
|
|
|||
|
|
|
|
|
|
|||||||||
AllowGrayed |
|
Разрешает/запрещает третье состояние флажка |
||||||||||||
|
|
Возможные значения |
|
|
|
|
|
|||||||
|
|
True |
|
Разрешена |
установка |
третьего |
состояния |
|||||||
|
|
|
||||||||||||
|
|
|
|
флажка |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
||||||
|
|
False |
|
Запрещена |
установка |
третьего |
состояния |
|||||||
|
|
|
|
флажка |
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|||
Color |
|
Цвет фона флажка |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57

Важнейшим событием компонента является событие OnClick, которое возникает при изменении состояния флажка (из установленного в снятый или из снятого в установленный).
II.Компонент RadioButton (радиокнопка, переключатель)
Этот компонент должен использоваться в группе, где существует
не менее двух экземпляров RadioButton. В любое время можно выбрать только один RadioButton данной группы. Выбор переключателя в группе снимает выделение с выбранного в данный момент переключателя в этой группе.
Под группой понимается несколько компонент RadioButton, находящихся в одном контейнере (панель Panel, GroupBox или форма)
Используются для выбора пользователем одной из нескольких взаимоисключающих альтернатив.
Свойства компонента представлены в табл. 13.
Таблица 13
Название |
|
|
|
|
Смысл |
|
|
|
|||
Checked |
|
Определяет, выбрана радиокнопка или нет. |
|||
|
|
Возможные значения: |
|||
|
|
True |
|
Выбрана |
|
|
|
|
|||
|
|
|
|
|
|
|
|
False |
Не выбрана |
||
|
|
|
|
|
|
Color |
|
Цвет фона радиокнопки |
|||
|
|
|
|
|
|
Важнейшим |
событием является событие OnClick, полностью |
идентичное одноименному событию компонента CheckBox.
Упражнение 1. Обзоp CheckBox и RadioButton
1.Создать новый проект. Имя файла формы – FrmCheckBox, имя файла проекта – PrCheckBox.
2.Разместить на форме компоненты, как показано на рис. 11.
58

Рис. 11. Вид формы для проекта PrCheckBox.
3.Самостоятельно написать программный код для кнопки «Расчет». Учесть, что аргумент функции может быть дробным, а результат работы нужно сохранить в переменной res.
4.Проверить работоспособность программы.
5.Добавить на форму компонент CheckBox. Свойство Caption установить в «Модуль», свойство Name – в «cbxModul».
6.Изменить обработчик нажатия кнопки «Расчет» следующим образом:
…//код, набранный в п. 3, но без вывода результат} if (cbxModul.Checked) {res = abs(res);}
…//вывод результата
7.Сделать так, чтобы при смене состояния флажка вместо «Функция: у = 1
– х2» отображалось бы «Функция: у = |1 – х2|» или «Функция: у = 1 – х2» в зависимости от состояния флажка. Один из вариантов решения:
a.Добавить на форму два компонента label, свойства Caption которых установить в «|». Имена компонентов – lbl1 и lbl2 соответственно. Тип шрифта – Times New Roman; эффекты – те же, что и у компонента, в котором выводится функция, но без эффекта курсива.
b.Установить для метки Label2 свойство Transparent в True
c.Разместить компоненты lbl1 и lbl2 так, как показано на рис. 12.
lbl
Lb
Рис. 12. Места lbl1 и lbl2.
59