Hola les envio esta otra posible solucion que permite resolver la calculadora. En ella derecciono todos los eventos onClick de los botones a uno solo el del "Boton_0"
unit Calculadora;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Boton_0: TButton;
Boton_3: TButton;
Boton_1: TButton;
Boton_2: TButton;
Boton_4: TButton;
Boton_Menor: TButton;
Boton_Mas: TButton;
EditResultado: TEdit;
BotonIgual: TButton;
Button1: TButton;
procedure Boton_0Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
gValor1 : Real;
gValor2 : Real;
gOperacion : String;
implementation
{$R *.dfm}
procedure TForm1.Boton_0Click(Sender: TObject);
Var
Resutado : Real;
vValor : String;
begin
If TButton(Sender).Caption = '+' Then Begin gValor1 := StrToFloat(EditResultado.Text); gOperacion := '+'; EditResultado.Text := '';End;
If TButton(Sender).Caption = '-' Then Begin gValor1 := StrToFloat(EditResultado.Text); gOperacion := '-'; EditResultado.Text := '';End;
If TButton(Sender).Caption = '=' Then
Begin
gValor2 := StrToFloat(EditResultado.Text);
if gOperacion = '+' then EditResultado.Text := FloatToStr(gValor1 + gValor2);
if gOperacion = '-' then EditResultado.Text := FloatToStr(gValor1 - gValor2);
Exit;
End;
vValor := Trim(TButton(Sender).Caption);
If Not(vValor = '+') And
Not(vValor = '-') And
Not(vValor = '/') And
Not(vValor = '=') Then EditResultado.Text := EditResultado.Text + TButton(Sender).Caption;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
gValor1 := 0.0;
gValor2 := 0.0;
gOperacion := '';
EditResultado.Text := '';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
gValor1 := 0.0;
gValor2 := 0.0;
gOperacion := '';
EditResultado.Text := '';
end;
end.