Está en la página 1de 4

Para comenzar ponemos la propiedad Alignment del Memo a la Derecha (taRightJustify).

Y colocamos este código dentro del evento OnCreate de la Forma, para inicializar el memo
en 0;

Display.Text:='0';
Display.Tag:=0;

Seguidamente declaramos algunas variables en la parte Privada de nuestra Forma.

private
error: Integer;
aux: real;
Resp: Real;
public
{ Public declarations }

Una Vez concluido este paso pasaremos a declarar algunos procedimientos. Que
utilizaremos durante nuestras operaciones.

procedure TForm1.Calculo();
begin
Display.Tag := 0;
Pto.Tag := 0;
Suma.Tag := 1;
Resta.Tag := 1;
Multip.Tag := 1;
Divi.Tag := 1;
end;

Este será utilizado para declarar el valor que tomara cada botón en las operaciones.

Procedure TForm1.Operaciones();
var Error: integer;
begin
Error := 0;
if Suma.Tag = 2 then
Resp := Resp + strtofloat(Display.Text);
if Resta.Tag = 2 then
Resp := Resp - strtofloat(Display.Text);
if Multip.Tag = 2 then
Resp := Resp * strtofloat(Display.Text);
if Divi.Tag = 2 then
If strtofloat(Display.Text) <> 0 then
Resp := Resp / StrToFloat(Display.Text)
else
Error := 1;
// Mostrar en el Display
if Error = 0 then
Display.Text := FloatToStr(Resp)
else
Display.Text := 'Error: División por Cero'

end;

Acá realizamos cada una de las operaciones que contiene nuestra calculadora.

procedure TForm1.Numero(Num: string);


begin
if Display.Tag <> 0 then
Display.Text := Display.Text + Num
else
Display.Text := Num;
Display.Tag := 1;
end;

Este procedimiento se utiliza para colocar los números en el Memo colocado en nuestra
forma y queden uno consecutivo del otro. Una vez terminado este paso comenzaremos con
los botones de los número colocaremos esta línea de código en el evento OnClick del
botón.

procedure TForm1.Button13Click(Sender: TObject);


begin
Numero('1');
end;

Esto colocara el número dentro del memo mediante la llamada al procedimiento Numero
creado con anterioridad. Realice esta misma operación hasta el número 9 cambiando dentro
del parenticis el número.

Comenzaremos con los botones de las Operaciones todos llevaran el mismo código el
procedimiento Operaciones será el encargado de definir cual botón fue pulsado por el
usuario, mediante la propiedad Tag del botón.

procedure TForm1.SumaClick(Sender: TObject);


begin
if Suma.Tag = 0 Then
Resp := strtofloat(Display.Text)
else
Operaciones();
Calculo();
Suma.Tag := 2;
end;
El único cambio a realizar es la condición requerida al principio del procedimiento para
saber si fue pulsado o no el botón. En este procedimiento sale a relucir los cambios de valor
de nuestros componentes, como verán el componente Memo solo soporta valores de tipo
String y trabajaremos con valores Float, por lo que debemos convertir dichos valores
mediante la sentencia StrToFloat o Viceversa. Esto será visto durante todos las operaciones
de la Calculadora.

Seguidamente crearemos la operación Igual. Simplemente este botón hace una llamada al
procedimiento Operaciones para que realice las operaciones pulsada por el usuario e
inicializa todas las propiedades Tag de los botones a 0;

procedure TForm1.IgualClick(Sender: TObject);


begin
// Realizar Operaciones
Operaciones();
// inicializar Todo
Display.Tag := 0;
Pto.Tag := 0;
Suma.Tag := 0;
Resta.Tag := 0;
Multip.Tag := 0;
Divi.Tag := 0;
Porc.Tag := 0;
end;

Ahora pasaremos al botón (Pto) de nuestra calculadora Simplemente creamos la condición


de que si fue pulsado el botón y nuestro display existe el valor 0 colocamos el punto
después del cero y continuamos con los demás valores y si no existe colocamos el punto
solamente y continuamos con los demás valores.

procedure TForm1.ptoClick(Sender: TObject);


begin
if Pto.Tag = 0 then
if Display.Tag = 0 then
Numero('0,')
else
Numero(',');
Pto.Tag := 1;
end;

Y para terminar nuestra calculadora deberá tener un botón que reinicie nuestros valores es
decir un botón AC colocamos estas líneas en el evento OnClick del botón.

Display.Text:='0';
Display.Tag:=0;
pto.Tag:=0;
Resp:=0;
Porc.Tag:=0;