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

📄 unit1.pas

📁 完成Windows程序中计算器中的所有功能,使用类似Windows计算器的图形界面; (2) 使用可视化方法设计
💻 PAS
📖 第 1 页 / 共 2 页
字号:
         if edit1.text='' then   temp1:='0'
         else
            temp1:=edit1.Text;   //第一个参加运算的数
         edit1.Clear;
       end
    else
        begin
            if flag3=1 then  //如果连续按多次"+"号,不处理。
            else
            begin
               if edit1.Text=''then temp3:=0
                else
                temp3:=strtofloat(edit1.text); //第二个参加运算的数
              edit1.Text:=floattostr(temp3+strtofloat(temp1));
              temp1:=edit1.text;
            end;
        end;
    end;
    flag3:=1;  //按下一次"+"号后就不是第一次了
    flag:=1;  //标志位为1,加法
    B:=true;     //重新按下不同运算的“=”号。
    buffer:=flag;
    C:=0;
end;


procedure TForm1.SpeedButton27Click(Sender: TObject); //减法处理过程
begin
 if edit1.text='' then edit1.Text:='0';
 if flag=1 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
         if edit1.text='' then   temp1:='0'
         else
            temp1:=edit1.Text;    //第一个参加运算的数
         edit1.Clear;
       end
    else
        begin
            if flag3=1 then  //如果连续按多次"-"号,不处理。
            else
            begin
               if edit1.Text=''then temp3:=0
                else
                temp3:=strtofloat(edit1.text); //第二个参加运算的数
              edit1.Text:=floattostr(strtofloat(temp1)-temp3);
              temp1:=edit1.text;
            end;
        end;
   end;
    flag3:=1;  //按下一次"-"号后就不是第一次了
    flag:=2;  //标志位为2,减法
    B:=true;     //重新按下不同运算的“=”号。
    buffer:=flag;
    C:=0;
end;

procedure TForm1.SpeedButton12Click(Sender: TObject);//乘法处理过程
begin
 if edit1.text='' then edit1.Text:='0';
 if flag=1 then     //若之前是"+"号
       begin
         edit1.Text:=floattostr(strtofloat(temp1)+strtofloat(edit1.text));
         temp1:=edit1.text;
       end
 else if flag=2 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
         if edit1.text='' then   temp1:='0'
         else
            temp1:=edit1.Text;    //第一个参加运算的数
         edit1.Clear;
       end
    else
        begin
            if flag3=1 then  //如果连续按多次"-"号,不处理。
            else
            begin
               if edit1.Text=''then temp3:=0
                else
                temp3:=strtofloat(edit1.text); //第二个参加运算的数
              edit1.Text:=floattostr(strtofloat(temp1)*temp3);
              temp1:=edit1.text;
            end;
        end;
   end;
    flag3:=1;  //按下一次"-"号后就不是第一次了
    flag:=3;  //标志位为2,减法
    B:=true;     //重新按下不同运算的“=”号。
    buffer:=flag;
    C:=0;
end;


procedure TForm1.SpeedButton7Click(Sender: TObject); //除法处理过程
begin
 if edit1.text='' then edit1.Text:='0';
 if flag=1 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=2 then     //若之前是"-"号
       begin
         edit1.Text:=floattostr(strtofloat(temp1)-strtofloat(edit1.text));
         temp1:=edit1.text;
       end
 else
    begin
    if flag3=0  then        //若第一次输入“-”号
       begin
         if edit1.text='' then   temp1:='0'
         else
            temp1:=edit1.Text;    //第一个参加运算的数
         edit1.Clear;
       end
    else
        begin
            if flag3=1 then  //如果连续按多次"-"号,不处理。
            else
            begin
               if edit1.Text=''then temp3:=0
                else
                temp3:=strtofloat(edit1.text); //第二个参加运算的数
              if temp3=0 then
              begin
                  edit1.text:='除数不能为0';
                  edit1.Clear;
                  edit1.Enabled:=false;
              end
              else
              begin
              edit1.Text:=floattostr(strtofloat(temp1)/temp3);
              temp1:=edit1.text;
              end;
            end;
        end;
   end;
    flag3:=1;  //按下一次"-"号后就不是第一次了
    flag:=4;  //标志位为2,减法
    B:=true;     //重新按下不同运算的“=”号。
    buffer:=flag;
    C:=0;
end;


procedure TForm1.SpeedButton8Click(Sender: TObject); //开平方处理过程
var s:real ;
begin
 if edit1.Text='' then
 else
 begin
 s:=strtofloat(edit1.Text);
 edit1.text:=floattostr(sqrt(s));
 end;
end;

procedure TForm1.SpeedButton28Click(Sender: TObject); //倒数处理过程
begin
if (edit1.text='0') or (edit1.text='')  then
edit1.Clear
else
edit1.Text:=floattostr (1/strtofloat(edit1.text) );
C:=0;
end;

procedure TForm1.SpeedButton33Click(Sender: TObject);  //按下"="号的处理过程
begin
   flag2:=0; //判断除数是否为0
   flag3:=0; //当按下等号时,输入的运算符又只算第一次
   if temp1='' then
   else if B=true then     //如果是第一次按“=”号
       begin
          if edit1.text='' then temp3:=strtofloat(temp1)//如果第二个数十空值,完成自运算
          else
          temp3:=strtofloat(edit1.text); //按“=”号之前输入的第二个参加运算的数
          case flag of
          1:temp2:=strtofloat(temp1)+temp3;
          2:temp2:=strtofloat(temp1)-temp3;
          3:temp2:=temp3*strtofloat(temp1);
          4: if  temp3=0 then
                begin
                      flag2:=1 ;
                      edit1.enabled:=false ;
                end
             else
             temp2:=strtofloat(temp1)/temp3;
          end ;
       end
   else
       case buffer of
        1:temp2:=temp3+strtofloat(edit1.Text);
        2:temp2:=strtofloat(edit1.Text)-temp3;
        3:temp2:=strtofloat(edit1.Text)*temp3;
        4: if  temp3=0 then
              begin
                   flag2:=1 ;
                   edit1.enabled:=false ;
              end
           else
           temp2:=strtofloat(edit1.Text)/temp3;
       end;
       if flag2=1 then edit1.Text:= '除数不能为0'
       else
       edit1.Text:=floattostr(temp2);
       B:=false;     //按下后就不是第一次按下"="号了
       C:=0;
       flag:=0;

end;

procedure TForm1.c1Click(Sender: TObject);
begin
  plate:=edit1.text;
end;

procedure TForm1.P1Click(Sender: TObject);
begin
  edit1.Text:=plate;
end;

procedure TForm1.A1Click(Sender: TObject);
begin
 form2.show(); 
end;

end.

⌨️ 快捷键说明

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