terça-feira, março 22, 2011

Calculadora em Delphi

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  Tfrm_calc = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    btn7: TButton;
    btn4: TButton;
    btn1: TButton;
    btn8: TButton;
    btn9: TButton;
    btn5: TButton;
    btn6: TButton;
    btn2: TButton;
    btn3: TButton;
    btn0: TButton;
    btn_igual: TButton;
    btn_subtracao: TButton;
    btn_soma: TButton;
    btn_divisao: TButton;
    btn_multiplicacao: TButton;
    edt_display: TEdit;
    btn_ce: TButton;
    btn_virgula: TButton;
    btn_off: TButton;
    procedure btn7Click(Sender: TObject);
    procedure btn8Click(Sender: TObject);
    procedure btn9Click(Sender: TObject);
    procedure btn4Click(Sender: TObject);
    procedure btn5Click(Sender: TObject);
    procedure btn6Click(Sender: TObject);
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure btn3Click(Sender: TObject);
    procedure btn0Click(Sender: TObject);
    procedure btn_igualClick(Sender: TObject);
    procedure btn_somaClick(Sender: TObject);
    procedure btn_subtracaoClick(Sender: TObject);
    procedure btn_multiplicacaoClick(Sender: TObject);
    procedure btn_divisaoClick(Sender: TObject);
    procedure btn_offClick(Sender: TObject);
    procedure btn_ceClick(Sender: TObject);
    procedure btn_virgulaClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;






var
  frm_calc: Tfrm_calc;
  var n1,n2,total:real;
      operador:string;






implementation

{$R *.dfm}






procedure Tfrm_calc.btn0Click(Sender: TObject);
begin
  edt_display.Text:='0';
end;






procedure Tfrm_calc.btn_igualClick(Sender: TObject);
begin
  n2 := strTOfloat (edt_display.Text);
  if operador='+'then
    begin
        total := n1 + n2;
        edt_display.Text:=floatTOstr(total);
    end;

  if operador='-'then
    begin
        total := n1 - n2;
        edt_display.Text:=floatTOstr(total);
    end;

  if operador='x'then
    begin
        total := n1 * n2;
        edt_display.Text:=floatTOstr(total);
    end;

  if operador='/'then
    begin
        total := n1 / n2;
        edt_display.Text:=floatTOstr(total);
    end;
end;






procedure Tfrm_calc.btn_ceClick(Sender: TObject);
begin
  edt_display.Text:='0';
  n1:=0;
  n2:=0;
end;






procedure Tfrm_calc.btn_subtracaoClick(Sender: TObject);
begin
  n1:=strTOfloat(edt_display.Text);
  operador:='-';
  edt_display.Clear;
end;






procedure Tfrm_calc.btn_somaClick(Sender: TObject);
begin
  n1:=strTOfloat(edt_display.Text);
  operador:='+';
  edt_display.Clear;
end;






procedure Tfrm_calc.btn_divisaoClick(Sender: TObject);
begin
  n1:=strTOfloat(edt_display.Text);
  operador:='/';
  edt_display.Clear;
end;






procedure Tfrm_calc.btn_multiplicacaoClick(Sender: TObject);
begin
  n1:=strTOfloat(edt_display.Text);
  operador:='x';
  edt_display.Clear;
end;






procedure Tfrm_calc.btn_virgulaClick(Sender: TObject);
begin
  if edt_display.Text = '' then
    begin
      edt_display.Clear;
    end;

  if edt_display.Text <> '' then
    begin
      edt_display.Text:=edt_display.Text+',';
    end;
end;






procedure Tfrm_calc.btn_offClick(Sender: TObject);
begin
  close;
end;






procedure Tfrm_calc.btn7Click(Sender: TObject);
begin
  if edt_display.Text <> '' then
    begin
      edt_display.Text:=edt_display.Text+'7';
      edt_display.Text;
    end;

  if edt_display.Text = '07' then
    begin
      edt_display.Clear;
      edt_display.Text:='7';
    end;

  if edt_display.Text = '' then
    begin
      edt_display.Text:='7';
    end;
end;






procedure Tfrm_calc.btn8Click(Sender: TObject);
begin
  if edt_display.Text <> '' then
    begin
      edt_display.Text:=edt_display.Text+'8';
      edt_display.Text;
    end;

  if edt_display.Text = '08' then
    begin
      edt_display.Clear;
      edt_display.Text:='8';
    end;

  if edt_display.Text = '' then
    begin
      edt_display.Text:='8';
    end;
end;






procedure Tfrm_calc.btn9Click(Sender: TObject);
begin
  if edt_display.Text <> '' then
    begin
      edt_display.Text:=edt_display.Text+'9';
      edt_display.Text;
    end;

  if edt_display.Text = '09' then
    begin
      edt_display.Clear;
      edt_display.Text:='9';
    end;

  if edt_display.Text = '' then
    begin
      edt_display.Text:='9';
    end;
end;






procedure Tfrm_calc.btn4Click(Sender: TObject);
begin
  if edt_display.Text <> '' then
    begin
      edt_display.Text:=edt_display.Text+'4';
      edt_display.Text;
    end;

  if edt_display.Text = '04' then
    begin
      edt_display.Clear;
      edt_display.Text:='4';
    end;

  if edt_display.Text = '' then
    begin
      edt_display.Text:='4';
    end;
end;






procedure Tfrm_calc.btn5Click(Sender: TObject);
begin
  if edt_display.Text <> '' then
    begin
      edt_display.Text:=edt_display.Text+'5';
      edt_display.Text;
    end;

  if edt_display.Text = '05' then
    begin
      edt_display.Clear;
      edt_display.Text:='5';
    end;

  if edt_display.Text = '' then
    begin
      edt_display.Text:='5';
    end;
end;






procedure Tfrm_calc.btn6Click(Sender: TObject);
begin
  if edt_display.Text <> '' then
    begin
      edt_display.Text:=edt_display.Text+'6';
      edt_display.Text;
    end;

  if edt_display.Text = '06' then
    begin
      edt_display.Clear;
      edt_display.Text:='6';
    end;

  if edt_display.Text = '' then
    begin
      edt_display.Text:='6';
    end;
end;






procedure Tfrm_calc.btn2Click(Sender: TObject);
begin
  if edt_display.Text <> '' then
    begin
      edt_display.Text:=edt_display.Text+'2';
      edt_display.Text;
    end;

  if edt_display.Text = '02' then
    begin
      edt_display.Clear;
      edt_display.Text:='2';
    end;

  if edt_display.Text = '' then
    begin
      edt_display.Text:='2';
    end;
end;






procedure Tfrm_calc.btn1Click(Sender: TObject);
begin
  if edt_display.Text <> '' then
    begin
      edt_display.Text:=edt_display.Text+'1';
      edt_display.Text;
    end;

  if edt_display.Text = '01' then
    begin
      edt_display.Clear;
      edt_display.Text:='1';
    end;

  if edt_display.Text = '' then
    begin
      edt_display.Text:='1';
    end;
end;






procedure Tfrm_calc.btn3Click(Sender: TObject);
begin
  if edt_display.Text <> '' then
    begin
      edt_display.Text:=edt_display.Text+'3';
      edt_display.Text;
    end;

  if edt_display.Text = '03' then
    begin
      edt_display.Clear;
      edt_display.Text:='3';
    end;

  if edt_display.Text = '' then
    begin
      edt_display.Text:='3';
    end;
end;

end.



Entendo que esta aplicação básica tem suas limitações e falhas/bugs.
Porem se entenderem este código acima terão condições perfeitas para aperfeiçoar o programa.

 Boa Prática e até +...

Um comentário: