delphi实现计算器源码-完整版

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

private

{ Private declarations }

protected

// procedure CreateParams(var Params: TCreateParams);override; public

{ Public declarations }

end;

TRightEdit = class(TEdit)

protected

procedure CreateParams(var Params : TCreateParams);override; end;

type

operator = (Emp,add,sub,mul,divid); //空、加、减、乘、除

var

FrmCounter: TFrmCounter;

MyRightEdit: TRightEdit;

operate: Operator = emp;

operate1: Operator = emp; //记录上一次用户按下的运算符Pointed: Boolean = False; //是否输入小数点

temp: string = '';

tempnum: Real = 0.0;

implementation

{$R *.dfm}

//重载TRightEdit的CreateParams自定义编辑框的一些样式procedure TRightEdit.CreateParams(var Params : TCreateParams); begin

inherited;

Params.Style := params.Style + ES_Right;

end;

//创建窗体时初始化一些参数

procedure TFrmCounter.FormCreate(Sender: TObject);

begin

MyRightEdit := TrightEdit.Create(nil);

with MyRightEdit do

begin

parent := panel1;

text := '0.';

MyRightEdit.Height := 100;

Align := alTop;

Enabled := False;

ReadOnly := True;

show;

end;

end;

//清零的响应函数

procedure TFrmCounter.SBClearClick(Sender: TObject);

begin

Pointed := False;

MyRightEdit.Text := '0.';

TempNum := 0.0;

Operate := emp;

temp := '';

end;

//数字键输入响应函数

procedure TFrmCounter.SpeedButton1Click(Sender: TObject);

var

StrWidth: Integer;

begin

if (temp = '')or(Operate <> emp) then

TempNum := StrToFloat(MyRightEdit.Text);

if Operate <> emp then

MyRightEdit.Text := '0.';

Temp := Trim(MyRightEdit.Text);

StrWidth := Length(temp);

if Sender is TSpeedButton then

begin

if Operate <> emp then

begin

MyRightEdit.Text := '0.';

Operate := emp;

end;

if Pointed = False then

begin

if StrToFloat(MyRightEdit.Text) = 0 then

MyRightEdit.Text := FloatToStr(StrToFloat(MyRightEdit.Text)+

StrToInt(TSpeedButton(Sender).Caption))+'.'

else begin

Insert(Trim(TspeedButton(Sender).Caption),temp,StrWidth);

MyRightEdit.Text := temp;

end;

end

else begin

Insert(Trim(TSpeedButton(Sender).Caption),temp,StrWidth+1);

MyRightEdit.Text := temp;

end;

end;

end;

//正负符号响应函数

procedure TFrmCounter.SpeedButton13Click(Sender: TObject);

begin

if Operate <> emp then

begin

TempNum := StrToFloat(MyRightEdit.Text);

MyRightEdit.Text := '0.';

Operate := emp;

end;

if StrToFloat(MyRightEdit.Text) > 0 then

begin

MyRightEdit.Text := FloatToStr(-StrToFloat(MyRightEdit.Text));

if Pos('.',Trim(MyRightEdit.Text))=0 then

MyRightEdit.Text := FloatToStr(StrToFloat(MyRightEdit.Text))+'.'; end

else if StrToFloat(MyRightEdit.Text)<0 then

begin

MyRightEdit.Text := FloatToStr(abs(StrToFloat(MyRightEdit.Text)));

if Pos('.',Trim(MyRightEdit.Text))=0 then

MyRightEdit.Text := FloatToStr(StrToFloat(MyRightEdit.Text))+'.'; end;

end;

//小数点的输入

procedure TFrmCounter.SpeedButton14Click(Sender: TObject);

begin

if Operate <> emp then

begin

Operate := emp;

MyRightEdit.Text := '0';

end;

相关文档
最新文档