Cara membuat Kalkulator di Dhelpi
1. langkah pertama, silakan kamu buat form seperti ini dengan jumlah dan posisi yang sama persis dengan gambar ini ( untuk mempermudah )
2. Lalu kamu masukin script seperti ini, Harus lengkap !!
unit Unit1;
interface
uses
Windows, Messages,
SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
ButtonMr: TButton;
ButtonSin: TButton;
Button7: TButton;
Button4: TButton;
Button1: TButton;
Button0: TButton;
ButtonPoint:
TButton;
ButtonNot: TButton;
ButtonResult:
TButton;
Button2: TButton;
ButtonM: TButton;
ButtonCos: TButton;
Button8: TButton;
Button5: TButton;
ButtonPhi: TButton;
ButtonTan: TButton;
Button9: TButton;
Button6: TButton;
Button3: TButton;
ButtonPlus: TButton;
ButtonFak: TButton;
ButtonLn: TButton;
ButtonKuadrat:
TButton;
ButtonKali: TButton;
ButtonOff: TButton;
ButtonLog: TButton;
ButtonAkar: TButton;
ButtonPangkat:
TButton;
ButtonDiv: TButton;
ButtonOn: TButton;
ButtonPer: TButton;
ButtonMod: TButton;
ButtonMin: TButton;
ButtonBagi: TButton;
RbDEG: TRadioButton;
RbRAD: TRadioButton;
RbGRADS:
TRadioButton;
Memo1: TMemo;
procedure
FormCreate(Sender: TObject);
procedure
ButtonOnClick(Sender: TObject);
procedure
ButtonOffClick(Sender: TObject);
procedure
Button0Click(Sender: TObject);
procedure
Button1Click(Sender: TObject);
procedure
Button2Click(Sender: TObject);
procedure
Button3Click(Sender: TObject);
procedure
Button4Click(Sender: TObject);
procedure
Button5Click(Sender: TObject);
procedure
Button6Click(Sender: TObject);
procedure
Button7Click(Sender: TObject);
procedure
Button8Click(Sender: TObject);
procedure
Button9Click(Sender: TObject);
procedure
ButtonPlusClick(Sender: TObject);
procedure
ButtonMinClick(Sender: TObject);
procedure
ButtonKaliClick(Sender: TObject);
procedure
ButtonBagiClick(Sender: TObject);
procedure
ButtonModClick(Sender: TObject);
procedure
ButtonDivClick(Sender: TObject);
procedure
ButtonResultClick(Sender: TObject);
procedure
ButtonKuadratClick(Sender: TObject);
procedure
ButtonPointClick(Sender: TObject);
procedure
ButtonNotClick(Sender: TObject);
procedure
ButtonAkarClick(Sender: TObject);
procedure
ButtonPangkatClick(Sender: TObject);
procedure
ButtonLnClick(Sender: TObject);
procedure
ButtonLogClick(Sender: TObject);
procedure
ButtonPerClick(Sender: TObject);
procedure
ButtonFakClick(Sender: TObject);
procedure
ButtonPhiClick(Sender: TObject);
procedure
ButtonSinClick(Sender: TObject);
procedure ButtonCosClick(Sender:
TObject);
procedure
ButtonTanClick(Sender: TObject);
procedure
ButtonMClick(Sender: TObject);
procedure
ButtonMrClick(Sender: TObject);
private
{ Private
declarations }
public
{ Public
declarations }
end;
var
Form1: TForm1;
MemAngka,MemLogic,MemOperator,MemSimpan:string;
implementation
uses math;
{$R *.dfm}
procedure
TForm1.FormCreate(Sender: TObject);
begin
memo1.Clear;{mengosongkan
caption / lines dari memo1}
{menonaktifkan
ketiga radiobutton}
RbDEG.Enabled:=false;
RbRAD.Enabled:=false;
RbGRADS.Enabled:=false;
end;
procedure
TForm1.ButtonOnClick(Sender: TObject);
begin
{setting ketika
tombol on ditekan}
Memo1.Text:=’0′;
{membuat layar
kalkulator berisi angka 0}
MemLogic:=’0′;
{merubah nilai
variable MemLogic menjadi 0}
MemOperator :=”;
{mengosongkan nilai
variable MemOperator}
MemAngka :=’0′;
{merubah nilai
variable MemAngka menjadi 0}
{mengaktifkan
kembali ketiga radiobutton}
RbDEG.Enabled:=true;
RbRAD.Enabled:=true;
RbGRADS.Enabled:=true;
RbDEG.Checked:=true;
{mengecek radiobutton RbDeg}
end;
procedure
TForm1.ButtonOffClick(Sender: TObject);
begin
memo1.clear;
{mengosongkan tampilan layar calculator}
MemLogic:=”;
MemSimpan :=’0′;
{menonaktifkan
ketiga radiobutton}
RbDEG.Checked
:=false;
RbRAD.Checked
:=false;
RbGRADS.Checked:=false;
end;
procedure
TForm1.Button0Click(Sender: TObject);
begin
if
memo1.text<>” then
if MemLogic=’0′ then
begin
if
MemOperator<>” then memo1.Text:=’0′ else
if memo1.text=’0′
then memo1.text:=’0′ else
begin
memo1.Text:=memo1.Text+’0′;
MemLogic:=’1′;
end;
end
else
memo1.Text:=memo1.Text+’0′;
end;
procedure
TForm1.Button1Click(Sender: TObject);
begin
if
memo1.text<>” then
if MemLogic=’0′ then
begin
MemLogic:=’1′;
if
MemOperator<>” then memo1.Text:=’1′ else
memo1.text:=’1′;
end
else
memo1.Text:=memo1.Text+’1′;
end;
procedure
TForm1.Button2Click(Sender: TObject);
begin
if
memo1.text<>” then
if MemLogic=’0′ then
begin
MemLogic:=’1′;
if
MemOperator<>” then memo1.Text:=’2′ else
memo1.text:=’2′;
end
else
memo1.Text:=memo1.Text+’2′;
end;
procedure
TForm1.Button3Click(Sender: TObject);
begin
if
memo1.text<>” then
if MemLogic=’0′ then
begin
MemLogic:=’1′;
if
MemOperator<>” then memo1.Text:=’3′ else
memo1.text:=’3′;
end
else
memo1.Text:=memo1.Text+’3′;
end;
procedure TForm1.Button4Click(Sender:
TObject);
begin
if
memo1.text<>” then
if MemLogic=’0′ then
begin
MemLogic:=’1′;
if
MemOperator<>” then memo1.Text:=’4′ else
memo1.text:=’4′;
end
else
memo1.Text:=memo1.Text+’4′;
end;
procedure
TForm1.Button5Click(Sender: TObject);
begin
if
memo1.text<>” then
if MemLogic=’0′ then
begin
MemLogic:=’1′;
if
MemOperator<>” then memo1.Text:=’5′ else
memo1.text:=’5′;
end
else
memo1.Text:=memo1.Text+’5′;
end;
procedure
TForm1.Button6Click(Sender: TObject);
begin
if
memo1.text<>” then
if MemLogic=’0′ then
begin
MemLogic:=’1′;
if
MemOperator<>” then memo1.Text:=’6′ else
memo1.text:=’6′ ;
end
else
memo1.Text:=memo1.Text+’6′;
end;
procedure
TForm1.Button7Click(Sender: TObject);
begin
if
memo1.text<>” then
if MemLogic=’0′ then
begin
MemLogic:=’1′;
if
MemOperator<>” then memo1.Text:=’7′ else
memo1.text:=’7′ ;
end
else
memo1.Text:=memo1.Text+’7′;
end;
procedure
TForm1.Button8Click(Sender: TObject);
begin
if
memo1.text<>” then
if MemLogic=’0′ then
begin
MemLogic:=’1′;
if
MemOperator<>” then memo1.Text:=’8′ else
memo1.text:=’8′;
end
else
memo1.Text:=memo1.Text+’8′;
end;
procedure
TForm1.Button9Click(Sender: TObject);
begin
if
memo1.text<>” then
if MemLogic=’0′ then
begin
MemLogic:=’1′;
if
MemOperator<>” then memo1.Text:=’9′ else
memo1.text:=’9′;
end
else
memo1.Text:=memo1.Text+’9′;
end;
procedure
TForm1.ButtonPlusClick(Sender: TObject);
begin
if
(memo1.text<>”) then
if MemLogic=’0′ then
MemOperator:=’+’ else
if
(MemOperator=”) then
begin
MemOperator:=’+';
MemLogic:=’0′;
MemAngka:=memo1.Text;
end
else
begin
if MemOperator=’+’
then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
if MemOperator=’-’
then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
if MemOperator=’x’
then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
if MemOperator=’/’
then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
if MemOperator=’mod’
then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
if MemOperator=’div’
then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
if MemOperator=’^’
then
memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
MemAngka:=memo1.Text;
MemOperator:=’+';
MemLogic:=’0′;
end;
end;
procedure TForm1.ButtonMinClick(Sender:
TObject);
begin
if
(memo1.text<>”) then
if MemLogic=’0′ then
MemOperator:=’-’ else
if
(MemOperator=”) then
begin
MemOperator:=’-';
MemLogic:=’0′;
MemAngka:=memo1.Text;
end
else
begin
if MemOperator=’+’
then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
if MemOperator=’-’
then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
if MemOperator=’x’
then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
if MemOperator=’/’ then
memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
if MemOperator=’mod’
then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
if MemOperator=’div’
then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
if MemOperator=’^’
then
memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
MemAngka:=memo1.Text;
MemOperator:=’-';
MemLogic:=’0′;
end;
end;
procedure
TForm1.ButtonKaliClick(Sender: TObject);
begin
if
(memo1.text<>”) then
if MemLogic=’0′ then
MemOperator:=’x’ else
if
(MemOperator=”) then
begin
MemOperator:=’x';
MemLogic:=’0′;
MemAngka:=memo1.Text;
end
else
begin
if MemOperator=’+’
then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
if MemOperator=’-’
then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
if MemOperator=’x’
then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
if MemOperator=’/’
then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
if MemOperator=’mod’
then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
if MemOperator=’div’
then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
if MemOperator=’^’
then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
MemAngka:=memo1.Text;
MemOperator:=’x';
MemLogic:=’0′;
end;
end;
procedure
TForm1.ButtonBagiClick(Sender: TObject);
begin
if
(memo1.text<>”) then
if MemLogic=’0′ then
MemOperator:=’/’ else
if
(MemOperator=”) then
begin
MemOperator:=’/';
MemLogic:=’0′;
MemAngka:=memo1.Text;
end
else
begin
if MemOperator=’+’
then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
if MemOperator=’-’
then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
if MemOperator=’x’
then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
if MemOperator=’/’
then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
if MemOperator=’mod’
then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
if MemOperator=’div’
then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
if MemOperator=’^’
then
memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
MemAngka:=memo1.Text;
MemOperator:=’/';
MemLogic:=’0′;
end;
end;
procedure
TForm1.ButtonModClick(Sender: TObject);
begin
if
(memo1.text<>”) then
if MemLogic=’0′ then
MemOperator:=’mod’ else
if
(MemOperator=”) then
begin
MemOperator:=’mod’;
MemLogic:=’0′;
MemAngka:=memo1.Text;
end
else
begin
if MemOperator=’+’
then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
if MemOperator=’-’
then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
if MemOperator=’x’
then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
if MemOperator=’/’
then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
if MemOperator=’mod’
then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
if MemOperator=’div’
then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
if MemOperator=’^’
then
memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
MemAngka:=memo1.Text;
MemOperator:=’mod’;
MemLogic:=’0′;
end;
end;
procedure
TForm1.ButtonDivClick(Sender: TObject);
begin
if
(memo1.text<>”) then
if MemLogic=’0′ then
MemOperator:=’div’ else
if (MemOperator=”)
then
begin
MemOperator:=’div’;
MemLogic:=’0′;
MemAngka:=memo1.Text;
end
else
begin
if MemOperator=’+’
then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
if MemOperator=’-’
then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
if MemOperator=’x’
then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
if MemOperator=’/’
then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
if MemOperator=’mod’
then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
if MemOperator=’div’
then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
if MemOperator=’^’
then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
MemAngka:=memo1.Text;
MemOperator:=’div’;
MemLogic:=’0′;
end;
end;
procedure
TForm1.ButtonResultClick(Sender: TObject);
begin
if MemOperator=’+’
then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
if MemOperator=’-’
then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
if MemOperator=’x’
then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
if MemOperator=’/’
then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
if MemOperator=’mod’
then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
if MemOperator=’div’
then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
if MemOperator=’^’
then
memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
MemAngka:=memo1.Text;
MemLogic:=’0′;
end;
procedure
TForm1.ButtonKuadratClick(Sender: TObject);
begin
if
memo1.text<>” then
memo1.Text:=floattostr(sqr(strtofloat(memo1.Text)));
end;
procedure
TForm1.ButtonPointClick(Sender: TObject);
begin
if
memo1.text<>” then
memo1.Text:=memo1.Text
+ ‘.’;
end;
procedure
TForm1.ButtonNotClick(Sender: TObject);
begin
if
memo1.text<>” then
memo1.Text:=floattostr(strtofloat(memo1.Text)*(-1));
end;
procedure
TForm1.ButtonAkarClick(Sender: TObject);
begin
if
memo1.text<>” then
memo1.Text:=floattostr(sqrt(strtofloat(memo1.Text)));
end;
procedure
TForm1.ButtonPangkatClick(Sender: TObject);
begin
if
(memo1.text<>”) then
if MemLogic=’0′ then
MemOperator:=’^’ else
if (MemOperator=”)
then
begin
MemOperator:=’^';
MemLogic:=’0′;
MemAngka:=memo1.Text;
end
else
begin
if MemOperator=’+’
then memo1.Text:=floattostr(strtofloat(MemAngka)+strtofloat(memo1.Text));
if MemOperator=’-’
then memo1.Text:=floattostr(strtofloat(MemAngka)-strtofloat(memo1.Text));
if MemOperator=’x’
then memo1.Text:=floattostr(strtofloat(MemAngka)*strtofloat(memo1.Text));
if MemOperator=’/’
then memo1.Text:=floattostr(strtofloat(MemAngka)/strtofloat(memo1.Text));
if MemOperator=’mod’
then memo1.Text:=inttostr(strtoint(MemAngka) mod strtoint(memo1.Text));
if MemOperator=’div’
then memo1.Text:=inttostr(strtoint(MemAngka)div strtoint(memo1.Text));
if MemOperator=’^’
then memo1.Text:=floattostr(exp(strtofloat(memo1.Text)*ln(strtofloat(MemAngka))));
MemAngka:=memo1.Text;
MemOperator:=’^';
MemLogic:=’0′;
end;
end;
procedure
TForm1.ButtonLnClick(Sender: TObject);
begin
if
(memo1.text<>”) then
memo1.Text :=
floattostr(ln(strtofloat(memo1.Text)));
end;
procedure
TForm1.ButtonLogClick(Sender: TObject);
begin
if
memo1.Text<=inttostr(0) then memo1.Text :=’Error’
else
if
(memo1.text<>”) then
memo1.Text :=
floattostr(log10(strtofloat(memo1.Text)));
end;
procedure
TForm1.ButtonPerClick(Sender: TObject);
begin
if memo1.Text = ’0′
then memo1.Text:=’Error divide zero’ else
if
memo1.Text<>” then memo1.Text :=floattostr(1/strtofloat(memo1.Text));
MemLogic :=’0′;
end;
procedure
TForm1.ButtonFakClick(Sender: TObject);
var i,n,fak:integer;
begin
if
memo1.Text<>” then
begin
n
:=strtoint(memo1.Text);
fak:=1;
for i:=1 to n-1 do
fak:=fak*n;
memo1.Text:=inttostr(fak);
MemLogic :=’0′;
end;
end;
procedure
TForm1.ButtonPhiClick(Sender: TObject);
begin
if
memo1.Text<>” then memo1.Text := floattostr(pi);
end;
procedure
TForm1.ButtonSinClick(Sender: TObject);
var sudut:real;
begin
if
memo1.Text<>” then
begin
sudut:=strtofloat(memo1.Text);
if RbDeg.Checked =
true then sudut:=sudut*pi/180 else
if RbRad.Checked =
true then sudut:=sudut else
if RbGrads.Checked =
true then sudut:=sudut*pi/200;
memo1.Text :=
floattostr(sin(sudut));
MemLogic :=’0′;
end;
end;
procedure
TForm1.ButtonCosClick(Sender: TObject);
var sudut:real;
begin
if
memo1.Text<>” then
begin
sudut:=strtofloat(memo1.Text);
if RbDeg.Checked =
true then sudut:=sudut*pi/180 else
if RbRad.Checked =
true then sudut:=sudut else
if RbGrads.Checked =
true then sudut:=sudut*pi/200;
memo1.Text :=
floattostr(cos(sudut));
MemLogic :=’0′;
end;
end;
procedure TForm1.ButtonTanClick(Sender:
TObject);
var sudut:real;
begin
if
memo1.Text<>” then
begin
sudut:=strtofloat(memo1.Text);
if RbDeg.Checked =
true then sudut:=sudut*pi/180 else
if RbRad.Checked =
true then sudut:=sudut else
if RbGrads.Checked =
true then sudut:=sudut*pi/200;
memo1.Text :=
floattostr(tan(sudut));
MemLogic :=’0′;
end;
end;
procedure
TForm1.ButtonMClick(Sender: TObject);
begin
MemSimpan :=
memo1.Text ;
MemLogic := ’0′;
MemOperator :=”;
MemAngka := ’0′;
end;
procedure
TForm1.ButtonMrClick(Sender: TObject);
begin
memo1.Text :=
MemSimpan ;
end;
end.
Selamat mencoba !!
Good luck
-INDAHNYA BERBAGI-