Projeto Calculadora
Aps os primeiros contatos com o Delphi e o aprendizado de seus principais conceitos de programao, vamos desenvolver um projeto onde utilizaremos o conhecimento adquirido para construir uma Calculadora totalmente funcional. Alm da aplicao dos conceitos aprendidos, sero apresentados gradativamente alguns novos objetos da paleta de componentes do Delphi.
www.digito.pro.br
cursos@digito.pro.br
Crie um novo projeto e o salve com o nome pCalculadora para o projeto e uCalculadora para a unit. Renomeie o Form1 para frmcalculadora. Insira os seguintes objetos ao formulrio:
Altere a propriedade caption do frmCalculadora para Calculadora. Limpe a propriedade Text, selecione a opo bkSoft para a propriedade BevelKind, coloque false para a propriedade Autosize e edt para a propriedade name do edit1. Altere tambm a propriedade caption e name de cada button e organize-os conforme exibido a seguir:
btBk www.digito.pro.br
~2~
cursos@digito.pro.br
bt7 bt9
D um clique duplo sobre o Objeto MainMenu para exibir a tela de edio do menu. Altere a propriedade caption para Finalizar e pressione Enter. Automaticamente ser aberto um novo item de menu direita, ignore-o e clique embaixo do Finalizar. Altere a propriedade dele para Sair. Para criar um atalho, altere a propriedade ShortCut para Ctrl+S.
Utilizaremos o statusBar (Barra de status) para informar ao usurio que operao ele estar executando no momento, ou seja, se o usurio escolher a operao somar, na barra de status aparecer o texto: somando, se subtrair: subtraindo e assim por diante. Para isso, precisamos criar um painel no statusbar. Clique com o boto direito nele e acesse a opo Panels Editor do menu popup exibido.
www.digito.pro.br
~3~
cursos@digito.pro.br
Panels Editor
Ser aberta uma janela, clique na opo Add New para adicionar um StatusPanel. Em seguida feche a janela.
Adicionando um StatusPanel
Programando os botes numricos Vamos dar funcionalidade aos botes numricos. Quando o usurio clicar no bt1, a calculadora deve escrever 1 no edt (que o nosso visor). Para isso, acesse o evento OnClick do bt1 e escreva o seguinte cdigo: edt.Text:=edt.Text+1; Na linha acima estamos dizendo que o edt receber o que ele j tinha antes www.digito.pro.br
~4~
cursos@digito.pro.br
Programando as Operaes
Vamos declarar algumas variveis que precisaremos utilizar em nossa programao. V at a seo var (antes de implementation) da uCalculadora e insira as seguintes linhas de cdigo: visor: real; operacao: char; www.digito.pro.br
~5~
cursos@digito.pro.br
Declarando as variveis
Vamos inicializar a varivel visor, pois ela ser um acumulador ( uma varivel que guarda o valor antigo mais o atual). Para a varivel visor receber o valor antigo da primeira vez, ela precisa receber um valor nulo, no caso 0.
www.digito.pro.br
~6~
cursos@digito.pro.br
Visor:=0;
Esta linha far com que a varivel seja inicializada com zero quando o formulrio aparecer na tela. A varivel visor ir armazenar o valor que for digitado e posteriormente ser calculado com o ltimo valor digitado.
Vamos agora programar o boto + (mais). Insira o seguinte cdigo em seu evento OnClick:
www.digito.pro.br
~7~
cursos@digito.pro.br
Faa o mesmo procedimento para as outras operaes (botes -, X e /), claro, substituindo pelos seus respectivos operadores: - para subtrao; * para multiplicao / para diviso.
www.digito.pro.br
~8~
cursos@digito.pro.br
Procedure soma
Esse procedimento verifica se o edt diferente de vazio, se sim, ele soma o que est no visor com o que est no edt, seno ele apenas mostra no edt o que est em visor.
www.digito.pro.br
~9~
cursos@digito.pro.br
Aps programar as procedures, podemos ento apresentar o resultado. O resultado ser exibido quando o usurio clicar no boto = (btIgual). Portanto dgite o seguinte cdigo em seu evento OnClick:
Este cdigo ir chamar a procedure correspondente dependendo do valor da varivel operao. Caso a operao no tiver nenhum dos valores especificados, ser exibida uma mensagem de alerta.
Vamos agora dar funcionalidade aos demais botes da calculadora (boto BackSpace, boto C, e boto ,). www.digito.pro.br
~ 10 ~
cursos@digito.pro.br
O boto BackSpace ser utilizado para apagar os dgitos da direita para esquerda. Digite o seguinte cdigo em seu evento OnClick: procedure TfrmCalculadora.btBkClick(Sender: TObject); begin if edt.Text <> '' then begin edt.Text:=copy(edt.Text,1,length(edt.Text)-1); end; end;
Este cdigo ir copiar do primeiro at o penltimo dgito do edt, ou seja, estar excluindo o ltimo digito e assim apagando da direita para a esquerda.
O boto C ser utilizado para zerar a varivel visor, limpar a operao e limpar o edt liberando a calculadora para uma nova conta. Digite o seguinte cdigo em seu evento OnClick: procedure TfrmCalculadora.btCClick(Sender: TObject); begin edt.Clear; visor:=0; operacao:=' '; end;
O Boto , servir para inserir o smbolo decimal no edt. Para isto digite o seguinte cdigo no evento OnClick do boto , (btV): procedure TfrmCalculadora.btVClick(Sender: TObject); begin if pos(',',edt.Text) = 0 then edt.Text:=edt.Text+ ','; end; www.digito.pro.br ~ 11 ~
cursos@digito.pro.br
Para concluir nossa calculadora, falta programar o Menu Finalizar > Sair que criamos anteriormente. Para isso, d um duplo dique sobre o objeto MainMenu, selecione o menu Sair e acesse o seu evento OnClick. Digite o seguinte cdigo para fechar a calculadora: procedure TfrmCalculadora.Sail1Click(Sender: TObject); begin close; end;
Pronto, nossa calculadora est pronta. Execute o projeto para gerar o executvel na pasta onde foi salvo o projeto. Abaixo segue o cdigo completo da uCalculadora:
unit uCalculadora; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, ComCtrls, StdCtrls;
www.digito.pro.br
~ 12 ~
cursos@digito.pro.br
type TfrmCalculadora = class(TForm) MainMenu1: TMainMenu; edt: TEdit; btBk: TButton; btC: TButton; btD: TButton; bt7: TButton; bt8: TButton; bt9: TButton; bt4: TButton; bt5: TButton; bt6: TButton; bt1: TButton; bt2: TButton; bt3: TButton; bt0: TButton; btV: TButton; btIgual: TButton; btMais: TButton; btMenos: TButton; btX: TButton; StatusBar1: TStatusBar; Sair1: TMenuItem; Sail1: TMenuItem; procedure bt1Click(Sender: TObject); procedure bt2Click(Sender: TObject); procedure bt3Click(Sender: TObject); procedure bt4Click(Sender: TObject); procedure bt5Click(Sender: TObject); procedure bt6Click(Sender: TObject); procedure bt7Click(Sender: TObject); procedure bt8Click(Sender: TObject); procedure bt9Click(Sender: TObject); procedure btMaisClick(Sender: TObject); procedure btMenosClick(Sender: TObject); procedure btXClick(Sender: TObject); procedure btDClick(Sender: TObject); procedure btIgualClick(Sender: TObject); procedure btBkClick(Sender: TObject); procedure btCClick(Sender: TObject); procedure btVClick(Sender: TObject); procedure Sail1Click(Sender: TObject); private { Private declarations } public { Public declarations } procedure soma; procedure subtracao; procedure multiplicacao; procedure divisao; end; var frmCalculadora: TfrmCalculadora; visor:real; operacao:char;
www.digito.pro.br
~ 13 ~
cursos@digito.pro.br
www.digito.pro.br
~ 14 ~
cursos@digito.pro.br
www.digito.pro.br
~ 15 ~
cursos@digito.pro.br
www.digito.pro.br
~ 16 ~
cursos@digito.pro.br
www.digito.pro.br
~ 17 ~
cursos@digito.pro.br