Estou desenvolvendo uma calculadora com botões,porém toda vez que eu clico no botão Adição,subtração,Divisão ou multiplicação e clico no igual o valor volta a zero.Quem puder me ajudar, fico grato.
Código:
unit UnitCalculadora; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) visor: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Button10: TButton; Button11: TButton; Button12: TButton; Button13: TButton; Button14: TButton; Button15: TButton; Button16: TButton; procedure Button4Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button12Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button11Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button10Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button13Click(Sender: TObject); procedure Button14Click(Sender: TObject); procedure Button15Click(Sender: TObject); procedure Button16Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button4Click(Sender: TObject); begin visor.Text:=visor.Text +'7'; end; procedure TForm1.Button8Click(Sender: TObject); begin visor.Text:=visor.Text +'8'; end; procedure TForm1.Button12Click(Sender: TObject); begin visor.Text:=visor.Text +'9'; end; procedure TForm1.Button3Click(Sender: TObject); begin visor.Text:=visor.Text +'4'; end; procedure TForm1.Button7Click(Sender: TObject); begin visor.Text:=visor.Text +'5'; end; procedure TForm1.Button11Click(Sender: TObject); begin visor.Text:=visor.Text +'6'; end; procedure TForm1.Button2Click(Sender: TObject); begin visor.Text:=visor.Text +'3'; end; procedure TForm1.Button6Click(Sender: TObject); begin visor.Text:=visor.Text +'2'; end; procedure TForm1.Button10Click(Sender: TObject); begin visor.Text:=visor.Text +'1'; end; procedure TForm1.Button1Click(Sender: TObject); begin visor.Text:=visor.Text +'0'; end; procedure TForm1.Button5Click(Sender: TObject); begin visor.Text:=visor.Text +'.'; end; procedure TForm1.Button9Click(Sender: TObject); var total : string; valorreal : real; valor:real; operacao:integer; numero:integer; begin val(visor.text, valorreal,numero); {função que passa os valores para as variáveis} case operacao of 1: valor:= valor + valorreal; {se operação for 1, então soma os valores} 2: valor:= valor - valorreal; {se operação for 2, então subtrai os valores} 3: if (valorreal = 0) then {se operação for 3, então divide os valores, mas se por acaso um dos valores for igual a zero, então o resultado será zero, caso contrário efetua a divisão} valor :=0 else valor:= valor / valorreal; 4: valor:= valor * valorreal; {se operação for 4, então multiplica os valores} end; str(valor:2:0, total);{valor:2:0 é para colocar casa decimal} visor.text:= total; end; procedure TForm1.Button13Click(Sender: TObject); var valor,operacao:real; begin if (visor.Text <> '') then {aqui iremos verificar se o valor contido no visor é vazio, ou seja, sem nenhum valor} begin valor:=StrToFloat(visor.text); {a variável valor recebe o valor contido no visor, devidamente transformado em um valor float, através da variável strtofloat} operacao:=1; {a variável operacao recebe 1, que é o valor para a operação de soma ser recohecida mais adiante} visor.text:=''; {visor fica em branco} end; end; procedure TForm1.Button14Click(Sender: TObject); var valor,operacao:real; begin if (visor.Text <> '') then {aqui iremos verificar se o valor contido no visor é vazio, ou seja, sem nenhum valor} begin valor:=StrToFloat(visor.text); {a variável valor recebe o valor contido no visor, devidamente transformado em um valor float, através da variável strtofloat} operacao:=2; {a variável operacao recebe 1, que é o valor para a operação de soma ser recohecida mais adiante} visor.text:=''; {visor fica em branco} end; end; procedure TForm1.Button15Click(Sender: TObject); var valor,operacao:real; begin if (visor.Text <> '') then {aqui iremos verificar se o valor contido no visor é vazio, ou seja, sem nenhum valor} begin valor:=StrToFloat(visor.text); {a variável valor recebe o valor contido no visor, devidamente transformado em um valor float, através da variável strtofloat} operacao:=3; {a variável operacao recebe 1, que é o valor para a operação de soma ser recohecida mais adiante} visor.text:=''; {visor fica em branco} end; end; procedure TForm1.Button16Click(Sender: TObject); var valor,operacao:real; begin if (visor.Text <> '') then {aqui iremos verificar se o valor contido no visor é vazio, ou seja, sem nenhum valor} begin valor:=StrToFloat(visor.text); {a variável valor recebe o valor contido no visor, devidamente transformado em um valor float, através da variável strtofloat} operacao:=4; {a variável operacao recebe 1, que é o valor para a operação de soma ser recohecida mais adiante} visor.text:=''; {visor fica em branco} end; end; end.