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 控件,選擇“編輯”菜單下的“對齊”命令,彈出如下圖(左圖) 所示“對齊”對話框,從中選擇合適的對齊方式,使控件在窗體上合適的布置,如下圖(右圖)所示。利用鼠標拖動的方法一般不容易對齊窗體上的控件,這時需要利用“對齊”命令。
代碼分析:
(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