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.

TSpeedButton e TEdits organizados na Form

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.

ComponenteNameCaption
TSpeedButton1Um1
TSpeedButton2Dois2
TSpeedButton3Três3
TSpeedButton4Quatro4
TSpeedButton5Cinco5
TSpeedButton6Seis6
TSpeedButton7Sete7
TSpeedButton8Oito8
TSpeedButton9Nove9
TSpeedButton10Zero0
TSpeedButton11Mais+
TSpeedButton12Menos-
TSpeedButton13Dividir/
TSpeedButton14Multiplicar*
TSpeedButton15Maismenos+-
TSpeedButton16Virgula,
TSpeedButton17Igual=
TSpeedButton18LlimparC

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.

ComponentNameText
TEdit1VisorDeixe 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.

Botões com suas propriedades alteradas

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;
Object Inspector – OnShow do Form

Figura 3: Object Inspector – OnShow do Form

Na propriedade KeyPreview, coloque como True.

KeyPreview ativado (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.

Acessando o evento OnKeyDown do form

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.