永发信息网

用delphi做一个简单计算器

答案:1  悬赏:10  手机版
解决时间 2021-12-04 17:13
用delphi做一个简单计算器
最佳答案
试试这个

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
Button16: TButton;
Button17: TButton;
procedure Button4Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure Button17Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
procedure SetEditText(info: string);
{ Private declarations }
public
{ Public declarations }
end;
type //自定义一个Tcompute的类

Tcompute = object
private //保护类中成员数据的安全

temp1: double;
temp2: double;
temp3: double;
sign: Char;

public //把类中的成员函数进行共享

function Add(x: double; y: double): Double;
function Sub(x: double; y: double): Double;
function Mult(x: double; y: double): Double;
function Dived(x: double; y: double): Double;

end;
var
Form1: TForm1;
Info: Tcompute; //声明Info是类Tcompute的对象
oldinfo:string;

implementation

function Tcompute.Add(x: double; y: double): Double; //进行类的定义与实现

begin
Result := x + y;
end;

function Tcompute.Sub(x: double; y: double): Double;
begin
Result := x - y;
end;

function Tcompute.Mult(x: double; y: double): Double;
begin
Result := x * y;
end;

function Tcompute.Dived(x: double; y: double): Double;
begin
if (y = 0) then begin
Form1.Edit1.text:='1111111111';
//ShowMessage('除数不能为0!'); //这里判断除数不能为0
Result := x;
end else
Result := x / y;
end;

{$R *.dfm}

procedure TForm1.Button4Click(Sender: TObject);
begin
oldinfo := '';
SetEditText('');
Info.sign := ' ';
Info.temp1 := 0;
Info.temp2 := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
SetEditText('7');
Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
SetEditText('8');
Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
SetEditText('9');
Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
SetEditText('4');
Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
SetEditText('5');
Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
SetEditText('6');
Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
SetEditText('1');
Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
SetEditText('2');
Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
SetEditText('3');
Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button13Click(Sender: TObject);
begin
SetEditText('0');
Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
Button17Click(nil);
Info.temp2 := Info.temp1;
Info.sign := '+';
oldinfo := '';
end;

procedure TForm1.Button12Click(Sender: TObject);
begin
Button17Click(nil);
Info.temp2 := Info.temp1;
Info.sign := '-';
oldinfo := '';
end;

procedure TForm1.Button15Click(Sender: TObject);
begin
Button17Click(nil);
Info.temp2 := Info.temp1;
Info.sign := '*';
oldinfo := '';
end;

procedure TForm1.Button16Click(Sender: TObject);
begin
Button17Click(nil);
Info.temp2 := Info.temp1;
Info.sign := '/';
oldinfo := '';
end;

procedure TForm1.Button17Click(Sender: TObject);
begin
if Info.sign<>' ' then oldinfo := '';
if (Info.sign = '+') then
SetEditText(FloatToStr(Info.Add(Info.temp2, Info.temp1)))
else if (Info.sign = '-') then
SetEditText(FloatToStr(Info.Sub(Info.temp2, Info.temp1)))
else if (Info.sign = '*') then
SetEditText(FloatToStr(Info.Mult(Info.temp2, Info.temp1)))
else if (Info.sign = '/') then
SetEditText(FloatToStr(Info.Dived(Info.temp2, Info.temp1)));
if Edit1.Text<>'' then
Info.temp1 := StrToFloat(Edit1.Text);
Info.sign := ' ';
end;

procedure TForm1.Button14Click(Sender: TObject);
begin
SetEditText('.');
Info.temp1 := StrToFloat(Edit1.Text);
end;

procedure TForm1.SetEditText(info:string);
begin
Edit1.Text := oldinfo + info;
oldinfo := Edit1.Text;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
oldinfo := '';
end;

end.追问看不懂哎,老师给我们的程序就是我发的,可我不明白为什么他会报错。。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
洗衣机的排水管放水时,我想把盆里接水,但必须
卖方期权合约什么时候会履约,如何履约
带养四字成语有哪些
一笼中装着鸡和兔.上有20个头,下有60只脚,
蛋糕1.0p 什么意思
国内比较好的齿轮生产商有哪些呢?
小区内绿化业主反映狗屎多怎么说
我为什么我的生活总活在无声的世界里,我感到
失独家庭申请年龄多少岁济宁巿怎样规定的
饿了么商家未及时接单退款是由饿了么退款还是
thebestloveoflife是什么意思
下午坐了一下午,肚子疼,请问是怎么回事
桔子中含有什么?
Foxmal收邮件总是说错误信息:名称有效,找不
java任务拆分,如何去做好
推荐资讯
单选题下列说法或表示方法正确的是A.等质量的
联通路由器LOS灯亮红色是什么意思–手机爱问
电脑上桌面上的东西找不到了,打开设置才能找
mysqlgb2312与utf8有什么区别
地下城与勇士怎样知道别人加了我黑名单
福克斯1.6的油耗是多少,费油吗?求解答
高三学生最多一天写掉几根水笔芯?
益阳市农业局地址在什么地方?想过去办事
小峰陪父母散步用了1小时占全天时间的()%
临平有火车站吗
单选题马克思曾经声明,有人“一定要把我关于
小规模公司对公账户一季没有满9万,缴税怎么
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?