unit Unit1;

{$mode objfpc}{$H+}
interface

uses
  SysUtils, Forms, Dialogs, Menus, StdCtrls, Buttons;

type
  { TForm1 }
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn10: TBitBtn;
    BitBtn11: TBitBtn;
    BitBtn12: TBitBtn;
    BitBtn13: TBitBtn;
    BitBtn14: TBitBtn;
    BitBtn15: TBitBtn;
    BitBtn16: TBitBtn;
    BitBtn17: TBitBtn;
    BitBtn18: TBitBtn;
    BitBtn19: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn20: TBitBtn;
    BitBtn21: TBitBtn;
    BitBtn22: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    BitBtn8: TBitBtn;
    BitBtn9: TBitBtn;
    Edit1: TEdit;
    MainMenu1: TMainMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    procedure BitBtn10Click(Sender: TObject);
    procedure BitBtn11Click(Sender: TObject);
    procedure BitBtn12Click(Sender: TObject);
    procedure BitBtn13Click(Sender: TObject);
    procedure BitBtn14Click(Sender: TObject);
    procedure BitBtn15Click(Sender: TObject);
    procedure BitBtn16Click(Sender: TObject);
    procedure BitBtn17Click(Sender: TObject);
    procedure BitBtn18Click(Sender: TObject);
    procedure BitBtn19Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn20Click(Sender: TObject);
    procedure BitBtn21Click(Sender: TObject);
    procedure BitBtn22Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
    procedure BitBtn8Click(Sender: TObject);
    procedure BitBtn9Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure MenuItem1Click(Sender: TObject);
    procedure MenuItem2Click(Sender: TObject);
  private
  public
  end;


var
  Form1: TForm1;
  i, p, r: real;
  mode: integer;

implementation

{$R *.lfm}
{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  // fsdgergergfgfd
end;

procedure TForm1.BitBtn1Click(Sender: TObject); // 1
begin
  Edit1.Text := Edit1.Text + '1';
end;

procedure TForm1.BitBtn20Click(Sender: TObject); // =
begin
  case mode of
    1:
    begin
      p := StrToFloat(edit1.Text);
      r := i + p;
      edit1.Text := FloatToStr(r);
    end;
    2:
    begin
      p := StrToFloat(edit1.Text);
      r := i - p;
      edit1.Text := FloatToStr(r);
    end;
    3:
    begin
      p := StrToFloat(edit1.Text);
      r := i * p;
      edit1.Text := FloatToStr(r);
    end;
    4:
    begin
      p := StrToFloat(edit1.Text);
      if p <> 0 then
      begin
        r := i + p;
        edit1.Text := FloatToStr(r);
      end
      else
        edit1.Text := 'Деление на ноль запрещено';
    end;
  end;
end;

procedure TForm1.BitBtn21Click(Sender: TObject); // sqrt
begin
  if StrToFloat(edit1.Text) < 0 then
  begin
    edit1.Text := 'Недопустимый аргумент функции!';
  end
  else
  begin
    i := StrToFloat(edit1.Text);
    i := sqrt(i);
    edit1.Text := FloatToStr(i);
  end;
end;

procedure TForm1.BitBtn22Click(Sender: TObject); // 1/x
begin
  if StrToFloat(edit1.Text) = 0 then
  begin
    edit1.Text := 'Деление на ноль запрещено!';
  end
  else
  begin
    i := StrToFloat(edit1.Text);
    i := 1 / i;
    edit1.Text := FloatToStr(i);
  end;
end;

procedure TForm1.BitBtn10Click(Sender: TObject); // +/-
begin
  if edit1.Text <> '' then
  begin
    i := StrToFloat(edit1.Text);
    i := -1 * i;
    edit1.Text := FloatToStr(i);
  end;
end;

procedure TForm1.BitBtn11Click(Sender: TObject); // 0
begin
  edit1.Text := edit1.Text + '0';
end;

procedure TForm1.BitBtn12Click(Sender: TObject); // ,
begin
  edit1.Text := edit1.Text + ',';
end;

procedure TForm1.BitBtn13Click(Sender: TObject); // +
begin
  i := StrToFloat(edit1.Text);
  mode := 1;
  edit1.Text := '';
end;

procedure TForm1.BitBtn14Click(Sender: TObject); // -
begin
  i := StrToFloat(edit1.Text);
  mode := 2;
  edit1.Text := '';
end;

procedure TForm1.BitBtn15Click(Sender: TObject); // *
begin
  i := StrToFloat(edit1.Text);
  mode := 3;
  edit1.Text := '';
end;

procedure TForm1.BitBtn16Click(Sender: TObject); // /
begin
  i := StrToFloat(edit1.Text);
  mode := 4;
  edit1.Text := '';
end;

procedure TForm1.BitBtn17Click(Sender: TObject); // cos
begin
  i := StrToFloat(edit1.Text);
  i := i * pi / 180;
  edit1.Text := FloatToStr(Cos(i));
end;

procedure TForm1.BitBtn18Click(Sender: TObject); // sin
begin
  i := StrToFloat(edit1.Text);
  i := i * pi / 180;
  edit1.Text := FloatToStr(Sin(i));
end;

procedure TForm1.BitBtn19Click(Sender: TObject); // Clear
begin
  edit1.Text := '';
end;

procedure TForm1.BitBtn2Click(Sender: TObject); // 2
begin
  edit1.Text := edit1.Text + '2';
end;

procedure TForm1.BitBtn3Click(Sender: TObject); // 3
begin
  edit1.Text := edit1.Text + '3';
end;

procedure TForm1.BitBtn4Click(Sender: TObject); // 4
begin
  edit1.Text := edit1.Text + '4';
end;

procedure TForm1.BitBtn5Click(Sender: TObject); // 5
begin
  edit1.Text := edit1.Text + '5';
end;

procedure TForm1.BitBtn6Click(Sender: TObject); // 6
begin
  edit1.Text := edit1.Text + '6';
end;

procedure TForm1.BitBtn7Click(Sender: TObject); // 7
begin
  edit1.Text := edit1.Text + '7';
end;

procedure TForm1.BitBtn8Click(Sender: TObject); // 8
begin
  edit1.Text := edit1.Text + '8';
end;

procedure TForm1.BitBtn9Click(Sender: TObject); // 9
begin
  edit1.Text := edit1.Text + '9';
end;

procedure TForm1.MenuItem1Click(Sender: TObject);
begin
  ShowMessage('Простой калькулятор)');
end;

procedure TForm1.MenuItem2Click(Sender: TObject);
begin
  Close;
end;

end.
