Лабораторная работа №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;

Рисунок 1.

 
Label4.Caption:=IntToStr(s);

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;