Delphi APP 開發入門(三)簡易計算機

閲讀次數:6823 發表時間:2014/05/20

上週大家學會了設定Android/iOS編譯環境以及寫出第一個Hello World之後,我們今天要來寫第一隻APP簡易計算機。

新增一個空白的APP專案後,我們在畫面上新增一個Edit元件,並且將Align的屬性設為Top(置頂)。

接著更改Edit的TextSettings內的HorzAlign為Trailing,讓文字是靠右對齊。

接著開始佈置計算機的按鈕,我們使用Button元件,更改Text屬性並且拉到適當位置。

都佈置好了之後,我們就可以開始撰寫程式了。程式大概有幾個部份~

  • 數字按鈕處理(按下0~9及小數點)
  • 運算元處理(按下+、-、*、/)
  • 計算結果處理(按下=)
  • 其他部份(按C歸零、按+/-、與%)

我們來一一處理它。

數字按鈕處理

我們先在程式裡宣告三個變數,分別是num1、num2 第一、二次輸入的數字,R運算結果,類型則為Extended。另外是一個iOperator的Integer,這是用來記錄運算元的(1表+、2表-、3表*、4表/)。

var
Form1: TForm1;
num1,num2,R:Extended;
ioperator:integer;

接著我們處理數字及小數點按下的事件,在按鈕0雙擊二下,輸入以下程式碼。如果顯示的是0或是不是按小數點的話,就直接顯示輸入的數字,如果不成立的話,就將螢幕上顯示的數字累加。

procedure TForm1.Button1Click(Sender: TObject);
begin
if (Edit1.Text = '0') And (TButton(Sender).Text<>'.') then
Edit1.Text := TButton(Sender).Text
else Edit1.Text := Edit1.Text + TButton(Sender).Text;
end;

寫完後,我們將其它1-9以及小數點的按鈕的OnClick事件都指令到Button1Click就可以了。因為在我們剛才寫的事件中,是透過TButton(Sender).Text去判斷按鈕值,而不同按鈕傳入的Sender不同就可以做各自判斷了!

運算元處理

接著處理加減乘除的部份,我們也在+的按鈕點二下,輸入以下的程式碼。在按下時先將目前螢幕上顯示的值記錄到num1,接著判斷按鈕是+-*/而給予iOperator不同的值,最後將螢幕上清為0。

procedure TForm1.Button5Click(Sender: TObject);
begin
num1 := StrToFloat(Edit1.Text);
if TButton(Sender).Text = '+' then
iOperator := 1
else if TButton(Sender).Text = '-' then
iOperator := 2
else if TButton(Sender).Text = 'X' then
iOperator := 3
else if TButton(Sender).Text = '/' then
iOperator := 4
else iOperator := 0;
Edit1.Text := '0';
end;

寫完後一樣如同上一個步驟,將-*/的按鈕指定到Button5Click即可。

計算結果處理

最後處理結果=的按鈕,在=按鈕雙擊二下後,輸入以下的程式碼。

procedure TForm1.Button7Click(Sender: TObject);
begin
if iOperator >0 then begin
num2 := StrToFloat(Edit1.Text);
case iOperator of
1: R := num1 + num2;
2: R := num1 - num2;
3: R := num1 * num2;
4: R := num1 / num2;
end;
Edit1.Text := FloatToStr(R);
end;
end;

其他部份

  • 歸零 – 把螢幕清空為零
  • 正負值 – 將數字乘以負1
  • 百分比 – 將數字除以100

結果

最後執行後,我們可以看到程式的執行結果囉!完成了我們第一支同時支援Android、iOS、Wind32的計算機APP了。

原始碼下載  https://github.com/superlevin/XE6calculator

Delphi APP 開發入門(三)簡易計算機的更多相关文章

  1. Delphi APP 開發入門(四)簡易手電筒

    Delphi APP 開發入門(四)簡易手電筒 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次數:32 ...

  2. Delphi APP 開發入門(五)GPS 定位功能

    Delphi APP 開發入門(五)GPS 定位功能 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次數 ...

  3. Delphi APP 開發入門(八)SQLite資料庫

    Delphi APP 開發入門(八)SQLite資料庫 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次 ...

  4. Delphi APP 開發入門(七)通知與雲端推播

    Delphi APP 開發入門(七)通知與雲端推播 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次數: ...

  5. Delphi APP 開發入門(一)重生的 Delphi

    Delphi APP 開發入門(一)重生的 Delphi 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀 ...

  6. Delphi APP 開發入門(六)Object Pascal 語法初探

    Delphi APP 開發入門(六)Object Pascal 語法初探 分享: Share on facebookShare on twitterShare on google_plusone_sh ...

  7. Delphi APP 開發入門(十)REST Client 開發

    Delphi APP 開發入門(十)REST Client 開發 分享: Share on facebookShare on twitterShare on google_plusone_share ...

  8. Delphi APP 開發入門(九)拍照與分享

    Delphi APP 開發入門(九)拍照與分享 分享: Share on facebookShare on twitterShare on google_plusone_share   閲讀次數:30 ...

  9. Delphi APP 開發入門(二)Android/iOS設定,Hello World

    Delphi APP 開發入門(二)Android/iOS設定,Hello World 分享: Share on facebookShare on twitterShare on google_plu ...

随机推荐

  1. Effective C++ 条款26

    尽可能延后变量定义式的出现时间 我们知道定义一个对象的时候有一个不争的事实,那就是分配内存.假设是我们自己定义的对象.程序运行过程中会调用类的构造函数和析构函数. 我们打个例如,假设天下雨了,你带把雨 ...

  2. [转]Loadrunner Error code 10053 & Tomcat 连接器(connector)优化

    LoadRunner提示错误:Error : socket0 - Software caused connection abort. Error code : 10053. 在今天的测试过程中发现,s ...

  3. 系统管理模块_部门管理_改进_抽取添加与修改JSP页面中的公共代码_在显示层抽取BaseAction_合并Service层与Dao层

    系统管理模块_部门管理_改进1:抽取添加与修改JSP页面中的公共代码 commons.jspf <%@ page language="java" import="j ...

  4. 系统管理模块_岗位管理_改进_使用ModelDroven方案_套用美工写好的页面效果_添加功能与修改功能使用同一个页面

    改进_使用ModelDroven方案 @Controller @Scope("prototype") public class RoleAction extends ActionS ...

  5. Hadoop1.2.1 配置文件详解

    首先我们先回顾一下Hadoop的一些概念: Apache Hdoop 1.x 组成 NameNode(元数据服务器) Secondary NameNode(辅助元数据服务器) JobTracker(任 ...

  6. Android无线测试之—UiAutomator UiScrollable API介绍五

    滑动区域校准常量设置与获取 一.校准概念 校准常量指的是:滑动操作坐标时的偏移量,用来取偏移比例 二.相关API 返回值 API 描述 double getSwipeDeadZonePercentag ...

  7. poj_2486 动态规划

    题目大意 N个节点构成一棵树,每个节点上有一个权重val[i], 从根节点root出发在树上行走,行走的时候只能沿着树枝行进.最多在树上走k步,每第一次到达某个节点j,可以获得val[j]的收益,求从 ...

  8. [黑金原创教程] FPGA那些事儿《设计篇 I》- 图像处理前夕

    简介 一本为入门图像处理的入门书,另外还教你徒手搭建平台(片上系统),内容请看目录. 注意 为了达到最好的实验的结果,请准备以下硬件. AX301开发板, OV7670摄像模块, VGA接口显示器, ...

  9. Android 微信分享解疑

    from:http://blog.csdn.net/freesonhp/article/details/10756663 1.建立自己的应用 TestShareWX (1)应用包名是com.frees ...

  10. Node.js 搭建Web

    Express Express 是整个 Node.js 之中最为常见的一个框架(开发包),可以帮助我们快速构建一个WEB项目.(http://expressjs.com) 1.在 F 盘新建 node ...