Olá pessoal, nesse artigo será demonstrado como criar uma simples calculadora em Delphi. Este material é destinado aqueles que estão iniciando os estudos dessa linguagem de programação e IDE.
Será utilizado o componente TEdit, que se encontra na paleta Standard e o componente TSpeedButton da paleta Additional. Ao invés de utilizar o TSpeedButton, pode ser utilizado o TButton, pois as propriedades que serão utilizadas aqui são comuns aos dois.
Vamos iniciar um novo projeto no Delphi. Para essa calculadora será necessário apenas um form. Onde serão adicionados os seguintes componentes: 1 TEdit e 18 TSpeedButton. Vamos organizá-los da seguinte maneira, veja abaixo.
Figura 1: TSpeedButton e TEdits organizados na Form
Agora que o form já foi organizado com os componentes TEdit e TSpeedButton, vamos alterar as propriedades Caption e Name dos TSpeedButton no Object Inspector. Veja abaixo como deve ficar.
Componente | Name | Caption |
TSpeedButton1 | Um | 1 |
TSpeedButton2 | Dois | 2 |
TSpeedButton3 | Três | 3 |
TSpeedButton4 | Quatro | 4 |
TSpeedButton5 | Cinco | 5 |
TSpeedButton6 | Seis | 6 |
TSpeedButton7 | Sete | 7 |
TSpeedButton8 | Oito | 8 |
TSpeedButton9 | Nove | 9 |
TSpeedButton10 | Zero | 0 |
TSpeedButton11 | Mais | + |
TSpeedButton12 | Menos | - |
TSpeedButton13 | Dividir | / |
TSpeedButton14 | Multiplicar | * |
TSpeedButton15 | Maismenos | +- |
TSpeedButton16 | Virgula | , |
TSpeedButton17 | Igual | = |
TSpeedButton18 | Llimpar | C |
Tabela 1: Propriedades Name e Caption dos TSpeedButtons
Agora que já alteramos as devidas propriedades do TSpeedButton, vamos configurar as seguintes propriedades do TEdit no Object Inspector: Name, Text e deixar a propriedade Enabled do TEdit como False.
Component | Name | Text |
TEdit1 | Visor | Deixe Vazio |
Tabela 2: Propriedades Name e Text do TEdit
Veja como o visual da nossa calculadora já melhorou com essas alterações. Você também pode organizar os botões como bem entender, assim deixando a seu gosto.
Figura 2: Botões com suas propriedades alteradas
Listagem 1: Declarando variáveis globais
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
valor1 : real;
valor2 : real;
funcao : integer;
implementation
Vamos partir agora para a configuração dos botões.
Listagem 2: Vamos por o seguinte código nos botões de 0 a 9
procedure TForm1.umClick(Sender: TObject);
begin
visor.Text := visor.Text + (Sender as TSpeedButton).Caption
end;
Observação: Basta fazer isso no evento OnClick de um único botão. Depois, selecionar todos os demais botões numéricos e, no Objetct Inspector, na aba Events, selecionar o método criado para o evento OnClick dos botões selecionados.
Já configuramos os botões numéricos, vamos então configurar agora os botões das operações, virgula e o limpar.
Listagem 3: Evento OnClick do botão mais
procedure TForm1.maisClick(Sender: TObject);
begin
valor1 := StrToFloat(visor.Text);
visor.Text := '';
funcao := 1;
end;
Listagem 4: Evento OnClick do botão menos
procedure TForm1.menosClick(Sender: TObject);
begin
valor1 := StrToFloat(visor.Text);
visor.Text := '';
funcao := 2;
end;
Listagem 5: Evento OnClick do botão Dividir
procedure TForm1.dividirClick(Sender: TObject);
begin
valor1 := StrToFloat(visor.Text);
visor.Text := '';
funcao := 3;
end;
Listagem 6: Evento OnClick do botão Multiplicar
procedure TForm1.multiplicarClick(Sender: TObject);
begin
valor1 := StrToFloat(visor.Text);
visor.Text := '';
funcao := 4;
end;
Listagem 7: Evento OnClick do botão “Mais ou Menos”
procedure TForm1.meisoumenosClick(Sender: TObject);
begin
visor.Text:='-'+visor.Text;
end;
Listagem 8: Evento OnClick do botão Vírrgula
procedure TForm1.menosClick(Sender: TObject);
begin
valor1 := StrToFloat(visor.Text);
visor.Text := '';
funcao := 2;
end;
Listagem 9: Evento OnClick do botão limpar
procedure TForm1.cClick(Sender: TObject);
begin
visor.Text:='';
end;
Vamos configurar agora o botão igual, para isso inserimos o seguinte código.
Listagem 10: Evento OnClick do botão igual
procedure TForm1.igualClick(Sender: TObject);
var
soma: real;
begin
valor2:=StrToFloat(visor.Text);
case (funcao) of
1:
begin
soma:=valor1+valor2;
visor.text:=FloatToStr(soma);
end;
2:
begin
soma:=valor1-valor2;
visor.text:=FloatToStr(soma);
end;
3:
begin
soma:=valor1*valor2;
visor.text:=FloatToStr(soma);
end;
4:
begin
if(valor2<>0)then
begin
soma:=valor1/valor2;
visor.text:=FloatToStr(soma);
end
else
begin
SHowMessage('Divisão por zero!!');
visor.Text:='ERRO';
end
end
end; //finaliza o case
end;
Esse será o código responsável por efetuar a operação que o usuário desejar, somar, diminuir, multiplicar, dividir e etc.
Já estamos com todos os botões numéricos e os demais botões configurados, vamos agora apenas aterar algumas propriedades do form. Para isso clique no form e no Object Inspector acess o evento OnShow e adicione essas duas linhas de código.
Listagem 11: Código OnShow do Form
procedure TForm1.FormShow(Sender: TObject);
begin
Valor1 := 0;
valor2 := 0;
end;
Figura 3: Object Inspector – OnShow do Form
Na propriedade KeyPreview, coloque como True.
Figura 4: KeyPreview ativado (True)
Agora, para finalizar as alterações no form, adicione o seguinte código no evento OnKeyDown. Esse código que vamos inserir agora serve para que possam ser utilizados os números do teclado ao invés de ter que ficar clicando com o mouse em cada botão na calculadora.
Figura 5: Acessando o evento OnKeyDown do form
Listagem 12: Evento OnKeyDown do form
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_NUMPAD1 then
um.Click;
if Key = VK_NUMPAD2 then
dois.click;
if Key = VK_NUMPAD3 then
tres.click;
if Key = VK_NUMPAD4 then
quatro.click;
if Key = VK_NUMPAD5 then
cinco.click;
if Key = VK_NUMPAD6 then
seis.click;
if Key = VK_NUMPAD7 then
sete.click;
if Key = VK_NUMPAD8 then
oito.click;
if Key = VK_NUMPAD9 then
nove.click;
if Key = VK_NUMPAD0 then
zero.click;
if Key = VK_ADD then
mais.click;
if Key = VK_SUBTRACT then
menos.click;
if Key = VK_MULTIPLY then
multiplicar.click;
if Key = VK_DIVIDE then
dividir.click;
if Key = VK_RETURN then
igual.click;
if Key = VK_DECIMAL then
virgula.Click;
if Key = VK_DELETE then
c.click;
end;
Assim terminamos a nossa calculadora, execute e a veja em funcionamento.
Espero que esse artigo tenha sido útil a vocês leitores, fico à disposição para tirar duvida, aceito sugestões de novos artigos.
Até a próxima.