§ 5. Создание приложений

5.6. Создание приложения «Калькулятор»

Создание калькулятора начнем с конструирования формы. На ней нужно разместить: поле Edit для ввода/вывода чисел, 10 кнопок с цифрами, 4 кнопки с арифметическими действиями, кнопку «=» и кнопку «С» — очистить (пример 5.24).

При нажатии на кнопку с цифрой программа должна дописать эту цифру к числу в поле Edit. При нажатии на кнопку с арифметическим действием нужно запомнить число, которое в данный момент находится в поле Edit, и очистить поле для ввода второго числа. Числа будем хранить в двух переменных n1, n2 типа integer. Знак операции будем хранить в переменной znak типа char. Переменные описываются как глобальные. При нажатии на кнопку «=» выполняется арифметическое действие и выводится результат.

Для отображения кнопок можно использовать компонент BitBtn, тогда кнопки могут содержать рисунок на поверхности (например, изображения с цифрами). Свойство для размещения рисунка — Glyph.

Установить значение bsDialog для свойства BorderStyle формы. В этом случае граница формы не позволит менять ее размеры.

Коды процедур обработчиков приведены в примере 5.25.

Для каждой кнопки на форме нужно создать обработчик события OnClick.

Обработчики событий для всех цифровых кнопок будут идентичны.

Обработчики для кнопок арифметических действий будут отличаться только значением запоминаемой операции.

Основные вычисления происходят в обработчике кнопки «=». Преобразуем в число n2 значение поля Edit и выполняем арифметическую операцию в зависимости от значения переменной znak. После этого обнуляем переменные.

В обработчике кнопки «С» (от англ. clear — очистить) происходит обнуление переменных и очистка поля Edit.

Окно работающего приложения показано в примере 5.26.

Созданный калькулятор имеет большое количество ограничений в своей работе, поскольку рассчитан на вычисления только с натуральными числами.

Пример 5.24. Форма на этапе конструирования:

Пример 5.25. Обработчики событий:

//описание глобальных переменных

var n1, n2: integer;

    znak: char;

 

procedure TForm1.BitBtn10Click(Sender: TObject);

begin

  //приписывание цифры к числу

  Edit1.Text := Edit1.Text + '0';

end;

 

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

  //приписывание цифры к числу

  Edit1.Text := Edit1.Text + '1';

end;

Для остальных цифровых кнопок нужно изменить только '1' на соответствующую цифру.

procedure TForm1.BitBtn11Click(Sender: TObject);

begin

  n1 := StrToInt(Edit1.Text);

  //запоминание знака операции

  znak := '+';

  Edit1.Clear;

end;

Для остальных кнопок со знаками арифметических действий нужно изменить только '+' на соответствующий знак.

procedure TForm1.BitBtn15Click(Sender: TObject);

begin

  n2 := StrToInt(Edit1.Text);

  case znak of

    '+': Edit1.Text := IntToStr(n1 + n2);

    '-': Edit1.Text := IntToStr(n1 - n2);

    '*': Edit1.Text := IntToStr(n1 * n2);

    '/': Edit1.Text := IntToStr(n1 div n2);

  end;

  n1 := 0;

  n2 := 0;

  znak := ' ';

end;

 

procedure TForm1.BitBtn16Click(Sender: TObject);

begin

  Edit1.Clear;

  n1 := 0;

  n2 := 0;

   znak :=' ';

end;

Пример 5.26. Работающее приложение: