unit taschenrechner;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
Edit1: TEdit;
btn_1: TButton;
BTN_2: TButton;
BTN_3: TButton;
BTN_4: TButton;
BTN_5: TButton;
BTN_6: TButton;
BTN_7: TButton;
BTN_8: TButton;
BTN_9: TButton;
BTN_0: TButton;
btn_div: TButton;
btn_mal: TButton;
btn_minus: TButton;
btn_plus: TButton;
btn_gleich: TButton;
btn_clear: TButton;
BTN_komma: TButton;
procedure btn_clearClick(Sender: TObject);
procedure btn_plusClick(Sender: TObject);
procedure btn_malClick(Sender: TObject);
procedure btn_gleichClick(Sender: TObject);
procedure btn_1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btn_divClick(Sender: TObject);
procedure btn_minusClick(Sender: TObject);
procedure FormKeyPress(Sender: TObject;
var Key: Char);
procedure Edit1KeyPress(Sender: TObject;
var Key: Char);
private
{ Private-Deklarationen }
zwischenergebnis : real;
opperator :
String;
oppbool : bool;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var ausgabe : real;
procedure TForm1.btn_divClick(Sender: TObject);
begin
opperator := '
/';
if zwischenergebnis = 0
then
begin
try
zwischenergebnis := strtofloat(edit1.text);
except
zwischenergebnis := 0;
end;
edit1.Text := '
';
end
else
begin
edit1.Text := FloatToStr(zwischenergebnis / strtofloat(edit1.text));
zwischenergebnis := StrToFloat(edit1.text);
oppbool := true;
end;
end;
procedure TForm1.btn_malClick(Sender: TObject);
begin
opperator := '
*';
if zwischenergebnis = 0
then
begin
try zwischenergebnis := strtofloat(edit1.text);
except
zwischenergebnis := 0;
end;
edit1.Text := '
';
end
else
begin
edit1.Text := FloatToStr(zwischenergebnis * strtofloat(edit1.text));
zwischenergebnis := StrToFloat(edit1.text);
oppbool := true;
end;
end;
procedure TForm1.btn_minusClick(Sender: TObject);
begin
opperator := '
-';
if zwischenergebnis = 0
then
begin
try
zwischenergebnis := strtofloat(edit1.text);
except
zwischenergebnis := 0;
end;
edit1.Text := '
';
end
else
begin
edit1.Text := FloatToStr(zwischenergebnis - strtofloat(edit1.text));
zwischenergebnis := StrToFloat(edit1.text);
oppbool := true;
end;
end;
procedure TForm1.btn_plusClick(Sender: TObject);
begin
opperator := '
+';
if zwischenergebnis = 0
then
begin
try
zwischenergebnis := strtofloat(edit1.text);
except
zwischenergebnis := 0;
end;
edit1.Text := '
';
end
else
begin
edit1.Text := FloatToStr(zwischenergebnis + strtofloat(edit1.text));
zwischenergebnis := StrToFloat(edit1.text);
oppbool := true;
end;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject;
var Key: Char);
begin
Key:= #0;
end;
procedure TForm1.btn_gleichClick(Sender: TObject);
begin
if edit1.text = '
'
then
begin
edit1.Text := FloatToStr(zwischenergebnis);
exit;
end;
if (opperator = '
+')
and (zwischenergebnis <> 0 )
then
begin
edit1.Text := FloatToStr(zwischenergebnis + strtofloat(edit1.text));
zwischenergebnis := 0;
end
else
if (opperator = '
*')
and (zwischenergebnis <> 0)
then
begin
edit1.Text := FloatToStr (zwischenergebnis * strtofloat(edit1.Text));
zwischenergebnis := 0;
end
else
if (opperator = '
/')
and (zwischenergebnis <> 0)
then
begin
edit1.Text := FloatToStr (zwischenergebnis / strtofloat(edit1.Text));
zwischenergebnis := 0;
end
else
if (opperator = '
-')
and (zwischenergebnis <> 0)
then
begin
edit1.Text := FloatToStr (zwischenergebnis - strtofloat(edit1.Text));
zwischenergebnis := 0;
end;
end;
procedure TForm1.btn_clearClick(Sender: TObject);
begin
Edit1.Text := '
';
zwischenergebnis := 0;
end;
procedure TForm1.btn_1Click(Sender: TObject);
begin
if oppbool = true
then
begin
Edit1.Text := '
';
oppbool := false;
end;
Edit1.Text :=Edit1.Text + tbutton(sender).Caption;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
zwischenergebnis := 0;
opperator := '
';
end;
procedure TForm1.FormKeyPress(Sender: TObject;
var Key: Char);
begin
if not (key
in [#48..#57,#8,#27, #44, #43, #13, #47, #45, #42])
then Key:= #0;
//#48 = 0, #57 = 9, #8 = Backspace, #44 = ,
//Damit sind im Edit1 Feld nur Zahlen, Kommas und die Rücktaste erlaubt.
btn_1click(FindComponent('
BTN_'+key));
if key = #27
then btn_clearclick(self);
if key = #43
then btn_plusclick(self);
//if not (key in [#13]) then btn_gleichclick(self);
if key = #13
then btn_gleichclick(self);
if key = #47
then btn_divclick(self);
if key = #45
then btn_minusclick(self);
if key = #42
then btn_malclick(self);
end;
end.