Creacion de una calculadora
Página 1 de 1.
Creacion de una calculadora
- 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.
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.
|
|