Как сделать калькулятор в Delphi

Мои работы6 минут на чтение

Калькулятор — классическое упражнение для знакомства с визуальным программированием в Delphi: он задействует и компоненты VCL, и обработку событий, и базовую логику разбора введённых данных. Разберём, как собрать простой калькулятор на четыре действия.

Шаг 1. Интерфейс

На форму добавляется поле ввода (TEdit) для отображения текущего значения и набор кнопок (TButton) — цифры от 0 до 9, кнопки операций (+, −, ×, ÷), кнопка «=» и кнопка очистки. Для аккуратного расположения кнопок удобно использовать TGridPanel или просто выставить координаты вручную в Object Inspector.

Шаг 2. Хранение состояния

Калькулятору нужно где-то хранить промежуточный результат и выбранную операцию между нажатиями кнопок. Для этого заводятся переменные уровня формы:

var
  FValue: Double;
  FOperation: Char;
  FNewInput: Boolean;

FValue хранит накопленное значение, FOperation — текущую операцию, а FNewInput — флаг, что следующий ввод цифры должен начать новое число, а не дописываться к старому.

Шаг 3. Обработка цифр

Для всех кнопок с цифрами можно назначить один общий обработчик OnClick и определять нажатую цифру по надписи на кнопке (Caption отправителя события Sender):

procedure TForm1.DigitClick(Sender: TObject);
begin
  if FNewInput then
  begin
    EditResult.Text := '';
    FNewInput := False;
  end;
  EditResult.Text := EditResult.Text + (Sender as TButton).Caption;
end;

Шаг 4. Обработка операций и знака «=»

При нажатии на операцию текущее значение поля ввода сохраняется в FValue, операция запоминается в FOperation, а флаг FNewInput выставляется в True, чтобы следующий ввод начинал новое число. При нажатии «=» выполняется вычисление на основе FOperation и обоих чисел, а результат выводится обратно в поле ввода.

Что можно добавить дальше

  • Обработку деления на ноль с выводом сообщения об ошибке;
  • Поддержку дробных чисел и кнопку с точкой/запятой;
  • Клавиатурный ввод через обработку OnKeyPress формы;
  • Историю вычислений в отдельном списке.

Несмотря на простоту, именно на таких учебных проектах удобнее всего разобраться, как VCL-компоненты, события и обычный процедурный код работают вместе в одном приложении.