2012年(106)
分类: 嵌入式
2012-05-07 17:50:44
一、 计算器
(一)整数计算器
步骤一:1. 向Form1中添加16个Button(数字Name:Button1至Button0;加减乘除Name:ButtonAdd,ButtonSub,ButtonMul,ButtonDiv;等号,取消Name:ButtonEqu,ButtonCan)和1个Edit组件。
2. 利用View菜单---Alignment Palette功能使16个Button排列整齐。
步骤二:
1. 在implementation后面添加变量x,y:
var
x,y:integer;
2. 填写16个Button的代码:
Button1至Button0(以Button1为例):
edit1.Text:=edit1.Text+'1';
ButtonCan:
edit1.Text:='';
ButtonAdd:
x:=strtoint(edit1.Text);
y:=1;
edit1.Text:='';
ButtonSub:
x:=strtoint(edit1.Text);
y:=2;
edit1.Text:='';
ButtonMul:
x:=strtoint(edit1.Text);
y:=3;
edit1.Text:='';
ButtonDiv:
x:=strtoint(edit1.Text);
y:=4;
edit1.Text:='';
ButtonEqu:
case y of
1:edit1.Text:=inttostr(x+strtoint(edit1.Text));
2:edit1.Text:=inttostr(x-strtoint(edit1.Text));
3:edit1.Text:=inttostr(x*strtoint(edit1.Text));
4:edit1.Text:=inttostr(x div strtoint(edit1.Text));
end;
设置键盘输入:
Button1---OnKeyPress事件:
if (Key>='0')and (Key<='9') then edit1.Text:=edit1.Text+Key;
if (Key='+') then
begin
x:=strtoint(edit1.Text);
y:=1;
edit1.Text:='';
end;
if (Key='-') then
begin
x:=strtoint(edit1.Text);
y:=2;
edit1.Text:='';
end;
if (Key='*') then
begin
x:=strtoint(edit1.Text);
y:=3;
edit1.Text:='';
end;
if (Key='/') then
begin
x:=strtoint(edit1.Text);
y:=4;
edit1.Text:='';
end;
if (Key='=') then
begin
case y of
1:edit1.Text:=inttostr(x+strtoint(edit1.Text));
2:edit1.Text:=inttostr(x-strtoint(edit1.Text));
3:edit1.Text:=inttostr(x*strtoint(edit1.Text));
4:edit1.Text:=inttostr(xdiv strtoint(edit1.Text));
end;
end; //need two end
把其他15个Button--- OnKeyPress事件 设置成与Button1--- OnKeyPress相同即可。
收尾工作:
Edit1---OnEnter事件:
button1.SetFocus;
小数计算器
步骤一:1. 在整数计算器的16个Button的基础上,继续添加4个Button(小数点 Name:ButtonDot 取相反数(+/-) Name:ButtonFu 取算术平方根(sqrt) Name:ButtonSqrt 退出: Name: ButtonExit)
2. 利用View菜单---Alignment Palette功能使16个Button排列整齐。
步骤二:Button1至Button0 与整数计算器的代码相同
在implementation后面添加变量x,y:
var
x:real;
y:integer;
ButtonDot:
edit1.Text:=edit1.Text+'.';
ButtonDot.Enabled:=false;
ButtonFu:
Edit1.Text:=floattostr(-strtofloat(edit1.Text));
ButtonSqrt:
edit1.Text:=floattostr(sqrt(strtofloat(edit1.Text)));
ButtonExit:
close;
ButtonCan:
edit1.Text:='';
ButtonAdd:
x:=strtofloat(edit1.Text);
y:=1;
edit1.Text:='';
ButtonDot.Enabled:=true;
ButtonSub:
x:=strtofloat(edit1.Text);
y:=2;
edit1.Text:='';
ButtonDot.Enabled:=true;
ButtonMul:
x:=strtofloat(edit1.Text);
y:=3;
edit1.Text:='';
ButtonDot.Enabled:=true;
ButtonDiv:
x:=strtofloat(edit1.Text);
y:=4;
edit1.Text:='';
ButtonDot.Enabled:=true;
ButtonEqu:
case y of
1:edit1.Text:=floattostr(x+strtofloat(edit1.Text));
2:edit1.Text:=floattostr(x-strtofloat(edit1.Text));
3:edit1.Text:=floattostr(x*strtofloat(edit1.Text));
4:edit1.Text:=floattostr(x/strtofloat(edit1.Text));
end;
3. 设置键盘输入:
Button1---OnKeyPress事件:
if(key>='0')and (key<='9') then edit1.Text:=edit1.Text+key;
if(key='+') then
begin
x:=strtofloat(edit1.Text);
y:=1;
edit1.Text:='';
end;
if(key='-') then
begin
x:=strtofloat(edit1.Text);
y:=2;
edit1.Text:='';
end;
if(key='*') then
begin
x:=strtofloat(edit1.Text);
y:=3;
edit1.Text:='';
end;
if(key='/') then
begin
x:=strtofloat(edit1.Text);
y:=4;
edit1.Text:='';
end;
if(key='.') then edit1.Text:=edit1.Text+'.';
if(key='=') then
begin
case y of
1:edit1.Text:=floattostr(x+strtofloat(edit1.Text));
2:edit1.Text:=floattostr(x-strtofloat(edit1.Text));
3:edit1.Text:=floattostr(x*strtofloat(edit1.Text));
4:edit1.Text:=floattostr(x/strtofloat(edit1.Text));
end;
end;
把其他所有Button--- OnKeyPress事件 设置成与Button1--- OnKeyPress相同即可。
收尾工作:
Button1---OnEnter事件:
button1.SetFocus;