📄 main.pas
字号:
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, ExtCtrls,Math;
type
TCalculator_Form = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
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;
Button18: TButton;
Button19: TButton;
Button20: TButton;
Button21: TButton;
Button22: TButton;
Button23: TButton;
Button24: TButton;
Button25: TButton;
Button26: TButton;
Button27: TButton;
Button28: TButton;
Button29: TButton;
Button30: TButton;
Button31: TButton;
Button32: TButton;
Button33: TButton;
Button34: TButton;
Button35: TButton;
Button36: TButton;
Button37: TButton;
Button38: TButton;
Button39: TButton;
Button40: TButton;
Button41: TButton;
Button42: TButton;
Button43: TButton;
Button44: TButton;
Button45: TButton;
Button46: TButton;
Button47: TButton;
Button48: TButton;
Button49: TButton;
Button50: TButton;
Button51: TButton;
Button52: TButton;
Button53: TButton;
Button54: TButton;
Button55: TButton;
Button56: TButton;
Button57: TButton;
Button58: TButton;
N13: TMenuItem;
Button59: TButton;
Button60: TButton;
N14: TMenuItem;
N15: TMenuItem;
N16: TMenuItem;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
RadioButton5: TRadioButton;
RadioButton6: TRadioButton;
procedure N5Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure Button17Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure Button22Click(Sender: TObject);
procedure Button24Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button59Click(Sender: TObject);
procedure Button53Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button19Click(Sender: TObject);
procedure Button25Click(Sender: TObject);
procedure Button26Click(Sender: TObject);
procedure Button23Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button54Click(Sender: TObject);
procedure Button56Click(Sender: TObject);
procedure Button55Click(Sender: TObject);
procedure Button57Click(Sender: TObject);
procedure Button60Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure RadioButton4Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure RadioButton5Click(Sender: TObject);
procedure RadioButton6Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure Button41Click(Sender: TObject);
procedure Button42Click(Sender: TObject);
procedure Button43Click(Sender: TObject);
procedure Button45Click(Sender: TObject);
procedure Button48Click(Sender: TObject);
procedure Button47Click(Sender: TObject);
procedure Button52Click(Sender: TObject);
procedure Button51Click(Sender: TObject);
procedure Button50Click(Sender: TObject);
procedure Button58Click(Sender: TObject);
procedure Button27Click(Sender: TObject);
procedure Button21Click(Sender: TObject);
procedure Button46Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button28Click(Sender: TObject);
procedure Button29Click(Sender: TObject);
procedure Button30Click(Sender: TObject);
procedure Button31Click(Sender: TObject);
procedure Button32Click(Sender: TObject);
procedure Button33Click(Sender: TObject);
procedure Button34Click(Sender: TObject);
procedure Button38Click(Sender: TObject);
procedure Button36Click(Sender: TObject);
procedure Button35Click(Sender: TObject);
procedure Button37Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure StardardShow();
procedure ScienticShow();
procedure StardardToScientic();
procedure ScienticToStardard();
procedure CheckAlgorism();
procedure CheckBinary();
procedure CheckOctavo();
procedure CheckHex();
end;
var
Calculator_Form: TCalculator_Form;
start_flag,float_flag,n1_flag,mem_flag:boolean;
num1,num2,num3,buff:real;
sign,haob:integer;
mem:real; //内部存储
stat_mem:array[1..100] of real; //统计存储
stat_count:integer; //统计数个数
implementation
uses stat;
{$R *.dfm}
procedure TCalculator_Form.N5Click(Sender: TObject);
begin
Close; //退出本程序
end;
function StrToNum(Str:string; s:integer):real;
var
i,j,k,dec:integer;
c,sign:char;
sum:real;
begin
j:=strlen(pchar(str));
sign:='*';
sum:=0;
for i:=1 to j do
begin
c:=str[i];
if c='0' then
k:=0
else if c='1' then
k:=1
else if c='2' then
k:=2
else if c='3' then
k:=3
else if c='4' then
k:=4
else if c='5' then
k:=5
else if c='6' then
k:=6
else if c='7' then
k:=7
else if c='8' then
k:=8
else if c='9' then
k:=9
else if c='A' then
k:=10
else if c='B' then
k:=11
else if c='C' then
k:=12
else if c='D' then
k:=13
else if c='E' then
k:=14
else if c='F' then
k:=15
else
begin
sign:='/';
dec:=1;
k:=0;
end;
if sign='*' then
sum:=sum*s+k
else
begin
sum:=sum+k / dec;
dec:=dec*S;
end;
end;
StrToNum:=sum;
end;
function Numtoch(x:real):char;
begin
if x=0 then
numtoch:='0'
else if x=1 then
numtoch:='1'
else if x=2 then
numtoch:='2'
else if x=3 then
numtoch:='3'
else if x=4 then
numtoch:='4'
else if x=5 then
numtoch:='5'
else if x=6 then
numtoch:='6'
else if x=7 then
numtoch:='7'
else if x=8 then
numtoch:='8'
else if x=9 then
numtoch:='9'
else if x=10 then
numtoch:='A'
else if x=11 then
numtoch:='B'
else if x=12 then
numtoch:='C'
else if x=13 then
numtoch:='D'
else if x=14 then
numtoch:='E'
else
numtoch:='F';
end;
function NumTostr(x:real;haob:real):string;
var
s1,s:array[1..40] of char;
s2:pchar;
s3:string;
c:char;
i,j:integer;
x1,x2,k:real;
begin
x1:=int(x);
i:=1;
while x1>=haob do
begin
k:=x1 - int(x1 / haob)*haob;
c:=numtoch(k);
s1[i]:=c;
i:=i+1;
x1:=int(x1 / haob);
end;
s1[i]:=numtoch(x1);
for j:=1 to i do
s[j]:=s1[i+1-j];
i:=i+1;
x2:=x-int(x);
if x2<>0 then
begin
s[i]:='.';
i:=i+1;
x2:=x2*haob;
j:=1;
while (x2<>0) and (j<8) do
begin
k:=int(x2);
s[i]:=numtoch(k);
i:=i+1;
x2:=(x2-k)*haob;
j:=j+1;
end;
end;
i:=i-1;
getmem(s2,i);
s3:=s;
freemem(s2);
numtostr:=s3;
end;
procedure TCalculator_Form.StardardShow();
var
height,width:Integer;
left,top:Integer;
begin
Calculator_Form.Height:=250; //标准型计算器的高度
Calculator_Form.Width:=280; //标准型计算器的宽度
Edit1.Top:=10; //数字输入框的位置
Edit1.left:=30;
Edit1.Width:=220;
GroupBox1.Visible:=False; //屏蔽数制选择
GroupBox2.Visible:=false;
RadioButton1.Visible:=False;
RadioButton2.Visible:=False;
RadioButton3.Visible:=False;
RadioButton4.Visible:=False;
RadioButton5.Visible:=false;
RadioButton6.Visible:=false;
height:=32;
width:=40;
top:=40;
left:=20;
Button1.Top:=top; //定义计算器各按键的位置
Button1.left:=left;
Button2.Top:=top;
Button2.left:=left+80;
Button3.Top:=top;
Button3.left:=left+80*2;
//第一列按键
Button54.Top:=top+height;
Button54.left:=left;
Button55.Top:=top+height*2;
Button55.left:=left;
Button56.Top:=top+height*3;
Button56.left:=left;
Button57.Top:=top+height*4;
Button57.left:=left;
//第二列按键
Button4.Top:=top+height;
Button4.left:=left+width;
Button10.Top:=top+height*2;
Button10.left:=left+width;
Button16.Top:=top+height*3;
Button16.left:=left+width;
Button22.Top:=top+height*4;
Button22.left:=left+width;
//第三列按键
Button5.Top:=top+height;
Button5.left:=left+width*2;
Button11.Top:=top+height*2;
Button11.left:=left+width*2;
Button17.Top:=top+height*3;
Button17.left:=left+width*2;
Button23.Top:=top+height*4;
Button23.left:=left+width*2;
//第四列按键
Button6.Top:=top+height;
Button6.left:=left+width*3;
Button12.Top:=top+height*2;
Button12.left:=left+width*3;
Button18.Top:=top+height*3;
Button18.left:=left+width*3;
Button24.Top:=top+height*4;
Button24.left:=left+width*3;
//第五列按键
Button7.Top:=top+height;
Button7.left:=left+width*4;
Button13.Top:=top+height*2;
Button13.left:=left+width*4;
Button19.Top:=top+height*3;
Button19.left:=left+width*4;
Button25.Top:=top+height*4;
Button25.left:=left+width*4;
//第六列按键
Button59.Top:=top+height;
Button59.left:=left+width*5;
Button59.Visible:=true;
Button60.Top:=top+height*2;
Button60.left:=left+width*5;
Button60.Visible:=true;
Button53.Top:=top+height*3;
Button53.left:=left+width*5;
Button26.Top:=top+height*4;
Button26.left:=left+width*5;
//屏蔽其他没用按钮
Button8.Visible:=False;
Button9.Visible:=False;
Button15.Visible:=False;
Button14.Visible:=False;
Button20.Visible:=False;
Button21.Visible:=False;
Button27.Visible:=False;
Button28.Visible:=False;
Button29.Visible:=False;
Button30.Visible:=False;
Button31.Visible:=False;
Button32.Visible:=False;
Button33.Visible:=False;
Button34.Visible:=False;
Button35.Visible:=False;
Button36.Visible:=False;
Button37.Visible:=False;
Button38.Visible:=False;
Button39.Visible:=False;
Button40.Visible:=False;
Button41.Visible:=False;
Button42.Visible:=False;
Button43.Visible:=False;
Button44.Visible:=False;
Button45.Visible:=False;
Button46.Visible:=False;
Button47.Visible:=False;
Button48.Visible:=False;
Button49.Visible:=False;
Button50.Visible:=False;
Button51.Visible:=False;
Button52.Visible:=False;
Button58.Visible:=False;
end;
procedure TCalculator_Form.ScienticShow();
var
height,width:Integer;
left1,top,left2:Integer;
begin
Calculator_Form.Height:=330; //标准型计算器的高度
Calculator_Form.Width:=480; //标准型计算器的宽度
Edit1.Top:=10; //数字输入框的位置
Edit1.left:=130;
Edit1.Width:=320;
GroupBox1.Visible:=true;
GroupBox1.Top:=32;
GroupBox1.Left:=10;
GroupBox1.Width:=300;
RadioButton1.Visible:=true;
RadioButton1.top:=16;
RadioButton1.Left:=10;
RadioButton2.Visible:=true;
RadioButton2.Checked:=true;
RadioButton2.top:=16;
RadioButton2.Left:=85;
N11.Checked:=true;
RadioButton3.Visible:=true;
RadioButton3.top:=16;
RadioButton3.Left:=160;
RadioButton4.Visible:=true;
RadioButton4.top:=16;
RadioButton4.Left:=225;
GroupBox2.Visible:=true;
GroupBox2.Top:=32;
GroupBox2.left:=320;
GroupBox2.Width:=130;
RadioButton5.Visible:=true;
RadioButton5.Checked:=true;
RadioButton5.top:=16;
RadioButton5.Left:=10;
N15.Checked:=true;
RadioButton6.Visible:=true;
RadioButton6.top:=16;
RadioButton6.Left:=70;
height:=32;
width:=40;
top:=80;
left1:=10;
left2:=220;
Button1.Top:=top; //定义计算器各按键的位置
Button1.left:=left2;
Button2.Top:=top;
Button2.left:=left2+80;
Button3.Top:=top;
Button3.left:=left2+80*2;
//第一列按键
Button34.Visible:=true;
Button34.Top:=top+height;
Button34.left:=left1;
Button35.Visible:=true;
Button35.Top:=top+height*2;
Button35.left:=left1;
Button36.Visible:=true;
Button36.Top:=top+height*3;
Button36.left:=left1;
Button37.Visible:=true;
Button37.Top:=top+height*4;
Button37.left:=left1;
Button38.Visible:=true;
Button38.Top:=top+height*5;
Button38.left:=left1;
//第二列按键
Button39.Visible:=true;
Button39.Top:=top+height;
Button39.left:=left1+width;
Button40.Visible:=true;
Button40.Top:=top+height*2;
Button40.left:=left1+width;
Button41.Visible:=true;
Button41.Top:=top+height*3;
Button41.left:=left1+width;
Button42.Visible:=true;
Button42.Top:=top+height*4;
Button42.left:=left1+width;
Button43.Visible:=true;
Button43.Top:=top+height*5;
Button43.left:=left1+width;
//第三列按键
Button44.Visible:=true;
Button44.Top:=top+height;
Button44.left:=left1+width*2;
Button45.Visible:=true;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -