Creacion de una calculadora

Ver el tema anterior Ver el tema siguiente Ir abajo

Creacion de una calculadora

Mensaje  [G]host el Jue Ago 18, 2011 4:47 am

Código:
unit UntMain;

interface

uses
  XPMan, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TFrmCalculadora = class(TForm)
    BtnEqual: TButton;
    BtnSuma: TButton;
    BtnResta: TButton;
    BtnMult: TButton;
    BtnDiv: TButton;
    BtnPi: TButton;
    BtnSin: TButton;
    BtnCos: TButton;
    BtnTan: TButton;
    BtnAC: TButton;
    BtnSqrt: TButton;
    BtnPow2: TButton;
    BtnPow3: TButton;
    BtnP: TButton;
    Btn0: TButton;
    EdtDisplay: TEdit;
    Btn1: TButton;
    Btn2: TButton;
    Btn3: TButton;
    Btn4: TButton;
    Btn5: TButton;
    Btn6: TButton;
    Btn7: TButton;
    Btn8: TButton;
    Btn9: TButton;
    LblTitle: TLabel;
    procedure Numero(Num: string);
    procedure Calculo();
    procedure Operaciones();
    procedure Btn1Click(Sender: TObject);
    procedure Btn2Click(Sender: TObject);
    procedure Btn3Click(Sender: TObject);
    procedure Btn4Click(Sender: TObject);
    procedure Btn5Click(Sender: TObject);
    procedure Btn6Click(Sender: TObject);
    procedure Btn7Click(Sender: TObject);
    procedure Btn8Click(Sender: TObject);
    procedure Btn9Click(Sender: TObject);
    procedure BtnSqrtClick(Sender: TObject);
    procedure BtnPiClick(Sender: TObject);
    procedure BtnSinClick(Sender: TObject);
    procedure BtnTanClick(Sender: TObject);
    procedure BtnCosClick(Sender: TObject);
    procedure BtnACClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BtnPow2Click(Sender: TObject);
    procedure BtnPow3Click(Sender: TObject);
    procedure BtnPClick(Sender: TObject);
    procedure BtnSumaClick(Sender: TObject);
    procedure BtnEqualClick(Sender: TObject);
    procedure BtnMultClick(Sender: TObject);
    procedure BtnRestaClick(Sender: TObject);
    procedure BtnDivClick(Sender: TObject);
    procedure Btn0Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
const
 pi: real = 3.1415926535897932384626433832795;
var
  Resp: Real;
  FrmCalculadora: TFrmCalculadora;
implementation

{$R *.dfm}

procedure TFrmCalculadora.Numero(Num: string);
begin
 if EdtDisplay.Tag <> 0 then
    EdtDisplay.Text := EdtDisplay.Text + Num
  else
    EdtDisplay.Text := Num;
  EdtDisplay.Tag := 1;
end;

procedure TFrmCalculadora.Calculo();
begin
  EdtDisplay.Tag := 0;
  BtnP.Tag := 0;
  BtnSuma.Tag := 1;
  BtnResta.Tag := 1;
  BtnMult.Tag := 1;
  BtnDiv.Tag := 1;
end;

Procedure TFrmCalculadora.Operaciones();
var Error: integer;
begin
Error := 0;
if BtnSuma.Tag = 2 then
  Resp  := Resp + strtofloat(EdtDisplay.Text);
if BtnResta.Tag = 2 then
  Resp  := Resp - strtofloat(EdtDisplay.Text);
if BtnMult.Tag = 2 then
  Resp  := Resp * strtofloat(EdtDisplay.Text);
if BtnDiv.Tag = 2 then
  If strtofloat(EdtDisplay.Text) <> 0 then
    Resp := Resp  / StrToFloat(EdtDisplay.Text)
  else
    Error := 1;
//  Mostrar en el Display
if Error = 0 then
  EdtDisplay.Text := FloatToStr(Resp)
else
  EdtDisplay.Text := 'Error: División por Cero'
end;

procedure TFrmCalculadora.Btn1Click(Sender: TObject);
begin
Numero('1');
end;

procedure TFrmCalculadora.Btn2Click(Sender: TObject);
begin
Numero('2');
end;

procedure TFrmCalculadora.Btn3Click(Sender: TObject);
begin
Numero('3');
end;

procedure TFrmCalculadora.Btn4Click(Sender: TObject);
begin
Numero('4');
end;

procedure TFrmCalculadora.Btn5Click(Sender: TObject);
begin
Numero('5');
end;

procedure TFrmCalculadora.Btn6Click(Sender: TObject);
begin
Numero('6');
end;

procedure TFrmCalculadora.Btn7Click(Sender: TObject);
begin
Numero('7');
end;

procedure TFrmCalculadora.Btn8Click(Sender: TObject);
begin
Numero('8');
end;

procedure TFrmCalculadora.Btn9Click(Sender: TObject);
begin
Numero('9');
end;

procedure TFrmCalculadora.BtnSqrtClick(Sender: TObject);
var
error: Integer;
aux: real;
begin
 Val(EdtDisplay.text,aux,error);
if error = 0 then
  EdtDisplay.Text := floattostr(sqrt(aux))
else
  EdtDisplay.Text := 'Error de cálculo';
EdtDisplay.Tag := 0;
end;

procedure TFrmCalculadora.BtnPiClick(Sender: TObject);
begin
EdtDisplay.Text := floattostr(pi);
EdtDisplay.Tag := 0;
end;

procedure TFrmCalculadora.BtnSinClick(Sender: TObject);
var
error: Integer;
aux : Real;
begin
 Val(EdtDisplay.text,aux,error);
if error = 0 then
  begin
    aux := aux * pi/180;
  EdtDisplay.Text := floattostr(sin(aux));
  end
else
  EdtDisplay.Text := 'Error de cálculo';
EdtDisplay.Tag := 0;
end;

procedure TFrmCalculadora.BtnTanClick(Sender: TObject);
var
error: Integer;
aux : Real;
begin
 Val(EdtDisplay.text,aux,error);
if error = 0 then
  begin
    aux := aux * pi/180;
  EdtDisplay.Text := floattostr(Sin(aux)/Cos(aux));
  end
else
  EdtDisplay.Text := 'Error de cálculo';
EdtDisplay.Tag := 0;
end;

procedure TFrmCalculadora.BtnCosClick(Sender: TObject);
var
error: Integer;
aux : Real;
begin
 Val(EdtDisplay.text,aux,error);
if error = 0 then
  begin
    aux := aux * pi/180;
  EdtDisplay.Text := floattostr(Cos(aux));
  end
else
  EdtDisplay.Text := 'Error de cálculo';
EdtDisplay.Tag := 0;
end;

procedure TFrmCalculadora.BtnACClick(Sender: TObject);
begin
EdtDisplay.Text := '0';
EdtDisplay.Tag := 0;
BtnP.Tag := 0;
Resp := 0;
end;

procedure TFrmCalculadora.FormCreate(Sender: TObject);
begin
EdtDisplay.Text := '0';
EdtDisplay.Tag := 0;
end;

procedure TFrmCalculadora.BtnPow2Click(Sender: TObject);
var
error: Integer;
aux: real;
begin
 Val(EdtDisplay.text,aux,error);
if error = 0 then
  EdtDisplay.Text := floattostr(sqr(aux))
else
  EdtDisplay.Text := 'Error de cálculo';
EdtDisplay.Tag := 0;
end;

procedure TFrmCalculadora.BtnPow3Click(Sender: TObject);
var
error: Integer;
aux: real;
begin
 Val(EdtDisplay.text,aux,error);
if error = 0 then
  EdtDisplay.Text := floattostr(sqr(aux)* aux)
else
  EdtDisplay.Text := 'Error de cálculo';
EdtDisplay.Tag := 0;
end;
procedure TFrmCalculadora.BtnPClick(Sender: TObject);
begin
if BtnP.Tag = 0 then
  if EdtDisplay.Tag = 0 then
    Numero('0,')
  else
    Numero(',');
BtnP.Tag := 1;
end;

procedure TFrmCalculadora.BtnSumaClick(Sender: TObject);
begin
if BtnSuma.Tag = 0 Then
  Resp  := strtofloat(EdtDisplay.Text)
else
  Operaciones();
Calculo();
BtnSuma.Tag := 2;
end;

procedure TFrmCalculadora.BtnEqualClick(Sender: TObject);
begin
//  Realizar Operaciones
  Operaciones();
// inicializar Todo
  EdtDisplay.Tag := 0;
  BtnP.Tag := 0;
  BtnSuma.Tag := 0;
  BtnResta.Tag := 0;
  BtnMult.Tag := 0;
  BtnDiv.Tag := 0;
end;

procedure TFrmCalculadora.BtnMultClick(Sender: TObject);
begin
if BtnMult.Tag = 0 Then
  Resp  := strtofloat(EdtDisplay.Text)
else
  Operaciones();
Calculo();
BtnMult.Tag := 2;
end;

procedure TFrmCalculadora.BtnRestaClick(Sender: TObject);
begin
if BtnResta.Tag = 0 Then
  Resp  := strtofloat(EdtDisplay.Text)
else
  Operaciones();
Calculo();
BtnResta.Tag := 2;
end;

procedure TFrmCalculadora.BtnDivClick(Sender: TObject);
begin
if BtnDiv.Tag = 0 Then
  Resp  := strtofloat(EdtDisplay.Text)
else
  Operaciones();
Calculo();
BtnDiv.Tag := 2;
end;

procedure TFrmCalculadora.Btn0Click(Sender: TObject);
begin
if EdtDisplay.Tag  = 1 then
  Numero('0')
else
  EdtDisplay.Text := '0';
end;
end.

// Autor: Alfonso Camacho Ramírez.
avatar
[G]host
Admin

Mensajes : 67
Puntos : 204
Reputación : 0
Fecha de inscripción : 24/10/2010
Edad : 27

Ver perfil de usuario http://ghost.activo.mx

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.