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