📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, XPMan, StdCtrls,Math;
type
TForm1 = class(TForm)
ShowE: TEdit;
MainMenu1: TMainMenu;
XPManifest1: TXPManifest;
N1: TMenuItem;
C1: TMenuItem;
N2: TMenuItem;
H1: TMenuItem;
N3: TMenuItem;
A1: TMenuItem;
NM3: TButton;
NM2: TButton;
NM1: TButton;
NM6: TButton;
NM5: TButton;
NM4: TButton;
NM9: TButton;
NM8: TButton;
NM7: TButton;
Point: TButton;
NM0: TButton;
Add: TButton;
Result: TButton;
Reduce: TButton;
Divide: TButton;
Multiply: TButton;
Restar: TButton;
Negative: TButton;
procedure NM1Click(Sender: TObject);
procedure RestarClick(Sender: TObject);
procedure NM2Click(Sender: TObject);
procedure NM3Click(Sender: TObject);
procedure NM4Click(Sender: TObject);
procedure NM5Click(Sender: TObject);
procedure NM6Click(Sender: TObject);
procedure NM7Click(Sender: TObject);
procedure NM8Click(Sender: TObject);
procedure NM9Click(Sender: TObject);
procedure AddClick(Sender: TObject);
procedure ResultClick(Sender: TObject);
procedure ReduceClick(Sender: TObject);
procedure MultiplyClick(Sender: TObject);
procedure DivideClick(Sender: TObject);
procedure NM0Click(Sender: TObject);
procedure NegativeClick(Sender: TObject);
procedure PointClick(Sender: TObject);
procedure C1Click(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
procedure DoResult;
procedure DoNumber(N:integer);
end;
var
Form1: TForm1;
implementation
var number1,number2,R : double;
status,operate,P,HadR: integer;
MySender: TObject;
{$R *.dfm}
{**********************************数字按钮响应********************************}
procedure TForm1.NM1Click(Sender: TObject);
begin
DoNumber(1);
end;
procedure TForm1.NM2Click(Sender: TObject);
begin
DoNumber(2);
end;
procedure TForm1.NM3Click(Sender: TObject);
begin
DoNumber(3);
end;
procedure TForm1.NM4Click(Sender: TObject);
begin
DoNumber(4);
end;
procedure TForm1.NM5Click(Sender: TObject);
begin
DoNumber(5);
end;
procedure TForm1.NM6Click(Sender: TObject);
begin
DoNumber(6);
end;
procedure TForm1.NM7Click(Sender: TObject);
begin
DoNumber(7);
end;
procedure TForm1.NM8Click(Sender: TObject);
begin
DoNumber(8);
end;
procedure TForm1.NM9Click(Sender: TObject);
begin
DoNumber(9);
end;
procedure TForm1.NM0Click(Sender: TObject);
begin
DoNumber(0);
end;
{************************************数字按钮响应总函数************************}
procedure TForm1.DoNumber(N: integer);
begin
if HadR=1 then RestarClick(self);
if p=0 then
case status of
1:begin number1:=number1*10+N;
ShowE.Text:=floattostr(number1);
end;
2: begin
number2:=number2*10+N;
ShowE.Text:=floattostr(number2);
end;
end
else
case status of
1:begin number1:=number1+N*power(0.1,p);
ShowE.Text:=floattostr(number1);
p:=p+1;
end;
2: begin
number2:=number2+N*power(0.1,p);
ShowE.Text:=floattostr(number2);
p:=p+1;
end;
end;
end;
{******************************************等号响应****************************}
procedure TForm1.DoResult;
begin
case operate of
1:R:=number1+number2;
2:R:=number1-number2;
3:R:=number1*number2;
4:begin if number2=0
then showmessage('分母不能为零!')
else R:=number1/number2;
end;
end;
status:=1;
number1:=R;
number2:=0;
P:=0;
HadR:=1;
ShowE.Text:=floattostr(R);
end;
procedure TForm1.ResultClick(Sender: TObject);
begin
DoResult;
end;
{***************************************重置函数*******************************}
procedure TForm1.RestarClick(Sender: TObject);
begin
number1:=0;
number2:=0;
R:=0;
status:=1;
operate:=0;
ShowE.Text:='0';
p:=0;
HadR:=0;
Result.SetFocus;
MySender:=Sender;
end;
{*****************************************操作按钮*****************************}
procedure TForm1.AddClick(Sender: TObject);
begin
if number2<>0 then
DoResult;
operate:=1;
status:=2;
p:=0;
HadR:=0;
end;
procedure TForm1.ReduceClick(Sender: TObject);
begin
if number2<>0 then
DoResult;
operate:=2;
status:=2;
p:=0;
HadR:=0;
end;
procedure TForm1.MultiplyClick(Sender: TObject);
begin
if number2<>0 then
DoResult;
operate:=3;
status:=2;
p:=0;
HadR:=0;
end;
procedure TForm1.DivideClick(Sender: TObject);
begin
if number2<>0 then
DoResult;
operate:=4;
status:=2;
p:=0;
HadR:=0;
end;
{**********************************正负掉换************************************}
procedure TForm1.NegativeClick(Sender: TObject);
begin
case status of
1: begin number1:=-number1; ShowE.Text:=FloatToStr(number1); end;
2: begin number2:=-number2; ShowE.Text:=FloatToStr(number2); end;
end;
end;
{******************************小数点******************************************}
procedure TForm1.PointClick(Sender: TObject);
begin
if p<>0 then showMessage('非法输入!')
else
begin
p:=1;
HadR:=0;
end;
end;
{*********************************键盘响应*************************************}
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_NUMPAD0: DoNumber(0);
VK_NUMPAD1: DoNumber(1);
VK_NUMPAD2: DoNumber(2);
VK_NUMPAD3: DoNumber(3);
VK_NUMPAD4: DoNumber(4);
VK_NUMPAD5: DoNumber(5);
VK_NUMPAD6: DoNumber(6);
VK_NUMPAD7: DoNumber(7);
VK_NUMPAD8: DoNumber(8);
VK_NUMPAD9: DoNumber(9);
VK_MULTIPLY: Form1.Multiply.Click;
VK_ADD: Form1.Add.Click;
VK_SUBTRACT: Form1.Reduce.Click;
VK_SEPARATOR: Form1.Divide.click;
VK_DECIMAL: Form1.Point.click;
VK_RETURN : Form1.Result.Click;
end;
end;
{***************************************其他***********************************}
procedure TForm1.C1Click(Sender: TObject);
begin
showE.CopyToClipboard;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -