※ 2017년도에 이유는 모르지만 제작 했던 델파이 기반 계산기 입니다.
※ 당시에 Delphi2008로 코딩 했던것 같다.
1. 실행 화면
※ 당시에 윈도우 계산기와 비슷하게 제작 하려고 했던 것 같다.
2. 계산기 부분 Sample Source
※ 필요 하신 부분이 있으시면 참고용으로 봐주시면 될 듯 하다.
※ 혹시 전체적인 Source 가 필요하신분은 댓글을 달아 주시면 전달 드릴 수 있도록 하겠습니다.
// 숫자 클릭했을 때
function TForm_calc.NumberClick(Temp:Integer):Integer;
begin
// 계산 한번 끝나고 숫자입력시 All Clear
if Calc_Seq = 20 then
begin
Btn_CClick(nil);
end;
// 소수점 없음
if Dot = False then
begin
if Result_new = 0 then
begin
Result_new := Temp;
end else
begin
Result_new := Result_new * 10 + Temp;
end;
Label_Result.Caption := FloatToStr(Result_new);
end else
// 소수점 있음
if Dot = True then
begin
if Result_new = 0 then
begin
Result_new := Temp * 0.1;
Dot_Num := Dot_Num * 0.1;
end else
begin
Result_new := Result_new + Temp * (Dot_Num*0.1);
Dot_Num := Dot_Num * 0.1;
end;
Label_Result.Caption := FloatToStr(Result_new);
end;
Edit_Focus.SetFocus;
end;
procedure TForm_Calc.Timer1Timer(Sender: TObject);
begin
Case Calc_Seq of
0: // 숫자입력
begin
// 라벨 수식 초기화
Label_Old.Caption := '';
if Calc_var <> 0 then
begin
Calc_Seq := 1;
end;
end;
1: // 사칙연산
begin
if Result_old = 0 then
begin
Result_old := Result_new;
end else
begin
//
end;
Result_new := 0;
Dot := False;
// 라벨 수식 표시
Label_Old.Caption := Label_Old.Caption + FloatToStr(Result_old);
if Calc_var = 1 then Label_Old.Caption := Label_Old.Caption + '+';
if Calc_var = 2 then Label_Old.Caption := Label_Old.Caption + '-';
if Calc_var = 3 then Label_Old.Caption := Label_Old.Caption + '*';
if Calc_var = 4 then Label_Old.Caption := Label_Old.Caption + '/';
Calc_Seq := 10;
end;
10: // 계산하기
begin
// 계산이 하나다
if Equal_Click = True then
begin
Calc_Seq := 11;
end;
// 계산이 여러개
if Calc_Add = True then
begin
Calc_Seq := 12;
end;
end;
11: // 실제 계산 부분 - 계산이 한개
begin
Label_Old.Caption := Label_Old.Caption + FloatToStr(Result_new);
// +
if Calc_var = 1 then
begin
Result_new := Result_old + Result_new;
Result_old := Result_new; // 다음 계산을 위한 저장
end;
// -
if Calc_var = 2 then
begin
Result_new := Result_old - Result_new;
Result_old := Result_new; // 다음 계산을 위한 저장
end;
// *
if Calc_var = 3 then
begin
Result_new := Result_old * Result_new;
Result_old := Result_new; // 다음 계산을 위한 저장
end;
// div
if Calc_var = 4 then
begin
Result_new := Result_old / Result_new;
Result_old := Result_new; // 다음 계산을 위한 저장
end;
//
Label_Result.Caption := FloatToStr(Result_new);
Result_new := 0;
Dot := False;
Calc_var := 0;
Equal_Click := False;
Calc_Seq := 20;
end;
12: // 계산이 여러개
begin
// 라벨 수식 표시
Label_Old.Caption := Label_Old.Caption + FloatToStr(Result_new);
if Calc_var = 1 then Label_Old.Caption := Label_Old.Caption + '+';
if Calc_var = 2 then Label_Old.Caption := Label_Old.Caption + '-';
if Calc_var = 3 then Label_Old.Caption := Label_Old.Caption + '*';
if Calc_var = 4 then Label_Old.Caption := Label_Old.Caption + '/';
// +
if Calc_var_old = 1 then
begin
Result_new := Result_old + Result_new;
Result_old := Result_new; // 다음 계산을 위한 저장
end;
// -
if Calc_var_old = 2 then
begin
Result_new := Result_old - Result_new;
Result_old := Result_new; // 다음 계산을 위한 저장
end;
// *
if Calc_var_old = 3 then
begin
Result_new := Result_old * Result_new;
Result_old := Result_new; // 다음 계산을 위한 저장
end;
// div
if Calc_var_old = 4 then
begin
Result_new := Result_old / Result_new;
Result_old := Result_new; // 다음 계산을 위한 저장
end;
//
Label_Result.Caption := FloatToStr(Result_new);
Result_new := 0;
Dot := False;
//Calc_var := 0;
//Equal_Click := False;
Calc_Add := False;
Calc_Seq := 10;
end;
13:
begin
// 계산이 하나다
if Equal_Click = True then
begin
Calc_Seq := 11;
end;
// 계산이 여러개
if Calc_Add = True then
begin
Calc_Seq := 12;
end;
end;
20: // 계산 한번 끝나고 대기
begin
if Calc_var <> 0 then
begin
// 라벨 수식 표시
Label_Old.Caption := Label_Old.Caption + FloatToStr(Result_old);
if Calc_var = 1 then Label_Old.Caption := Label_Old.Caption + '+';
if Calc_var = 2 then Label_Old.Caption := Label_Old.Caption + '-';
if Calc_var = 3 then Label_Old.Caption := Label_Old.Caption + '*';
if Calc_var = 4 then Label_Old.Caption := Label_Old.Caption + '/';
Calc_Seq := 21;
end;
end;
21:
begin
if Equal_Click = True then
begin
Calc_Seq := 22;
end;
end;
22:
begin
// +
if Calc_var = 1 then
begin
Result_new := Result_old + Result_new;
Result_old := Result_new; // 다음 계산을 위한 저장
end;
// -
if Calc_var = 2 then
begin
Result_new := Result_old - Result_new;
Result_old := Result_new; // 다음 계산을 위한 저장
end;
// *
if Calc_var = 3 then
begin
Result_new := Result_old * Result_new;
Result_old := Result_new; // 다음 계산을 위한 저장
end;
// div
if Calc_var = 4 then
begin
Result_new := Result_old / Result_new;
Result_old := Result_new; // 다음 계산을 위한 저장
end;
//
Label_Result.Caption := FloatToStr(Result_new);
Result_new := 0;
Dot := False;
Calc_var := 0;
Equal_Click := False;
Calc_Seq := 20;
end;
end;
end;
'DELPHI > Sample Source' 카테고리의 다른 글
[JSON ArrObject / Sample Source] 제이슨 배열 DATA Parsing 하기 (0) | 2021.02.05 |
---|---|
[delphi / TstringGrid] StringGrid 간단 문법 사용 예제 (0) | 2021.01.29 |
[델파이 / 마방진] Delphi 로 마방진 (Magic Square) 코딩 하기 (0) | 2021.01.21 |
[델파이] JSON 간단 예제 소스 (1) | 2021.01.05 |
[Delphi 문법] "ExTractStrings" 간단 예제 (0) | 2021.01.01 |