程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi實戰計算器功能

Delphi實戰計算器功能

編輯:Delphi

Delphi寫的計算器,適合初學者參閱。主要利用Delphi 的Button 控件、Label 控件和Edit 控件實現面板的組成。定義一個整數變量n,當點擊不同的運算按鈕時,給n 進行不同的賦值,並設置臨時變量並賦值。為了使程序結構緊湊,本例使用Case 語句實現加減乘除的運算。

設計步驟:首先實現點擊按鍵時在運算框中顯示數字,然後在點擊運算按鍵時,為運算設置標志變量並為臨時變量賦值。點擊“=”按鈕時,實現運算功能。當進行除法運算時,除數為0,通過Showmessage 函數給出錯誤信息。窗體上接收和顯示數據都是利用Edit 控件的Text 屬性,但它僅支持數據類型為String 的變量,而四則運算要求的數據是Float 類型的,所以需要調用StrtoFloat()函數和FloattoStr()函數進行數據類型轉換。

1.新建工程
(1)啟動Delphi 6.0 程序。選擇“文件”菜單下的“新建”命令,從彈出的子菜單中選擇Application 選項,則出現新建工程的Form1 窗口。
(2)選擇“文件”菜單下的“工程另存為”命令,彈出Save Unit1 As 對話框。在“保存在”列表框中選擇需要存放該窗口文件所在的目錄名;在“文件名”編輯框中填寫文件名,這裡填寫“Unit1”,點擊“保存”按鈕,保存上面的選項。
(3)執行上一步後,將彈出“工程另存為”對話框。在“保存在”列表框中選擇需要存放該工程的目錄名,最好和第(2)步選取相同的目錄;在“文件名”編輯框中填寫保存處理該工程的源代碼的文件名,這裡填寫“Project1”,點擊“保存”按鈕,保存上面的選項。

2.修改窗口
(1)激活Form1 窗口,在“屬性”中設置該窗體的Caption 屬性為“簡易計算器”,Color 屬性設置為“clBtnFace”。
(2)在構件選項板上選擇“標准”頁上的Edit 選項,將鼠標移到窗口中點擊,生產Edit 控件,用鼠標調整其合適的大小和在窗體上的位置。再選擇“標准”頁上的Label 控件,將其放置在Edit 控件左邊,設置其Caption 屬性為“運算框”。
(3)選擇“標准”頁上的Button 選項,在窗體中添加一個按鈕,調整其合適的大小。將其選中,選擇“編輯”菜單下的“復制”命令復制該按鈕,再選擇“粘貼”命令,粘貼按鈕,重復粘貼操作,直至得到12 個大小相等的按鈕。分別選中各個按鈕,在“屬性”中將其Caption 屬性分別設置為“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“=”和“清空”。
(4)按照步驟(3),為窗體再添加4 個大小相等的Button 控件,將其“Caption”屬性分別設置為“+”,“-”,“x”,“/”。
(5)按下Shift 鍵,逐一單擊選中面板上所有的Button 控件,選擇“編輯”菜單下的“對齊”命令,彈出如下圖(左圖) 所示“對齊”對話框,從中選擇合適的對齊方式,使控件在窗體上合適的布置,如下圖(右圖)所示。利用鼠標拖動的方法一般不容易對齊窗體上的控件,這時需要利用“對齊”命令。

Delphi制作計算器的相關參數設置

代碼分析:

(1)首先在程序的聲明階段定義三個變量:

var
temp1:string;
temp2:real;
n:integer;

其中變量temp1 和temp2 用作中間變量,存儲臨時數據,temp1 存儲string 類型數據,temp2 存儲real 類型數據。而整型變量n 則是用於在程序運行過程中判斷用戶選擇的運算類型,n 被賦值1,2,3,4,分別代表加減乘除運算。
(2)要實現按鍵輸入數據的功能,需要為每個按鈕編寫響應代碼。為了實現這一功能,需要逐一為0~9 的10 個Button 控件編寫代碼:

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=Edit1.Text+’1’ //在運算框中輸入數字“1”
end;

其他控件的代碼類似,參見程序完整代碼。

(3)下面編寫運算符控件的響應代碼。當點擊運算符時,給標志變量n 賦值,然後將Edit 控件中的數值賦值給temp1 並將Edit 清空,下面以加法為例介紹:

procedure TForm1.Button13Click(Sender: TObject);
begin
n:=1; //為加法運算設置標志變量
temp1:=Edit1.Text; //為臨時變量temp1 賦值
Edit1.Clear; //清空運算框
end;

(4)為“清空”按鈕的點擊事件添加代碼很簡單,只需用到Edit1.Clear 即可。

procedure TForm1.Button12Click(Sender: TObject);
begin
Edit1.Clear //清除文本框中的數字
end;

(5)本例的關鍵代碼在於執行計算,這就需要為“=”按鈕的OnClick 事件添加代碼。其中,當進行除法運算時,如果除數為0,需要給出錯誤提示。運算完畢後,還需要將運算結果從運算框中顯示出來。這裡用到了Case 語句和if 語句,讀者可細加體會:

procedure TForm1.Button11Click(Sender: TObject);
begin
case n of
1:temp2:=strtofloat(temp1)+strtofloat(Edit1.Text);
2:temp2:=strtofloat(temp1)-strtofloat(Edit1.Text);
3:temp2:=strtofloat(Edit1.Text)*strtofloat(temp1);
4:if strtofloat(Edit1.Text)=0 then
begin
showmessage(’除數為0!’);
exit;
end
else
temp2:=strtofloat(temp1)/strtofloat(Edit1.Text);
end;
Edit1.Text:=floattostr(temp2);
end;

程序完整代碼如下:

vIEw source print? 001 unit Unit1; 002 interface 003 uses 004 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 005 StdCtrls; 006 type 007 TForm1 = class(TForm) 008 Edit1: TEdit; 009 Button1: TButton; 010 Button2: TButton; 011 Button3: TButton; 012 Button4: TButton; 013 Button5: TButton; 014 Button6: TButton; 015 Button7: TButton; 016 Button8: TButton; 017 Button9: TButton; 018 Button10: TButton; 019 Button11: TButton; 020 Button12: TButton; 021 Button13: TButton; 022 Button14: TButton; 023 Button15: TButton; 024 Button16: TButton; 025 Label1: TLabel; 026 procedure Button1Click(Sender: TObject); 027 procedure Button2Click(Sender: TObject); 028 procedure Button3Click(Sender: TObject); 029 procedure Button4Click(Sender: TObject); 030 procedure Button5Click(Sender: TObject); 031 procedure Button6Click(Sender: TObject); 032 procedure Button7Click(Sender: TObject); 033 procedure Button8Click(Sender: TObject); 034 procedure Button9Click(Sender: TObject); 035 procedure Button10Click(Sender: TObject); 036 procedure Button11Click(Sender: TObject); 037 procedure Button12Click(Sender: TObject); 038 procedure Button13Click(Sender: TObject); 039 procedure Button14Click(Sender: TObject); 040 procedure Button15Click(Sender: TObject); 041 procedure Button16Click(Sender: TObject); 042 private 043 { Private declarations } 044 public 045 { Public declarations } 046 end; 047 var 048 Form1: TForm1; 049 temp1: string; 050 temp2: real; 051 n: integer; 052 implementation 053 {$R *.DFM} 054 procedure TForm1.Button1Click(Sender: TObject); 055 begin 056 Edit1.Text:=Edit1.Text+’1’ //在運算框中輸入數字“1” 057 end; 058 procedure TForm1.Button2Click(Sender: TObject); 059 begin 060 Edit1.Text:=Edit1.Text+’2’ //在運算框中輸入數字“2” 061 end; 062 procedure TForm1.Button3Click(Sender: TObject); 063 begin 064 Edit1.Text:=Edit1.Text+’3’ //在運算框中輸入數字“3” 065 end; 066 procedure TForm1.Button4Click(Sender: TObject); 067 begin 068 Edit1.Text:=Edit1.Text+’4’ //在運算框中輸入數字“4” 069 end; 070 procedure TForm1.Button5Click(Sender: TObject); 071 begin 072 Edit1.Text:=Edit1.Text+’5’ //在運算框中輸入數字“5” 073 end; 074 procedure TForm1.Button6Click(Sender: TObject); 075 begin 076 Edit1.Text:=Edit1.Text+’6’ //在運算框中輸入數字“6” 077 end; 078 procedure TForm1.Button7Click(Sender: TObject); 079 begin 080 Edit1.Text:=Edit1.Text+’7’ //在運算框中輸入數字“7” 081 end; 082 procedure TForm1.Button8Click(Sender: TObject); 083 begin 084 Edit1.Text:=Edit1.Text+’8’ //在運算框中輸入數字“8” 085 end; 086 procedure TForm1.Button9Click(Sender: TObject); 087 begin 088 Edit1.Text:=Edit1.Text+’9’ //在運算框中輸入數字“9” 089 end; 090 procedure TForm1.Button10Click(Sender: TObject); 091 begin 092 Edit1.Text:=Edit1.Text+’0’ //在運算框中輸入數字“0” 093 end; 094 procedure TForm1.Button12Click(Sender: TObject); 095 begin 096 Edit1.Clear //清除文本框 097 end; 098 procedure TForm1.Button13Click(Sender: TObject); 099 begin 100 n:=1//設置加法標志變量 101 temp1:=Edit1.Text; //為臨時變量temp1 賦值 102 Edit1.Clear; //清空運算框 103 end; 104 procedure TForm1.Button14Click(Sender: TObject); 105 begin 106 n:=2; 107 temp1:=Edit1.Text; 108 Edit1.Clear; 109 end; 110 procedure TForm1.Button15Click(Sender: TObject); 111 begin 112 n:=3; 113 temp1:=Edit1.Text; 114 Edit1.Clear; 115 end; 116 procedure TForm1.Button16Click(Sender: TObject); 117 begin 118 n:=4; 119 temp1:=Edit1.Text; 120 Edit1.Clear; 121 end; 122 procedure TForm1.Button11Click(Sender: TObject); 123 begin 124 case of 125 1:temp2:=strtofloat(temp1)+strtofloat(Edit1.Text); 126 2:temp2:=strtofloat(temp1)-strtofloat(Edit1.Text); 127 3:temp2:=strtofloat(Edit1.Text)*strtofloat(temp1); 128 4:if strtofloat(Edit1.Text)=0 then 129 begin 130 showmessage(’除數為0!’); 131 exit; 132 end 133 else 134 temp2:=strtofloat(temp1)/strtofloat(Edit1.Text); 135 end; 136 Edit1.Text:=floattostr(temp2); 137 end; 138 end.
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved