No arquivo .h certifique-se de ter o objeto EditInt no lugar de LineEdit (troque no layout também!!).
#ifndef _calculadora_calculadora_h
#define _calculadora_calculadora_h
#include <CtrlLib/CtrlLib.h>
using namespace Upp;
#define LAYOUTFILE <calculadora/calculadora.lay>
#include <CtrlCore/lay.h>
class calculadora : public WithcalculadoraLayout<TopWindow> {
public:
typedef calculadora CLASSNAME;
Button btn1;
Button btn2;
Button btn3;
Button btn4;
Button btn5;
Button btn6;
Button btn7;
Button btn8;
Button btn9;
Button btn0;
Button btnigual;
Button btnclear;
Button btnmais;
Button btnmenos;
Button btnvezes;
Button btndivide;
EditInt visor;
Label anterior;
Label operacao;
void apertamais();
void apertamenos();
void apertavezes();
void apertadivide();
void apertaigual();
void apertaclear();
void apertabtn1();
void apertabtn2();
void apertabtn3();
void apertabtn4();
void apertabtn5();
void apertabtn6();
void apertabtn7();
void apertabtn8();
void apertabtn9();
void apertabtn0();
calculadora();
};
#endif
O arquivo main.cpp:
#include "calculadora.h"
void calculadora::apertamais()
{
anterior.SetLabel(visor.GetData().ToString());
visor.SetData("");
operacao.SetLabel("+");
}
void calculadora::apertamenos()
{
anterior.SetLabel(visor.GetData().ToString());
visor.SetData("");
operacao.SetLabel("-");
}
void calculadora::apertavezes()
{
anterior.SetLabel(visor.GetData().ToString());
visor.SetData("");
operacao.SetLabel("*");
}
void calculadora::apertadivide()
{
anterior.SetLabel(visor.GetData().ToString());
visor.SetData("");
operacao.SetLabel("/");
}
void calculadora::apertaclear()
{
anterior.SetLabel("");
visor.SetData("");
operacao.SetLabel("");
}
void calculadora::apertaigual()
{
ConvertInt ant;
//verifica se já há número para somar
if (anterior.GetText().ToString() != "")
{
if (operacao.GetText().ToString() == "+")
{
visor.SetData((int)ant.Scan(anterior.GetText()) + (int)visor.GetData());
}
else if (operacao.GetText().ToString() == "-")
{
visor.SetData((int)ant.Scan(anterior.GetText()) - (int)visor.GetData());
}
else if (operacao.GetText().ToString() == "*")
{
visor.SetData((int)ant.Scan(anterior.GetText()) * (int)visor.GetData());
}
else if (operacao.GetText().ToString() == "/")
{
//sem proteção contra divisão por zero!
visor.SetData((int)ant.Scan(anterior.GetText()) / (int)visor.GetData());
}
anterior.SetLabel("");
operacao.SetLabel("");
}
}
void calculadora::apertabtn1()
{
visor.SetData(visor.GetData().ToString() + "1");
}
void calculadora::apertabtn2()
{
visor.SetData(visor.GetData().ToString() + "2");
}
void calculadora::apertabtn3()
{
visor.SetData(visor.GetData().ToString() + "3");
}
void calculadora::apertabtn4()
{
visor.SetData(visor.GetData().ToString() + "4");
}
void calculadora::apertabtn5()
{
visor.SetData(visor.GetData().ToString() + "5");
}
void calculadora::apertabtn6()
{
visor.SetData(visor.GetData().ToString() + "6");
}
void calculadora::apertabtn7()
{
visor.SetData(visor.GetData().ToString() + "7");
}
void calculadora::apertabtn8()
{
visor.SetData(visor.GetData().ToString() + "8");
}
void calculadora::apertabtn9()
{
visor.SetData(visor.GetData().ToString() + "9");
}
void calculadora::apertabtn0()
{
visor.SetData(visor.GetData().ToString() + "0");
}
calculadora::calculadora()
{
CtrlLayout(*this, "Window title");
btnmais.WhenPush = THISBACK(apertamais);
btnmenos.WhenPush = THISBACK(apertamenos);
btnvezes.WhenPush = THISBACK(apertavezes);
btndivide.WhenPush = THISBACK(apertadivide);
btnclear.WhenPush = THISBACK(apertaclear);
btn1.WhenPush = THISBACK(apertabtn1);
btn2.WhenPush = THISBACK(apertabtn2);
btn3.WhenPush = THISBACK(apertabtn3);
btn4.WhenPush = THISBACK(apertabtn4);
btn5.WhenPush = THISBACK(apertabtn5);
btn6.WhenPush = THISBACK(apertabtn6);
btn7.WhenPush = THISBACK(apertabtn7);
btn8.WhenPush = THISBACK(apertabtn8);
btn9.WhenPush = THISBACK(apertabtn9);
btn0.WhenPush = THISBACK(apertabtn0);
btnigual.WhenPush = THISBACK(apertaigual);
}
GUI_APP_MAIN
{
calculadora().Run();
}
No comments:
Post a Comment