先上图:

程序下载地址:http://115.com/file/e65jc1au
unit uForm_Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus, Math ;
type
TForm_Main = class(TForm)
edt_Mon: TEdit;
btn_N1: TButton;
btn_N2: TButton;
btn_N3: TButton;
btn_N4: TButton;
btn_N5: TButton;
btn_N6: TButton;
btn_N7: TButton;
btn_N8: TButton;
btn_N9: TButton;
btn_N0: TButton;
btn_NR: TButton;
btn_NC: TButton;
btn_NA: TButton;
btn_NS: TButton;
btn_NM: TButton;
btn_ND: TButton;
btn_NDot: TButton;
btn_Backspace: TButton;
MainMenu1: TMainMenu;
F1: TMenuItem;
X1: TMenuItem;
H1: TMenuItem;
A1: TMenuItem;
Button1: TButton;
Button2: TButton;
procedure btn_N1Click(Sender: TObject);
procedure btn_N2Click(Sender: TObject);
procedure btn_N3Click(Sender: TObject);
procedure btn_N4Click(Sender: TObject);
procedure btn_N5Click(Sender: TObject);
procedure btn_N6Click(Sender: TObject);
procedure btn_N7Click(Sender: TObject);
procedure btn_N8Click(Sender: TObject);
procedure btn_N9Click(Sender: TObject);
procedure btn_N0Click(Sender: TObject);
procedure btn_NDotClick(Sender: TObject);
procedure btn_BackspaceClick(Sender: TObject);
procedure X1Click(Sender: TObject);
procedure btn_NAClick(Sender: TObject);
procedure btn_NCClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btn_NSClick(Sender: TObject);
procedure btn_NMClick(Sender: TObject);
procedure btn_NDClick(Sender: TObject);
procedure btn_NRClick(Sender: TObject);
procedure A1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form_Main: TForm_Main;
temp1:real; //中间变量,存储临时数据
temp2:real; //中间变量,存储临时数据
result:real; //中间变量,存储运算结果数据
n:integer; //判断用户选择的操作符类型,1、2、3、4分别代表加、减、乘、除
Flag:Boolean; //判断是否为第二个被操作数的第一个数字,用于在输入操作符后,显示第一个被操作数,而不是将editbox清空。
{变量初始化在CreateForm事件里面}
implementation
uses uFomr_About;
{$R *.dfm}
procedure TForm_Main.btn_N1Click(Sender: TObject);
begin
if Flag then //如果点击了操作符(+-*/),则Flag为真,且这时是输入第二个被操作数的第一个字符
begin
edt_Mon.Text:= '1';
Flag:= False;
end
else if edt_Mon.Text <> '0' then //如果文本框里非0,就在string后面加1个'1'
edt_Mon.Text:= edt_Mon.Text + '1'
else //如果文本框里为0,清空再追加'1',不然就会显示'01'了,很丑。后面的2~9butten不重复说
begin
edt_Mon.Clear;
edt_Mon.Text:= edt_Mon.Text + '1'
end;
end;
procedure TForm_Main.btn_N2Click(Sender: TObject);
begin
if Flag then
begin
edt_Mon.Text:= '2';
Flag:= False;
end
else if edt_Mon.Text <> '0' then
edt_Mon.Text:= edt_Mon.Text + '2'
else
begin
edt_Mon.Clear;
edt_Mon.Text:= edt_Mon.Text + '2'
end;
end;
procedure TForm_Main.btn_N3Click(Sender: TObject);
begin
if Flag then
begin
edt_Mon.Text:= '3';
Flag:= False;
end
else if edt_Mon.Text <> '0' then
edt_Mon.Text:= edt_Mon.Text + '3'
else
begin
edt_Mon.Clear;
edt_Mon.Text:= edt_Mon.Text + '3'
end;
end;
procedure TForm_Main.btn_N4Click(Sender: TObject);
begin
if Flag then
begin
edt_Mon.Text:= '4';
Flag:= False;
end
else if edt_Mon.Text <> '0' then
edt_Mon.Text:= edt_Mon.Text + '4'
else
begin
edt_Mon.Clear;
edt_Mon.Text:= edt_Mon.Text + '4'
end;
end;
procedure TForm_Main.btn_N5Click(Sender: TObject);
begin
if Flag then
begin
edt_Mon.Text:= '5';
Flag:= False;
end
else if edt_Mon.Text <> '0' then
edt_Mon.Text:= edt_Mon.Text + '5'
else
begin
edt_Mon.Clear;
edt_Mon.Text:= edt_Mon.Text + '5'
end;
end;
procedure TForm_Main.btn_N6Click(Sender: TObject);
begin
if Flag then
begin
edt_Mon.Text:= '6';
Flag:= False;
end
else if edt_Mon.Text <> '0' then
edt_Mon.Text:= edt_Mon.Text + '6'
else
begin
edt_Mon.Clear;
edt_Mon.Text:= edt_Mon.Text + '6'
end;
end;
procedure TForm_Main.btn_N7Click(Sender: TObject);
begin
if Flag then
begin
edt_Mon.Text:= '7';
Flag:= False;
end
else if edt_Mon.Text <> '0' then
edt_Mon.Text:= edt_Mon.Text + '7'
else
begin
edt_Mon.Clear;
edt_Mon.Text:= edt_Mon.Text + '7'
end;
end;
procedure TForm_Main.btn_N8Click(Sender: TObject);
begin
if Flag then
begin
edt_Mon.Text:= '8';
Flag:= False;
end
else if edt_Mon.Text <> '0' then
edt_Mon.Text:= edt_Mon.Text + '8'
else
begin
edt_Mon.Clear;
edt_Mon.Text:= edt_Mon.Text + '8'
end;
end;
procedure TForm_Main.btn_N9Click(Sender: TObject);
begin
if Flag then
begin
edt_Mon.Text:= '9';
Flag:= False;
end
else if edt_Mon.Text <> '0' then
edt_Mon.Text:= edt_Mon.Text + '9'
else
begin
edt_Mon.Clear;
edt_Mon.Text:= edt_Mon.Text + '9'
end;
end;
procedure TForm_Main.btn_N0Click(Sender: TObject);
begin
if Flag then
begin
edt_Mon.Text:= '0';
Flag:= False;
end
else if edt_Mon.Text <> '0' then //在text不是'0'的情况下,末尾添加0,不然就会出现'000'的现象,这个可不是我们想要显示出来的数
edt_Mon.Text:= edt_Mon.Text + '0'
else
begin
edt_Mon.Clear;
edt_Mon.Text:= edt_Mon.Text + '0'
end;
end;
procedure TForm_Main.btn_NDotClick(Sender: TObject);
begin
if (edt_Mon.GetTextLen > 0) and //text里面没有值就不输入,有值才可驶入'.'
(Pos('.', edt_Mon.Text) = 0) then //一个数里面不能有多个点,只有在text中找不到'.'的情况下,才可以添加'.'
edt_Mon.Text:= edt_Mon.Text + '.';
end;
procedure TForm_Main.btn_BackspaceClick(Sender: TObject);
begin
edt_Mon.Text:= COPY(edt_Mon.Text,1,length(edt_Mon.Text) -1); //自己修改自己值后,赋给自己。就是把text的最后一个字符给删掉
end;
procedure TForm_Main.X1Click(Sender: TObject);
begin
Application.Terminate; //终止程序
end;
procedure TForm_Main.btn_NAClick(Sender: TObject);
begin
n:= 1; // 加法,操作标识为1,供“等号” 事件使用
Flag:=True; // 点了加好后,flag为真,为了在点击+后不清楚text,没办法,老婆要求
temp1:= strtofloat(edt_Mon.Text); //点了+后,把第一个被操作数存起来,-、*、/以此类推
end;
procedure TForm_Main.btn_NCClick(Sender: TObject);
begin
edt_Mon.Text:='0'; //AC清零,所有变量重置为0
temp1:= 0;
temp2:= 0;
result:= 0;
n:= 0;
Flag:=False;
end;
procedure TForm_Main.FormCreate(Sender: TObject); //窗口创建时,初始化变量
begin
edt_Mon.Text:='0';
temp1:= 0;
temp2:= 0;
result:= 0;
n:= 0;
Flag:=False;
end;
procedure TForm_Main.btn_NSClick(Sender: TObject);
begin
n:= 2;
Flag:=True;
temp1:= strtofloat(edt_Mon.Text);
end;
procedure TForm_Main.btn_NMClick(Sender: TObject);
begin
n:= 3;
Flag:=True;
temp1:= strtofloat(edt_Mon.Text);
end;
procedure TForm_Main.btn_NDClick(Sender: TObject);
begin
n:= 4;
Flag:=True;
temp1:= strtofloat(edt_Mon.Text);
end;
procedure TForm_Main.btn_NRClick(Sender: TObject); //等号事件
begin
temp2:= strtofloat(edt_Mon.Text); //操作前,先把第二个被操作数存进变量
case n of //+、-、*、/ 1、2、3、4
1:result:= temp1 + temp2;
2:result:= temp1 - temp2;
3:result:= temp1 * temp2;
4:if temp2 = 0 then
Showmessage('除数不可以为0!')
else
result:= temp1 / temp2;
end;
edt_Mon.Text:= floattostr(result);
end;
procedure TForm_Main.A1Click(Sender: TObject);
begin
Form_About.ShowModal;
end;
end.
unit uFomr_About;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm_About = class(TForm)
Label1: TLabel;
Label2: TLabel;
btn_Back: TButton;
Memo1: TMemo;
Label3: TLabel;
procedure btn_BackClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form_About: TForm_About;
implementation
{$R *.dfm}
procedure TForm_About.btn_BackClick(Sender: TObject);
begin
Close;
end;
end.
浙公网安备 33010602011771号