先上图:

   


程序下载地址: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.
posted on 2011-09-18 22:10  |蚂蚁啃骨头|  阅读(181)  评论(0编辑  收藏  举报