종종 Q&A 게시판에 계산기 만드는 질문이 올라오네요
다음과 같은 계산기 화면이 있습니다.
Edit에 숫자입력을 코드를 다음과 같이 작성했습니다.
void __fastcall TForm2::BNum1Click(TObject *Sender)
{
Edit1->Text+="1";
}
//---------------------------------------------------------------------------
void __fastcall TForm2::BNum2Click(TObject *Sender)
{
Edit1->Text+="2";
}
//---------------------------------------------------------------------------
...
...
...
void __fastcall TForm2::BNum9Click(TObject *Sender)
{
Edit1->Text+="9";
}
//---------------------------------------------------------------------------
void __fastcall TForm2::BNum0Click(TObject *Sender)
{
Edit1->Text+="0";
}
//---------------------------------------------------------------------------
void __fastcall TForm2::BNum00Click(TObject *Sender)
{
Edit1->Text+="00";
}
//---------------------------------------------------------------------------
void __fastcall TForm2::BClearClick(TObject *Sender)
{
Edit1->Text="";
}
//---------------------------------------------------------------------------
버튼마다 숫자 입력코드가 있어서 코드가 길어졌는데..
[문제]
어떻게 하면 좀더 심플하게 짤수 없을까요?
많은 성원 부탁드립니다.
[추신]
코드와 화면을 약간 수정했습니다.
"00" 두개짜리 버튼을 추가했어요
..
|
일단 여기서는 정수 표현만 하겠습니다.
1. 각각의 숫자 버튼마다 Tag 속성값을 숫자버튼에 해당하는 값으로 설정을 합니다.
2. Edit1 박스에 표현할 숫자값을 표현할 전역변수를 하나 만듭니다. int g_Number = 0 ;
3. 그리고 이벤트 함수를 하나 만듭니다.
void __fastcall TForm2::NumberButtonClick(TObject *Sender)
{
TButton* pButton = dynamic_cast<TButton *>(Sender) ;
g_Number = (Number * 10) + pButton->Tag ;
Edit1->Text = g_Number ;
}
4. 만들어진 이벤트 함수를 각각의 버튼의 Click 이벤트에 등록을 시킵니다.