1. 求一个DELPHI的简单计算器代码,能运算加减乘除和退格功能就行
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
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;
Button17: TButton;
BitBtn1: TBitBtn;
Edit1: TEdit;
procedure Button13Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button17Click(Sender: TObject);
private
procedure setedit(n :string);
{ Private declarations }
public
{ Public declarations }
end;
type
Tcalc=Object
private
value1: Double;
value2: Double;
sign: Char;
public
function Add(x,y: Double): Double;
function Sub(x,y: Double): Double;
function Mul(x,y: Double): Double;
function divi(x,y: Double): Double;
end;
var
Form1: TForm1;
calc: Tcalc;
stort: string;
implementation
{$R *.dfm}
{ Tcalc }
function Tcalc.Add(x, y: Double): Double;
begin
Result:=x+y;
end;
function Tcalc.divi(x, y: Double): Double;
begin
if y=0 then
begin
ShowMessage('除数不能为0');
exit;
end
else
Result:=x/y;
end;
function Tcalc.Mul(x, y: Double): Double;
begin
Result:=x*y;
end;
function Tcalc.Sub(x, y: Double): Double;
begin
Result:=x-y;
end;
{ TForm1 }
procedure TForm1.setedit(n: string);
begin
edit1.Text:=stort+n;
stort:=edit1.Text;
calc.value1:=StrToFloat(edit1.Text);
end;
procedure TForm1.Button13Click(Sender: TObject);
begin
setedit('1');
end;
procedure TForm1.Button11Click(Sender: TObject);
begin
setedit('2');
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
setedit('3');
end;
procedure TForm1.Button14Click(Sender: TObject);
begin
setedit('4');
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
setedit('5');
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
setedit('6');
end;
procedure TForm1.Button12Click(Sender: TObject);
begin
setedit('7');
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
setedit('8');
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
setedit('9');
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
setedit('0');
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
setedit('.');
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Button16Click(nil);
calc.value2:=calc.value1;
calc.sign:='+';
stort:='';
end;
procedure TForm1.Button16Click(Sender: TObject);
begin
if calc.sign' ' then
stort:='';
if calc.sign='+' then
setedit(FloatToStr(calc.Add(calc.value2,calc.value1)));
if calc.sign='-' then
setedit(FloatToStr(calc.Sub(calc.value2,calc.value1)));
if calc.sign='*' then
setedit(FloatToStr(calc.Mul(calc.value2,calc.value1)));
if calc.sign='/' then
setedit(FloatToStr(calc.divi(calc.value2,calc.value1)));
calc.sign:=' ';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
calc.sign:=' ';
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
calc.sign:=' ';
stort:='';
edit1.Text:='';
end;
procedure TForm1.Button15Click(Sender: TObject);
begin
Button16Click(nil);
calc.value2:=calc.value1;
calc.sign:='-';
stort:='';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Button16Click(nil);
calc.value2:=calc.value1;
calc.sign:='*';
stort:='';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Button16Click(nil);
calc.value2:=calc.value1;
calc.sign:='/';
stort:='';
end;
procedure TForm1.Button17Click(Sender: TObject);
begin
Edit1.Text:=copy(edit1.Text,1,length(edit1.Text)-1);
stort:='';
setedit(edit1.Text);
end;
end.
2. 求:用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;
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制作一个加法计算器
如果只是个位数的加法的话,思路可以这样:
先定义一个全局状态变量,比如bFi,并置为真,然后分别给123三个按钮添加代码为:
如果bFi为真,框1出现对应按钮的数字,否则框2出现。
给“+”按钮添加代码为:置bFi为假。
给“=”按钮添加代码为:
框3 = 框1.值 + 框2.值;
bFi置为真。
如果是多位数的加法,比如213+132=?,就要在123按钮的代码中使用字符串处理来将按钮的数据添加在对应框内容的末尾,其他一样处理。
5. 急,求大家用delphi编制实现计算器的功能.
要来干吗?Delphi的第三方控件包RX控件包中就有现成的计算器控件。
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. delphi7制作计算器怎么设置加减乘除?
“=”不是一个按钮么?那么在它的click事件里写下你计算的代码就行了,这是最简单的方式。
按照你的这个界面设计,需要三个全局变量来处理,一个存储被处理的数,一个存储运算符号,一个存储处理数,每次按钮按下的时候只要判断存储运算符号的变量是社么就行了。PS:不建议初学者这么写计算器,因为需要你判断的逻辑太多,不如用三个输入框来处理来的明确!
8. 求高手解答:用delphi编写一个计算器的整个过程!~
你在知道里用"计算器"作关键字搜索一下,就是近十天内,我给别人写了一个计算器的全部代码,不过那人没有选择我的,选择了一歪的.
不过,现在谁还用计算器,用EXCEL方便的不的了.
如果搜不到,请说一声,全部代码都在.