Лабораторная работа №2.
Создание простейшего приложения с использованием переключателей
Цель работы: Продолжение освоения использования стандартных компонент VCL.
Базовые элементы выбора и настройки параметров расположены на странице Standart палитры компонент Delphi. В проекте будем использовать следующие компоненты:
RadioGroup – группа для объектов RadioButton (см. ниже);

RadioButton – переключатели или радиокнопки, служат для выбора одной возможности из набора взаимоисключающих возможностей. Термин отражает сходство с набором кнопок выбора каналов радиоприемника. Эти кнопки обычно объединяют группой RadioGroup. Выбор кнопки отражает свойство Checked, свойство Alingment определяет положение поясняющей надписи относительно кнопки.
MainMenu – позволяет поместить главное меню в программу. При размещении на форме этот компонент выглядит как иконка. Создание меню включает три шага:
1) помещение MainMenu на форму;
2) вызов дизайнера меню через свойство Items в инспекторе объектов;
3) определение пунктов меню в дизайнере меню.
Задание 1: Составить проект перевода числа из десятичной системы счисления в двоичную или восьмериную, используя компоненты RadioGroup и RadioButton.
Установить на форме (см. рисунок 1) компонент RadioGroup, перетащив его на форму. В Object Inspektor надо поменять свойство Caption. Внутри компонента RadioGroup установить две компоненты RadioButton, установив соответствующие названия радиокнопок.
Поле ввода и командные кнопки создаются так же как и в лабораторной работе №1.
Результат выводится в поле Label4.Caption.
При нажатии кнопки Вычислить выполняется процедура:
Procedure TForm1.Button1Click(Sender: TObject);
var k, n,s, i:integer;
begin n:=StrToInt(Edit1.Text);
s:=0; i:=1;
if RadioButton1.Checked then k:=2 else k:=8;
while n>0 do
begin s:=s+(n mod k)* i;
i:=i*10;
n:=n div k
end;
|
end;
Где: StrToInt - функция, которая переводит строку в целочисленный тип,
IntToStr – функция, которая переводит целое число в строку,
RadioButton1.Checked – возвращает значение True, если выбрана первая радиокнопка,
RadioButton2.Checked - возвращает значение True, если выбрана вторая радиокнопка.
Внимание: При вводе числа надо предусмотреть, чтобы никакие другие символы не вводились, кроме цифровых.
Задание 2: Создать проект, который выполняет любые арифметические действия над любыми двумя числами. Использовать компонент MinMenu для выбора нужной операции.

Рисунок 2.
Разместите на форме (см. рисунок 2) две строки ввода с реакцией OnKeyPressed типа:
case key of
‘0’..’9’,’-‘,chr(8) :;
‘,’: if pos(‘,’,edit. text)<>0 then key:=chr(0);
chr(13): edit2.SetFocus
else key:=chr(0)
end;
Здесь допускается ввод только цифр и одной десятичной запятой. Для второй строки ввода смена фокуса при нажатии Enter не вводится.
Введите пять меток в качестве заголовков «введи 2 числа», «a=», «b=», «результат», а также пятую метку (Label5) без заголовка для вывода информации.
Поместите на форме компонент «главное меню»
Вызовите дизайнер меню через свойство Items в инспекторе объектов. Определите в дизайнере меню три пункта по горизонтали: «Вычисление», «Сброс», «Выход». В пункте «Вычисление» добавьте выпадающее меню из четырех пунктов – для суммы, разности, произведения и частного.
Введите в окне редактора в разделе implementation две универсальных процедуры – по считыванию информации из строк ввода и по выводу результата в поле вывода ( с именем edit3.text ):
procedure input(edit1,edit2:tEdit);
begin {ввод данных из полей редактирования}
a:=StrToFloat(edit1.Text);
{ функция StrToFloat – переводит строку в вещественное число}
b:=StrToFloat(edit2.Text);
end;
procedure output(edit3:tEdit);
begin {вывод результата}
edit3.text:=floatToStr(c);
{ функция floatToStr – переводит вещественное число в строку}
end;
При этом в описании глобальных переменных необходимо добавить три числа:
Var a, b,c:real;
Реакции расчетных пунктов меню на событие OnClick будут однотипными, различающимися лишь видом арифметической операции.
Пример для пункта «Деление»:
Begin input(edit1,edit2);
if b<>0 then begin c:=a/b; output(edit3) end
else
begin label5.font. color:=clRed;
label5.Caption:='некорректно!'
end;
end;
Пункт «Сброс» аналогичен ранее описанному:
Begin edit1.text:=' ';
edit2.Text:=' ';
edit3.Text:=' ';
edit1.SetFocus;
end;
Самый простой пункт меню «Выход» - это закрытие формы:
begin
form1.close
end;


