求一个DELPHI的简单计算器代码,能运算加减乘除和退格功能就行

 我来答
匿名用户
2013-07-12
展开全部
procedure TForm1.btn_0Click(Sender: TObject);
begin
if jl_jjccEX = true then
begin
edit1.Text := ';
jl_jjccEX := false;
end;
if edit1.Text = '0' then //如果为0按0则为0
edit1.Text := '0'
else //如果不为的情况
edit1.Text := edit1.Text + '0';
if jl_jjccfh = '/' then
begin
MessageBox(Handle,
'除数为0无意义',
'简易计算器提示',
MB_OK + MB_ICONEXCLAMATION);
jl_jjccfh := ';
edit1.Text := '0';
end;

end;

procedure TForm1.btn_qkClick(Sender: TObject);
begin
{各变量重新赋值}
Chucuen := 0;
jld := 0; //如每次退格到0则,给记录小数点的变量重新赋值
jlzf:= 0; //如每次退格到0则,给记录+/-的变量重新赋值
edit1.Text := '0';
jl_jjccEX := false;
end;

procedure TForm1.btn_tgClick(Sender: TObject);
begin
{判断格到一位时候为0}
if (Length(edit1.Text) = 2) and (Copy(edit1.Text,1,1) = '-') then
edit1.Text := '0'; //如果为负数则退到2位时再退为0
if edit1.Text = '0' then
begin
edit1.Text := '0';
jld := 0; //如每次退格到0则,给记录小数点的变量重新赋值
jlzf:= 0; //如每次退格到0则,给记录+/-的变量重新赋值
end
else
if Length(edit1.Text) = 1 then
begin
edit1.Text := '0';
jld:= 0; //如每次退格到0则,给记录小数点的变量重新赋值
jlzf:= 0; //如每次退格到0则,给记录+/-的变量重新赋值
end
else //取edit1.text第二位起始edit1.text - 1的文本
edit1.Text := Copy(edit1.Text,1,Length(edit1.Text) - 1);

end;

procedure TForm1.btn_zfClick(Sender: TObject);
{处理+/-的事件}
var zf: string; //声明局部变量储存插入+/-
begin
Inc(jlzf);
zf := edit1.Text;
if jlzf mod 2 <> 0 then
if edit1.Text <> '0' then
begin
Insert('-',zf,1);
edit1.Text := zf;
end;
if jlzf mod 2 = 0 then
if Copy(edit1.Text,1,1) = '-' then
edit1.Text := Copy(edit1.Text,2,Length(edit1.Text) - 1);

end;

procedure TForm1.jisuan(Sender: TObject);
begin
jl_jjccEX := true;
Chucuen := StrToFloat(edit1.Text);
if (Sender as TButton).Caption = '+' then
jl_jjccfh := '+'; //记录+号
if (Sender as TButton).Caption = '-' then
jl_jjccfh := '-'; //记录-号
if (Sender as TButton).Caption = '*' then
jl_jjccfh := '*'; //记录*号
if (Sender as TButton).Caption = '/' then
jl_jjccfh := '/'; //记录/号

end;
{执行计算的过程}
procedure TForm1.btn_dyClick(Sender: TObject);
begin
try //除0的错误避免
if jl_jjccfh = '+' then //得出+的结果
edit1.Text := FloatToStr(Chucuen + StrToFloat(edit1.Text));
if jl_jjccfh = '-' then //得出-的结果
edit1.Text := FloatToStr(Chucuen - StrToFloat(edit1.Text));
if jl_jjccfh = '*' then //得出*的结果
edit1.Text := FloatToStr(Chucuen * StrToFloat(edit1.Text));
if jl_jjccfh = '/' then //得出/的结果
edit1.Text := FloatToStr(Chucuen / StrToFloat(edit1.Text));
except
MessageBox(Handle,
'发生异常错误' + #13#10 + '可能被除数是0'+
#13#10 + '或除数是0',
'起点简易计算器Error',
MB_OK + MB_ICONERROR);
end;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Inc(jl_Change);
if jl_Change > 8 then
jl_Change := 0;
case jl_Change of
1: label1.Font.Color := clRed;
2: label1.Font.Color := clBlue;
3: label1.Font.Color := clTeal;
4: label1.Font.Color := clLime;
5: label1.Font.Color := clYellow;
6: label1.Font.Color := clAqua;
7: label1.Font.Color := clWhite;
8: label1.Font.Color := clGreen;
end;
end;

end.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式