⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 完成Windows程序中计算器中的所有功能,使用类似Windows计算器的图形界面; (2) 使用可视化方法设计
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, ExtCtrls, Buttons;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    E1: TMenuItem;
    c1: TMenuItem;
    P1: TMenuItem;
    V1: TMenuItem;
    H1: TMenuItem;
    H2: TMenuItem;
    A1: TMenuItem;
    Panel1: TPanel;
    SpeedButton1: TSpeedButton;
    Edit1: TEdit;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    SpeedButton5: TSpeedButton;
    SpeedButton6: TSpeedButton;
    SpeedButton7: TSpeedButton;
    SpeedButton8: TSpeedButton;
    SpeedButton9: TSpeedButton;
    SpeedButton10: TSpeedButton;
    SpeedButton11: TSpeedButton;
    SpeedButton12: TSpeedButton;
    SpeedButton13: TSpeedButton;
    SpeedButton14: TSpeedButton;
    SpeedButton15: TSpeedButton;
    SpeedButton16: TSpeedButton;
    SpeedButton17: TSpeedButton;
    SpeedButton18: TSpeedButton;
    SpeedButton19: TSpeedButton;
    SpeedButton20: TSpeedButton;
    SpeedButton21: TSpeedButton;
    SpeedButton22: TSpeedButton;
    SpeedButton23: TSpeedButton;
    SpeedButton24: TSpeedButton;
    SpeedButton25: TSpeedButton;
    SpeedButton26: TSpeedButton;
    SpeedButton27: TSpeedButton;
    SpeedButton28: TSpeedButton;
    SpeedButton29: TSpeedButton;
    SpeedButton30: TSpeedButton;
    SpeedButton31: TSpeedButton;
    SpeedButton32: TSpeedButton;
    SpeedButton33: TSpeedButton;
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure SpeedButton5Click(Sender: TObject);
    procedure SpeedButton6Click(Sender: TObject);
    procedure SpeedButton9Click(Sender: TObject);
    procedure SpeedButton10Click(Sender: TObject);
    procedure SpeedButton11Click(Sender: TObject);
    procedure SpeedButton24Click(Sender: TObject);
    procedure SpeedButton25Click(Sender: TObject);
    procedure SpeedButton26Click(Sender: TObject);
    procedure SpeedButton29Click(Sender: TObject);
    procedure SpeedButton30Click(Sender: TObject);
    procedure SpeedButton31Click(Sender: TObject);
    procedure SpeedButton32Click(Sender: TObject);
    procedure SpeedButton27Click(Sender: TObject);
    procedure SpeedButton12Click(Sender: TObject);
    procedure SpeedButton7Click(Sender: TObject);
    procedure SpeedButton8Click(Sender: TObject);
    procedure SpeedButton28Click(Sender: TObject);
    procedure SpeedButton33Click(Sender: TObject);
    procedure c1Click(Sender: TObject);
    procedure P1Click(Sender: TObject);
    procedure A1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  temp1:string; //用于存放你一个计算参数
  temp3:real;   //用于存放第二个计算参数
  temp2:real;   //用于存放计算结果
  flag:integer=0;   //加,减,乘,除 的标志位 
  flag2:integer=0;   //判断除数是否为0的标志位
  flag3:integer=0;   // 是否多次按下运算符
  fuhao:integer=0;   //计算参数的符号
  B: Boolean;       //用以表示是否是第一次按下"="号
  plate:string;//存放剪切板内容
  buffer:integer;   //用于保存flag,以便按"="时使用
  C:integer=0;  //用于规定每次输入只能有一个小数点
implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   edit1.Clear;
   B:=true;

end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
var s:string;
begin
    s:=edit1.Text;
    delete(s,length(s),1);
    edit1.Text:=s;
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
  edit1.text:='';
  temp1:='';
  temp2:=0;
  temp3:=0;
  edit1.Enabled:=true;
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
  edit1.text:='';
  temp1:='';
  temp2:=0;
  temp3:=0;
  edit1.Enabled:=true;
end;

procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
 if flag3=1 then begin edit1.Clear;flag3:=-1; end;
 if edit1.text='0' then edit1.text:='7'
 else
 edit1.text:=edit1.text+'7';
end;

procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
if flag3=1 then begin edit1.Clear;flag3:=-1; end;
if edit1.text='0' then edit1.text:='8'
 else
 edit1.text:=edit1.text+'8';
end;

procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
if flag3=1 then begin edit1.Clear;flag3:=-1; end;
if edit1.text='0' then edit1.text:='9'
 else
 edit1.text:=edit1.text+'9';
end;

procedure TForm1.SpeedButton9Click(Sender: TObject);
begin
if flag3=1 then begin edit1.Clear;flag3:=-1; end;
if edit1.text='0' then edit1.text:='4'
 else
 edit1.text:=edit1.text+'4';
end;

procedure TForm1.SpeedButton10Click(Sender: TObject);
begin
if flag3=1 then begin edit1.Clear;flag3:=-1; end;
if edit1.text='0' then edit1.text:='5'
 else
 edit1.text:=edit1.text+'5';
end;

procedure TForm1.SpeedButton11Click(Sender: TObject);
begin
if flag3=1 then begin edit1.Clear;flag3:=-1; end;
if edit1.text='0' then edit1.text:='6'
 else
 edit1.text:=edit1.text+'6';
end;

procedure TForm1.SpeedButton24Click(Sender: TObject);
begin
if flag3=1 then  //若第二次按下"+"号,清空edit1,并进行和运算
begin edit1.Clear;flag3:=-1; end;
 if edit1.text='0' then edit1.text:='1'
 else
 edit1.text:=edit1.text+'1';
end;

procedure TForm1.SpeedButton25Click(Sender: TObject);
begin
if flag3=1 then begin edit1.Clear;flag3:=-1; end;
if edit1.text='0' then edit1.text:='2'
 else
 edit1.text:=edit1.text+'2';
end;

procedure TForm1.SpeedButton26Click(Sender: TObject);
begin
if flag3=1 then begin edit1.Clear;flag3:=-1; end;
if edit1.text='0' then edit1.text:='3'
 else
 edit1.text:=edit1.text+'3';
end;

procedure TForm1.SpeedButton29Click(Sender: TObject);
begin
  if flag3=1 then begin edit1.Clear;flag3:=-1; end;
   edit1.Text:=edit1.Text+'0';
end;

procedure TForm1.SpeedButton30Click(Sender: TObject);
var s:string ;
begin
  if (edit1.text='')or (edit1.text='0') then  fuhao:=-1
  else if strtofloat(edit1.text)<0 then fuhao:=1//若小于0 ,则是 负数
  else fuhao:=0;   //若大于0 ,则是正数
   if fuhao=0 then  //若原来是正数,按后变负数
     begin
        edit1.text:='-'+edit1.Text;
        fuhao:=1;
     end
   else    // 若原来是负数,按后变正数
     begin
     s:=edit1.text;
     delete(s,1,1);
     edit1.text:=s;
     fuhao:=0;
     end;

end;

procedure TForm1.SpeedButton31Click(Sender: TObject);
begin
     if edit1.text='' then edit1.text:='0.'
     else if C=1 then
     else
     edit1.Text:=edit1.Text+'.';
     C:=1;

end;

procedure TForm1.SpeedButton32Click(Sender: TObject); //加法处理过程
begin
  if edit1.text='' then edit1.Text:='0';
  if flag=2 then     //若之前是"-"号
       begin
         edit1.Text:=floattostr(strtofloat(temp1)-strtofloat(edit1.text));
         temp1:=edit1.text;
       end
  else if flag=3 then //若之前是"*"号
       begin
         edit1.Text:=floattostr(strtofloat(temp1)*strtofloat(edit1.text));
         temp1:=edit1.text;
       end
  else if flag=4 then //若之前是"/"号
       begin
         if  edit1.text='0' then
            begin
              edit1.text:='除数不能为0';
              edit1.Enabled:=false;
            end
         else
           begin
             edit1.Text:=floattostr(strtofloat(temp1)/strtofloat(edit1.text));
             temp1:=edit1.text;
           end;
       end
  else   //若是加法过程,则执行下列语句
   begin
   if flag3=0 then        //若第一次输入“+”号
       begin

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -