用delphi做一个简单计算器

2024-05-11

1. 用delphi做一个简单计算器

试试这个

unit Unit1;

interface

uses
  Windows,  Messages,  SysUtils,  Classes,  Graphics,  Controls,  Forms,  Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    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;
    procedure Button4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    procedure SetEditText(info: string);
    { Private declarations }
  public
    { Public declarations }
  end;
type //自定义一个Tcompute的类

  Tcompute = object
  private //保护类中成员数据的安全

    temp1: double;
    temp2: double;
    temp3: double;
    sign: Char;

  public //把类中的成员函数进行共享


    function Add(x: double; y: double): Double;
    function Sub(x: double; y: double): Double;
    function Mult(x: double; y: double): Double;
    function Dived(x: double; y: double): Double;

  end;
var
  Form1: TForm1;
  Info: Tcompute; //声明Info是类Tcompute的对象
  oldinfo:string;


implementation

function Tcompute.Add(x: double; y: double): Double; //进行类的定义与实现

begin
  Result := x + y;
end;

function Tcompute.Sub(x: double; y: double): Double;
begin
  Result := x - y;
end;

function Tcompute.Mult(x: double; y: double): Double;
begin
  Result := x * y;
end;

function Tcompute.Dived(x: double; y: double): Double;
begin
  if (y = 0) then begin
    Form1.Edit1.text:='1111111111';
     //ShowMessage('除数不能为0!'); //这里判断除数不能为0
    Result := x;
  end else
    Result := x / y;
end;

{$R *.dfm}

procedure TForm1.Button4Click(Sender: TObject);
begin
  oldinfo := '';
  SetEditText('');
  Info.sign := ' ';
  Info.temp1 := 0;
  Info.temp2 := 0;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  SetEditText('7');
  Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SetEditText('8');
  Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  SetEditText('9');
  Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  SetEditText('4');
  Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
  SetEditText('5');
  Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
  SetEditText('6');
  Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
  SetEditText('1');
  Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
  SetEditText('2');
  Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
  SetEditText('3');
  Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button13Click(Sender: TObject);
begin
  SetEditText('0');
  Info.temp1 := StrTofloat(Edit1.text);
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
  Button17Click(nil);
  Info.temp2 := Info.temp1;
  Info.sign := '+';
  oldinfo := '';
end;

procedure TForm1.Button12Click(Sender: TObject);
begin
  Button17Click(nil);
  Info.temp2 := Info.temp1;
  Info.sign := '-';
  oldinfo := '';
end;

procedure TForm1.Button15Click(Sender: TObject);
begin
  Button17Click(nil);
  Info.temp2 := Info.temp1;
  Info.sign := '*';
  oldinfo := '';
end;

procedure TForm1.Button16Click(Sender: TObject);
begin
  Button17Click(nil);
  Info.temp2 := Info.temp1;
  Info.sign := '/';
  oldinfo := '';
end;

procedure TForm1.Button17Click(Sender: TObject);
begin
  if Info.sign' ' then oldinfo := '';
  if (Info.sign = '+') then
    SetEditText(FloatToStr(Info.Add(Info.temp2, Info.temp1)))
  else if (Info.sign = '-') then
    SetEditText(FloatToStr(Info.Sub(Info.temp2, Info.temp1)))
  else if (Info.sign = '*') then
    SetEditText(FloatToStr(Info.Mult(Info.temp2, Info.temp1)))
  else if (Info.sign = '/') then
    SetEditText(FloatToStr(Info.Dived(Info.temp2, Info.temp1)));
  if Edit1.Text'' then
    Info.temp1 := StrToFloat(Edit1.Text);
  Info.sign := ' ';
end;

procedure TForm1.Button14Click(Sender: TObject);
begin
  SetEditText('.');
  Info.temp1 := StrToFloat(Edit1.Text);
end;

procedure TForm1.SetEditText(info:string);
begin
  Edit1.Text := oldinfo + info;
  oldinfo := Edit1.Text;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  oldinfo := '';
end;

end.

用delphi做一个简单计算器

2. delphi7制作计算器怎么设置加减乘除?

“=”不是一个按钮么?那么在它的click事件里写下你计算的代码就行了,这是最简单的方式。
按照你的这个界面设计,需要三个全局变量来处理,一个存储被处理的数,一个存储运算符号,一个存储处理数,每次按钮按下的时候只要判断存储运算符号的变量是社么就行了。PS:不建议初学者这么写计算器,因为需要你判断的逻辑太多,不如用三个输入框来处理来的明确!

3. Delphi7.0的计算器代码

unit Unit1;

interface

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

type
TForm1 = class(TForm)
    Edit1: TEdit;
    Panel1: TPanel;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    SpeedButton6: TSpeedButton;
    SpeedButton7: TSpeedButton;
    SpeedButton8: TSpeedButton;
    SpeedButton9: TSpeedButton;
    SpeedButton10: TSpeedButton;
    SpeedButton12: TSpeedButton;
    SpeedButton13: TSpeedButton;
    SpeedButton14: TSpeedButton;
    SpeedButton15: TSpeedButton;
    SpeedButton16: TSpeedButton;
    SpeedButton17: TSpeedButton;
    SpeedButton11: TSpeedButton;
    SpeedButton18: TSpeedButton;
    SpeedButton19: TSpeedButton;
    SpeedButton20: TSpeedButton;
    SpeedButton21: TSpeedButton;
    SpeedButton5: TSpeedButton;
    MainMenu1: TMainMenu;
    zhua1: TMenuItem;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    SpeedButton22: TSpeedButton;
    N4: TMenuItem;
    procedure SpeedButton20Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure SpeedButton6Click(Sender: TObject);
    procedure SpeedButton7Click(Sender: TObject);
    procedure SpeedButton13Click(Sender: TObject);
    procedure SpeedButton12Click(Sender: TObject);
    procedure SpeedButton14Click(Sender: TObject);
    procedure SpeedButton15Click(Sender: TObject);
    procedure SpeedButton17Click(Sender: TObject);
    procedure SpeedButton5Click(Sender: TObject);
    procedure SpeedButton19Click(Sender: TObject);
    procedure SpeedButton11Click(Sender: TObject);
    procedure SpeedButton18Click(Sender: TObject);
    procedure SpeedButton21Click(Sender: TObject);
    procedure SpeedButton16Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure SpeedButton22Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);

        
private
        //将窗体变量放置在这里也可以,这样如果有
                          //Form2就无法访问

    { Private declarations }
public

    { Public declarations }
end;

var

Form1: TForm1;
flag : Integer =0;
flag1: Integer =0; // 是否复位的标记
flag3: Integer =0; //小数点的标记
Temp1: string = '';
Temp2: real=0; //注意变量的定义



implementation

{$R *.dfm}

procedure TForm1.SpeedButton20Click(Sender: TObject);
begin
   if SpeedButton20.Caption = '关闭' then
     begin
       SpeedButton20.Caption := '打开' ;
       SpeedButton20.Font.Color := clGreen
     end
   else
     begin
       SpeedButton20.Caption := '关闭';
       SpeedButton20.Font.Color := clSilver
     end;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
Edit1.Font.Color := clBlack;
if flag1=5 then Edit1.Text := '';
if SpeedButton20.Caption = '打开' then
    begin
      Edit1.Text := Edit1.text+'1';flag1 := 0;
    end
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
Edit1.Font.Color := clBlack;
if flag1 = 5 then Edit1.Text :='';
if SpeedButton20.Caption = '打开' then
    begin
     Edit1.Text := Edit1.text+'2'; flag1 := 0;
    end;
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
Edit1.Font.Color := clBlack;
if flag1 = 5 then Edit1.Text := '';
if SpeedButton20.Caption='打开' then
    begin
      Edit1.Text := Edit1.text+'3'; flag1:=0;
    end;
end;

procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
   Edit1.Font.Color := clBlack;
   if flag1 = 5 then Edit1.Text := '';
   if SpeedButton20.Caption='打开' then
     begin
       Edit1.Text := Edit1.text+'4'; flag1 := 0;
     end;
end;

procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
   Edit1.Font.Color := clBlack;
   if flag1 = 5 then Edit1.Text := '';
   if SpeedButton20.Caption='打开' then
      begin
        Edit1.Text:=Edit1.text+'5'; flag1:=0;
      end;
end;

procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
   Edit1.Font.Color := clBlack;
   if flag1 = 5 then Edit1.Text := '';
   if SpeedButton20.Caption = '打开' then
     begin
       Edit1.Text := Edit1.text+'6'; flag1:=0;
     end;
end;

procedure TForm1.SpeedButton13Click(Sender: TObject);
begin
   Edit1.Font.Color := clBlack;
   if flag1 = 5 then Edit1.Text := '';
   if SpeedButton20.Caption = '打开' then
      begin
        Edit1.Text := Edit1.text+'7'; flag1 := 0;
      end;
end;

procedure TForm1.SpeedButton12Click(Sender: TObject);
begin
   Edit1.Font.Color := clBlack;
   if flag1 = 5 then Edit1.Text := '';
   if SpeedButton20.Caption='打开' then
     begin
       Edit1.Text:=Edit1.text+'8'; flag1:=0;
     end;
end;

procedure TForm1.SpeedButton14Click(Sender: TObject);
begin
   Edit1.Font.Color := clBlack; //为每个Button恢复颜色 目的是区分数据是结果还是参加数
   if flag1=5 then Edit1.Text := '';
   if SpeedButton20.Caption='打开' then
      begin
       Edit1.Text := Edit1.text+'9'; flag1 := 0;
      end;
end;

procedure TForm1.SpeedButton15Click(Sender: TObject);
begin
    Edit1.Font.Color := clBlack;
    if flag1 = 5 then Edit1.Text := '';
    if SpeedButton20.Caption = '打开' then
       begin
         Edit1.Text := Edit1.text+'0'; flag1 := 0; 
       end;
end;

procedure TForm1.SpeedButton17Click(Sender: TObject);
begin
Edit1.Clear;
flag := 0;
flag1 := 5; // 是否复位的标记
flag3 :=0; //小数点的标记
Temp1 := '';
Temp2 :=0; //注意变量的定义


end;

procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
   Edit1.Font.Color := Clgreen; //设置输入颜色
   if (edit1.Text'+') and (edit1.Text'-')and (edit1.Text'*') and (edit1.Text'/')
      and(edit1.text'')
      then
        begin
          try   //仅仅作为实验,记住使用的格式
            case flag of //切记case 不支持字符型
             1 :   Temp2 := StrTofloat(Temp1)+StrTofloat(Edit1.text) ;
             2 :   Temp2 := StrTofloat(Temp1)-StrTofloat(Edit1.text) ;
             3 :   Temp2 := StrTofloat(Temp1)*StrTofloat(Edit1.text) ;
             4 :   begin

                   if StrTofloat(edit1.text)0 then Temp2 := StrTofloat(Temp1)/StrTofloat(Edit1.text)
                   else
                      begin
                         Edit1.Font.Color:=clLime;
                         showmessage('错误!除数不能够为0!');
                         Edit1.Font.Color:=clblack;
                      end;

                end;
           else
             Temp2:=StrToFloat(Edit1.text);
           end;

         except
           ShowMessage('错误!您输入的数据过大');
           Form1.close;
         end;
      Temp1 := FloatToStr(Temp2);
      if edit1.Font.Color=clblack then
            begin
                Temp1:=FloatToStr(Temp2);
                Edit1.Text := Temp1;
                flag1 := 5;
                flag := 0;
                flag3 := 0;
          end ;
      if edit1.Font.Color=clgreen then
            begin
              flag := 1;
              flag1 := 5;
              Edit1.Text := '+';
              flag3 := 0;
            end;
end;
end;


procedure TForm1.SpeedButton19Click(Sender: TObject);
begin
Edit1.Font.Color := Clgreen;
if (edit1.Text'+') and (edit1.Text'-')and (edit1.Text'*') and (edit1.Text'/')and(edit1.text'')
     then             //当前里面的字符为 + -* / 不能够进行运算
        begin
          try
           case flag of //切记case 不支持字符型
             1 :   Temp2 := StrTofloat(Temp1)+StrTofloat(Edit1.text) ;
             2 :   Temp2 := StrTofloat(Temp1)-StrTofloat(Edit1.text) ;
             3 :   Temp2 := StrTofloat(Temp1)*StrTofloat(Edit1.text) ;
             4 :
                   begin

                     if StrTofloat(edit1.text)0 then Temp2 := StrTofloat(Temp1)/StrTofloat(Edit1.text)
                     else
                        begin
                          Edit1.Font.Color:=clLime;
                          showmessage('错误!除数不能够为0!');
                          Edit1.Font.Color:=clblack;
                      end;

                   end;
            else
                  Temp2:=StrToFloat(Edit1.text);
        end;
     except
       ShowMessage('错误!您输入的数据过大');
       Form1.close;
     end;
     Temp1 := FloatToStr(Temp2);
     if edit1.Font.Color=clblack then
            begin
                Temp1:=FloatToStr(Temp2);
                Edit1.Text := Temp1;
                flag1 := 5;
                flag := 0;
                flag3 := 0;
            end ;
     if edit1.Font.Color=clgreen then
            begin
             flag := 2;
             flag1 := 5;
             Edit1.Text := '-';
             flag3 := 0;
            end;
end;
end;

procedure TForm1.SpeedButton11Click(Sender: TObject);
begin
Edit1.Font.Color:=Clgreen;
if (edit1.Text'+') and (edit1.Text'-')and (edit1.Text'*') and (edit1.Text'/')and(edit1.text'')   then
      begin
        try
           case flag of //切记case 不支持字符型
               1 :   Temp2 :=StrTofloat(Temp1)+StrTofloat(Edit1.text) ;
               2 :   Temp2 := StrTofloat(Temp1)-StrTofloat(Edit1.text) ;
               3 :   Temp2 := StrTofloat(Temp1)*StrTofloat(Edit1.text) ;
               4 :   begin

                               if StrTofloat(edit1.text)0 then Temp2:=StrTofloat(Temp1)/StrTofloat(Edit1.text)
                               else
                                 begin
                                   edit1.Font.Color:=clLime;
                                   showmessage('错误!除数不能够为0!');
                                   edit1.Font.Color:=clblack;
                                 end;
                       end;
                else
                     Temp2 := StrToFloat(Edit1.text);
             end;
          except
            ShowMessage('错误!您输入的数据过大');
            Form1.close;
          end;
        Temp1 := FloatToStr(Temp2);
        if edit1.Font.Color=clblack then
            begin
                Temp1:=FloatToStr(Temp2);
                Edit1.Text := Temp1;
                flag1 := 5;
                flag := 0;
                flag3 := 0;
          end ;
       if edit1.Font.Color=clgreen then
         begin
             flag := 3;
             flag1 := 5;
             Edit1.Text := '*';
             flag3 := 0;
        end;
end;
end;

procedure TForm1.SpeedButton18Click(Sender: TObject);
begin
Edit1.Font.Color := Clgreen;
if (edit1.Text'+') and (edit1.Text'-')and (edit1.Text'*') and (edit1.Text'/')
     and (edit1.text'')    then
     begin
       try
            case flag of //切记case 不支持字符型
                1 :   Temp2 := StrTofloat(Temp1)+StrTofloat(Edit1.text) ;
                2 :   Temp2 := StrTofloat(Temp1)-StrTofloat(Edit1.text) ;
                3 :   Temp2 := StrTofloat(Temp1)*StrTofloat(Edit1.text) ;
                4 :   begin

                        if StrTofloat(edit1.text)0 then Temp2 := StrTofloat(Temp1)/StrTofloat(Edit1.text)
                         else
                                 begin
                                   edit1.Font.Color:=clLime;
                                   showmessage('错误!除数不能够为0!');
                                   edit1.Font.Color:=clblack;
                                 end;

                      end;
                else
                   Temp2 := StrToFloat(Edit1.text);
              end;
       except
           ShowMessage('错误!您输入的数据过大');
           Form1.close;
       end;
        Temp1 := FloatToStr(Temp2);
        if edit1.Font.Color=clblack then
            begin
                Temp1:=FloatToStr(Temp2);
                Edit1.Text := Temp1;
                flag1 := 5;
                flag := 0;
                flag3 := 0;
          end ;
       if edit1.Font.Color=clgreen then
         begin
             flag := 4;
             flag1 := 5;
             Edit1.Text := '/';
             flag3 := 0;
        end;
end;
end;

procedure TForm1.SpeedButton21Click(Sender: TObject);
begin

    if messagedlg('是否退出?',mtconfirmation,[Mbyes,Mbno],0) = mryes then
       close;


end;

procedure TForm1.SpeedButton16Click(Sender: TObject);

begin
   if flag15 then
     begin
      try
        case flag of //切记case 不支持字符型
          1 :   Temp2 := StrTofloat(Temp1)+StrTofloat(Edit1.text) ;
          2 :   Temp2 := StrTofloat(Temp1)-StrTofloat(Edit1.text) ;
          3 :   Temp2 := StrTofloat(Temp1)*StrTofloat(Edit1.text) ;
          4 :   begin

                 if StrTofloat(edit1.text)0    then Temp2:=StrTofloat(Temp1)/StrTofloat(Edit1.text)
                   else
                     begin
                       Edit1.Font.Color:=ClLime;
                       showmessage('错误!除数不能够为0!');

                     end;
                 end;
         else

            Temp2:=StrToFloat(Edit1.Text); //如果直接按=号,那么显示第一个数
                                           //即把第一个数赋给第二个数
      end;
     except
       ShowMessage('错误!您输入的数据过大');
       Form1.close;
     end;
       flag:=0;
       if Edit1.Font.Color=ClLime then Edit1.Font.Color := clBlack
       else Edit1.Font.Color := clred ;

       Edit1.Text:=FloatToStr(Temp2);
end;
flag1 := 5;
flag3 := 0;
end;


procedure TForm1.N1Click(Sender: TObject);
begin
SpeedButton20.Caption := '打开';
N3.Caption := '状态/on'

end;

procedure TForm1.SpeedButton22Click(Sender: TObject);
begin
Edit1.Font.Color := ClBlack;
if flag1 = 5 then         //出现结果指点点小数点 会置0,避免这个情况先清空
                         // 然后设置 flag1:=0; 这样数字可以跟着后面输入
    begin
      Edit1.Text := '';
      flag1 := 0;
    end;

if (SpeedButton20.Caption='打开') and ( flag3=0) then
     begin
       if Edit1.Text = '' then
         Edit1.Text := '0'+'.'+Edit1.text //如果直接点小数点的BUTTON 则在前面加0
       else
         Edit1.Text := Edit1.text+'.';

     end;
Inc(flag3,1); //统计小数、点的个数
                  // 注意可以用inc(flag3,1)每次 加1 inc(flag3,1)每次加5
                  //Dec (flag,1)是减减1

end;

procedure TForm1.N2Click(Sender: TObject);
begin
SpeedButton20.Caption := '关闭' ;
N3.Caption := '状态/off';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
N3.Caption := '状态/on';
flag1:=5;
end;

procedure TForm1.N4Click(Sender: TObject);
begin
close;
end;


procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
   if key = VK_RETURN then SpeedButton16.Click;   // VK_RETURN为ENTER的虚拟值
                                                //还有其他方法可以实现
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
case key of
    '1'   : SpeedButton1.Click;
    '2'   : SpeedButton2.Click;
    '3'   : SpeedButton3.Click;
    '4'   : SpeedButton4.Click;
    '5'   : SpeedButton6.Click;
    '6'   : SpeedButton7.Click;
    '7'   : SpeedButton13.Click;
    '8'   : SpeedButton12.Click;
    '9'   : SpeedButton14.Click;
    '0'   : SpeedButton15.Click;
    '.'   : SpeedButton22.Click;
    '+'   : SpeedButton5.Click;
    '-'   : SpeedButton19.Click;
    '*'   : SpeedButton11.Click;
    '/'   : SpeedButton18.Click;
    end;


end;

end.

Delphi7.0的计算器代码

4. delphi怎样调用系统中的计算器

需要在uses列表中引用windows单元,然后:
  winexec('calc.exe',SW_SHOW);

5. 求:用delphi编写一个计算器!~

so easy
我只写思路 
(0-9 . 10个键, 一个eidt1.text 做显示屏, + - * / = 归零 6个功能键)
var 
n:integer //四则运算
s1:string;

+; s1:=edit1.text a:=1 edit1.clear;//把+号前面字符串存入s1
-: s1:=edit1.text a:=2 edit1.clear;
*: s1:=edit1.text a:=3 edit1.clear;
/: s1:=edit1.text a:=4 edit1.clear;
归零:edit1.clear; //不显示 也可以显示0 不过0-9 要多了一个if
0-9:  edit1.text=edit1.text+(0-9) //
.:    if edit1.text=''then                                     edit1.text='0.'   else  edit1.text=edit1.text+'.';
// 前面的是按钮 懒的写全 带冒号的全是按钮点击事件 后面是=号的代码

begin
case n of
1: edit1.text:=inttostr(strtoint(s1)+strtoint(edit1.text));
2: edit1.text:=inttostr(strtoint(s1)-strtoint(edit1.text));
3: edit1.text:=inttostr(strtoint(s1)*strtoint(edit1.text));
4: begin
if edit1.text=0 then showmessage('不能被整除')
   else edit1.text:=inttostr(strtoint(s1)/strtoint(edit1.text));
   end;
end;
end;

求:用delphi编写一个计算器!~

6. Delphi7的计算器代码怎么写?

//全写了注释了, 不懂追问 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls; //新建一工程, 放进15个TSpeedButton和一个TEdit然后按照下边的说明设置一下. type TForm1 = class(TForm) //把窗体的KeyPreview属性设置为TRUE SpeedButton1: TSpeedButton; //表示数字键1, Caption属性设置为1 SpeedButton2: TSpeedButton; //表示数字键2, Caption属性设置为2 SpeedButton3: TSpeedButton; //表示数字键3, Caption属性设置为3 SpeedButton4: TSpeedButton; //表示数字键4, Caption属性设置为4 SpeedButton5: TSpeedButton; //表示数字键5, Caption属性设置为5 SpeedButton6: TSpeedButton; //表示数字键6, Caption属性设置为6 SpeedButton7: TSpeedButton; //表示数字键7, Caption属性设置为7 SpeedButton8: TSpeedButton; //表示数字键8, Caption属性设置为8 SpeedButton9: TSpeedButton; //表示数字键9, Caption属性设置为9 SpeedButton10: TSpeedButton; //表示数字键0, Caption属性设置为0 SpeedButton11: TSpeedButton; //表示小数点., , Caption属性设置为 . 小数点 SpeedButton12: TSpeedButton; //计算结果, 等于(=)号, Caption属性设置为 = SpeedButton13: TSpeedButton; //加号, Caption属性设置为 + , Tag属性设置为 1 SpeedButton14: TSpeedButton; //减号, Caption属性设置为 - , Tag属性设置为 2 Edit1: TEdit; //显示计算结果 SpeedButton15: TSpeedButton; //归零(复位)处理 procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton12Click(Sender: TObject); procedure SpeedButton13Click(Sender: TObject); procedure SpeedButton15Click(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end;  var Form1: TForm1;  implementation {$R *.dfm} var Flag: Boolean = True; //。标记位 Flag1: Integer = 1; //计算方法标志位 num1, num2, result: Real; flagresult: Boolean = False;  procedure TForm1.SpeedButton1Click(Sender: TObject); //按住SHIFT键, 再用鼠标点SpeedButton1 至 SpeedButton11(多选), 然后在属性面板双击onClick //以后11个SpeedButton共用一个OnClick事件, var str: string; begin str := Edit1.Text; if (Length(str) = 1) and (str = '0') then Edit1.Clear; Edit1.Color := clBlue; if ((Sender as TSpeedButton).Caption = '.') then //小数点处理 begin if Flag then begin Edit1.Text := Edit1.Text + (sender as TSpeedButton).Caption; Flag := False; end end else Edit1.Text := Edit1.Text + (sender as TSpeedButton).Caption; end; procedure TForm1.SpeedButton12Click(Sender: TObject); //计算并显示结果 begin Edit1.Color := clRed; num2 := StrToFloatDef(Edit1.Text, 0.00); case Flag1 of 1: result := num1 + num2; 2: result := num1 - num2; Edit1.Text := FloatToStr(result); end; procedure TForm1.SpeedButton13Click(Sender: TObject); //按住SHIFT, 用鼠标点SpeedButton13, SpeedButton14(多选), 然后在属性面板双击onClick //以便2个SpeedButton共用一个OnClick事件, begin Flag1 := (Sender as TSpeedButton).Tag; num1 := StrToFloatDef(Edit1.Text, 0.00); Edit1.Text := '0'; end; procedure TForm1.SpeedButton15Click(Sender: TObject); //归零(复位) begin Flag := True; //。标记位 Flag1 := 1; //计算方法标志位 num1 := 0; num2 := 0; result := 0; Edit1.Text := '0'; end; procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); //对窗口按键盘上的数字键时, 做输入操作数处理 begin case key of '1': SpeedButton1.Click; '2': SpeedButton2.Click; '3': SpeedButton3.Click; '4': SpeedButton4.Click; '5': SpeedButton5.Click; '6': SpeedButton6.Click; '7': SpeedButton7.Click; '8': SpeedButton8.Click; '9': SpeedButton9.Click; '0': SpeedButton10.Click; '.': SpeedButton11.Click; '+': SpeedButton13.Click; '-': SpeedButton14.Click; end; end; end.

采纳哦

7. 如何用Delphi制作一个加法计算器

提供示例代码如下:
procedure TForm1.Button1Click(Sender: TObject);begin  Edit3.Text := FloatToStr(StrToFloat(Edit1.Text)+StrToFloat(Edit2.Text));end;代码运行截图:

如何用Delphi制作一个加法计算器

8. 谁能给我发一个用delphi写的计算器~~

这东西,我不确定是作业还是经理下达的工作任务,两种东西要实现的功能完全不同。
如果是工作任务,建议你查一查Windows里那个VBScript的ActiveX控件,没记错的话应该是msscript.ocx,以前在一家公司他们就是用这个实现计算的。
去菜单里的“Import Type Library”里找“Microsoft Script Control 1.0”,一步一步把它装上去,就可以在VCL的ActiveX页看到他了。
如果是作业,那就要自己写代码来解析输入进去的算式了,超麻烦。
至于文本框响应数字和计算符号,这个就不用多说了吧。