本帖最后由 maotao456 于 2011-10-23 01:12:30 编辑

解决方案 »

  1.   

    好了,源码我贴出来了, 请大家帮忙解释一下吧。unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, XPMan, StdCtrls;type
      TForm1 = class(TForm)
        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;
        GroupBox1: TGroupBox;
        Edit1: TEdit;
        XPManifest1: TXPManifest;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure Button5Click(Sender: TObject);
        procedure Button6Click(Sender: TObject);
        procedure Button7Click(Sender: TObject);
        procedure Button8Click(Sender: TObject);
        procedure Button9Click(Sender: TObject);
        procedure Button10Click(Sender: TObject);
        procedure Button11Click(Sender: TObject);
        procedure Button12Click(Sender: TObject);
        procedure Button13Click(Sender: TObject);
        procedure Button14Click(Sender: TObject);
        procedure Button15Click(Sender: TObject);
        procedure Button16Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      zhen1:integer;
      zhen2:integer;
      zhen3:integer;
      zhen4:integer;
      wenben:string;
      result:real;
    implementation{$R *.dfm}
     function Add(a,b:real):real;
     begin
     add:=a+b;
     end;
     function Sub(a,b:real):real;
     begin
     sub:=a-b;
     end;
     function Mul(a,b:real):real;
     begin
     mul:=a*b;
     end;
     function Exc(a,b:real):real;
     begin
     Exc:=a/b;
     end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
        edit1.text:=edit1.text+'1';
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
    edit1.text:=edit1.text+'2';
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
    edit1.text:=edit1.text+'3';
    end;procedure TForm1.Button4Click(Sender: TObject);
    begin
    edit1.text:=edit1.text+'4';
    end;procedure TForm1.Button5Click(Sender: TObject);
    begin
    edit1.text:=edit1.text+'5';
    end;procedure TForm1.Button6Click(Sender: TObject);
    begin
    edit1.text:=edit1.text+'6';
    end;procedure TForm1.Button7Click(Sender: TObject);
    begin
    edit1.text:=edit1.text+'7';
    end;procedure TForm1.Button8Click(Sender: TObject);
    begin
    edit1.text:=edit1.text+'8';
    end;procedure TForm1.Button9Click(Sender: TObject);
    begin
    edit1.text:=edit1.text+'9';
    end;procedure TForm1.Button10Click(Sender: TObject);
    begin
    edit1.text:=edit1.text+'0';
    end;procedure TForm1.Button11Click(Sender: TObject);
    begin
    wenben:=edit1.Text;
    edit1.Clear;
    button12.Enabled:=false;
    button13.Enabled:=false;
    button14.Enabled:=false;
    zhen1:=1;
    end;procedure TForm1.Button12Click(Sender: TObject);
    begin
    wenben:=edit1.Text;
    edit1.Clear;
    button11.Enabled:=false;
    button13.Enabled:=false;
    button14.Enabled:=false;
    zhen2:=2;
    end;procedure TForm1.Button13Click(Sender: TObject);
    begin
    wenben:=edit1.Text;
    edit1.Clear;
    button11.Enabled:=false;
    button12.Enabled:=false;
    button14.Enabled:=false;
    zhen3:=3;
    end;procedure TForm1.Button14Click(Sender: TObject);
    begin
    wenben:=edit1.Text;
    edit1.Clear;
    button11.Enabled:=false;
    button12.Enabled:=false;
    button13.Enabled:=false;
    zhen4:=4;
    end;procedure TForm1.Button15Click(Sender: TObject);
    begin
    if (zhen1=1)and (wenben<>'') then
    begin
    result:=add(strtofloat(wenben),strtofloat(edit1.text));
    edit1.Text:=floattostr(result);
    button11.Enabled:=true;
    button12.Enabled:=true;
    button13.Enabled:=true;
    button14.Enabled:=true;end
    else if (zhen2=2)and(wenben<>'') then
    begin
    result:=sub(strtofloat(wenben),strtofloat(edit1.Text));
    edit1.Text:=floattostr(result);
    button11.Enabled:=true;
    button12.Enabled:=true;
    button13.Enabled:=true;
    button14.Enabled:=true;
    end
    else if (zhen3=3)and(wenben<>'') then
    begin
    result:=mul(strtofloat(wenben),strtofloat(edit1.Text));
    edit1.Text:=floattostr(result);
    button11.Enabled:=true;
    button12.Enabled:=true;
    button13.Enabled:=true;
    button14.Enabled:=true;
    end
    else if (zhen4=4)and(wenben<>'') then
    begin
    result:=Exc(strtofloat(wenben),strtofloat(edit1.Text));
    edit1.Text:=floattostr(result);
    button11.Enabled:=true;
    button12.Enabled:=true;
    button13.Enabled:=true;
    button14.Enabled:=true;
    end
    else
    showmessage('输入有误');
    end;procedure TForm1.Button16Click(Sender: TObject);
    begin
    edit1.Clear;
    button11.Enabled:=true;
    button12.Enabled:=true;
    button13.Enabled:=true;
    button14.Enabled:=true;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    edit1.Clear;
    end;end.
      

  2.   

    小技巧:您的procedure TForm1.Button1Click(Sender: TObject);
    begin
      edit1.text:=edit1.text+'1';
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
    edit1.text:=edit1.text+'2';
    end;procedure TForm1.Button3Click(Sender: TObject);
    begin
    edit1.text:=edit1.text+'3';
    end;
    //....可以简写为:procedure TForm1.Button1Click(Sender: TObject);
    begin
       With Sender As TButton do
          edit1.text:=edit1.text+Caption;
    end;
    然后其他的Button可以共用此代码
      

  3.   

    很遗憾,你的代码中没有涉及到 Edit 的输入。其实,你可以将 Edit 改为 readonly, 然后处理窗体的键盘消息,将键盘按下的没用的按键值过滤掉,然后在处理到 Edit 中。或者干脆不用 Edit,用 StaticText 来显示用户输入,将会好的多。