Monday 6 April 2015

DELPHI7 :: Program Kalkulator di Delphi



Deskripsi :

Program kalkulator ini merupakan kalkulator bertipe standar bukan scientic karena fungsi-fungsi penghitungan yang ada masih sederhana seperti tambah, kurang, bagi, kali, akar, mod (sisa pembagian), dan sebagainya. Model dan style dari kalkulator yang saya buat menyerupai kalkulator yang ada pada windows xp. Saya membuat program ini dengan bahasa pemrograman delphi 7 dengan komponen standar yang ada di delphi 7 tersebut.

Source code Program :

  1.   
  2. type  
  3. TFKalkulator = class(TForm)  
  4.   b0: TBitBtn;  
  5.   b1: TBitBtn;  
  6.   b4: TBitBtn;  
  7.   b7: TBitBtn;  
  8.   bMinus: TBitBtn;  
  9.   b2: TBitBtn;  
  10.   b5: TBitBtn;  
  11.   b8: TBitBtn;  
  12.   bTitik: TBitBtn;  
  13.   b3: TBitBtn;  
  14.   b6: TBitBtn;  
  15.   b9: TBitBtn;  
  16.   bTambah: TBitBtn;  
  17.   bKurang: TBitBtn;  
  18.   bKali: TBitBtn;  
  19.   bBagi: TBitBtn;  
  20.   bHasil: TBitBtn;  
  21.   BitBtn18: TBitBtn;  
  22.   bMod: TBitBtn;  
  23.   bAkar: TBitBtn;  
  24.   EdTampil: TEdit;  
  25.   bClear: TBitBtn;  
  26.   BitBtn22: TBitBtn;  
  27.   bBackspace: TBitBtn;  
  28.   MainMenu1: TMainMenu;  
  29.   XPManifest1: TXPManifest;  
  30.   Pengaturan1: TMenuItem;  
  31.   Clear1: TMenuItem;  
  32.   Copy1: TMenuItem;  
  33.   Paste1: TMenuItem;  
  34.   N1: TMenuItem;  
  35.   Keluar1: TMenuItem;  
  36.   Bantuan1: TMenuItem;  
  37.   BukuManual1: TMenuItem;  
  38.   VideoTutorial1: TMenuItem;  
  39.   N2: TMenuItem;  
  40.   HakCipta1: TMenuItem;  
  41.   Timer1: TTimer;  
  42.   Panel1: TPanel;  
  43.   Label1: TLabel;  
  44.   Label2: TLabel;  
  45.   Label3: TLabel;  
  46.   Timer2: TTimer;  
  47.   procedure FormShow(Sender: TObject);  
  48.   procedure b1Click(Sender: TObject);  
  49.   procedure b2Click(Sender: TObject);  
  50.   procedure b3Click(Sender: TObject);  
  51.   procedure b4Click(Sender: TObject);  
  52.   procedure b5Click(Sender: TObject);  
  53.   procedure b6Click(Sender: TObject);  
  54.   procedure b7Click(Sender: TObject);  
  55.   procedure b8Click(Sender: TObject);  
  56.   procedure b9Click(Sender: TObject);  
  57.   procedure b0Click(Sender: TObject);  
  58.   procedure bClearClick(Sender: TObject);  
  59.   procedure bTambahClick(Sender: TObject);  
  60.   procedure bTitikClick(Sender: TObject);  
  61.   procedure bKurangClick(Sender: TObject);  
  62.   procedure bKaliClick(Sender: TObject);  
  63.   procedure bBagiClick(Sender: TObject);  
  64.   procedure bHasilClick(Sender: TObject);  
  65.   procedure bBackspaceClick(Sender: TObject);  
  66.   procedure bAkarClick(Sender: TObject);  
  67.   procedure bModClick(Sender: TObject);  
  68.   procedure bMinusClick(Sender: TObject);  
  69.   procedure Clear1Click(Sender: TObject);  
  70.   procedure Copy1Click(Sender: TObject);  
  71.   procedure Paste1Click(Sender: TObject);  
  72.   procedure Timer1Timer(Sender: TObject);  
  73.   procedure Keluar1Click(Sender: TObject);  
  74.   procedure Timer2Timer(Sender: TObject);  
  75.   procedure BitBtn18Click(Sender: TObject);  
  76.   procedure HakCipta1Click(Sender: TObject);  
  77. private  
  78.   { Private declarations }  
  79.   procedure hitung();  
  80. public  
  81.   { Public declarations }  
  82. end;  
  83.   
  84. var  
  85. FKalkulator: TFKalkulator;  
  86. hasil,temp, simbol, data : string;  
  87. klik : Integer;  
  88.   
  89. implementation  
  90.   
  91. uses StrUtils;  
  92.   
  93. {$R *.dfm}  
  94.   
  95. procedure TFKalkulator.hitung();  
  96. var nilai_real : real;   // hasil yg bersifat real  
  97.   nilai_int : Integer; // hasil yg bersifat integer  
  98. begin  
  99. // kondisi jika operand baru pertama kali diperintahkan  
  100. if klik=1 then  
  101.   hasil :=EdTampil.Text  
  102. else  
  103.   data := EdTampil.Text;  
  104.   
  105. // inisialisasi  
  106. nilai_real := 0;  
  107.   
  108. // kondisi perhitungan jika ditemukan simbol  
  109. if simbol = '+' then  
  110.  begin  
  111.  nilai_real := (StrToFloat(hasil)+StrToFloat(data));  
  112.  hasil := FloatToStr(nilai_real);  
  113.  end  
  114. else if simbol = '-' then  
  115.  begin  
  116.  nilai_real := (StrToFloat(hasil)-StrToFloat(data));  
  117.  hasil := FloatToStr(nilai_real);  
  118.  end  
  119. else if simbol = '/' then  
  120.  begin  
  121.  nilai_real := (StrToFloat(hasil)/strToFloat(data));  
  122.  hasil := FloatToStr(nilai_real);  
  123.  end  
  124. else if simbol = 'X' then  
  125.  begin  
  126.  nilai_real := (StrToFloat(hasil)*StrToFloat(data));  
  127.  hasil := FloatToStr(nilai_real);  
  128.  end  
  129. else if simbol = '%' then  
  130.  begin  
  131.  nilai_int := (StrToInt(hasil) mod StrToInt(data));  
  132.  hasil := IntToStr(nilai_int);  
  133.  end  
  134. else if simbol = 'sqrt' then  
  135.  begin  
  136.  nilai_real :=  sqrt(StrToFloat(hasil));  
  137.  hasil := FloatToStr(nilai_real);  
  138.  end  
  139. else if simbol = '1/x' then  
  140.  begin  
  141.  nilai_real :=  1/(StrToFloat(hasil));  
  142.  hasil := FloatToStr(nilai_real);  
  143.  end  
  144. else if simbol = '=' then  
  145.  hasil := FloatToStr(nilai_real);  
  146. end;  
  147.   
  148. procedure TFKalkulator.FormShow(Sender: TObject);  
  149. begin  
  150. //EdTampil.al :=  
  151. EdTampil.Text :=  '0';  
  152.   
  153. // inisialisasi variabel global  
  154. temp := '';   // menyimpan sementara bilangan di EdTampil  
  155. data := '';   // memindahkan hasil dari temp agar bersifat permanen  
  156. hasil := '';  // hasil perhitungan  
  157. simbol := ''// operand type  
  158.   
  159. klik := 0//bnyaknya klik suatu operand  
  160.   
  161. Panel1.Visible := False;  
  162. Timer1.Enabled := False;  
  163. Timer2.Enabled := False;  
  164. end;  
  165.   
  166. procedure TFKalkulator.b1Click(Sender: TObject);  
  167. begin  
  168. if (EdTampil.Text = '0'then  
  169.  EdTampil.Clear  
  170. else if (klik>1then  
  171.  begin  
  172.  EdTampil.Clear;  
  173.  klik:=1;  
  174.  end;  
  175.   
  176. temp := EdTampil.Text;  
  177. EdTampil.Text := temp+'1';  
  178. end;  
  179.   
  180. procedure TFKalkulator.b2Click(Sender: TObject);  
  181. begin  
  182. if (EdTampil.Text = '0'then  
  183.  EdTampil.Clear  
  184. else if (klik>1then  
  185.  begin  
  186.  EdTampil.Clear;  
  187.  klik:=1;  
  188.  end;  
  189.   
  190. temp := EdTampil.Text;  
  191. EdTampil.Text := temp+'2';  
  192. end;  
  193.   
  194. procedure TFKalkulator.b3Click(Sender: TObject);  
  195. begin  
  196. if (EdTampil.Text = '0'then  
  197.  EdTampil.Clear  
  198. else if (klik>1then  
  199.  begin  
  200.  EdTampil.Clear;  
  201.  klik:=1;  
  202.  end;  
  203.   
  204. temp := EdTampil.Text;  
  205. EdTampil.Text := temp+'3';  
  206. end;  
  207.   
  208. procedure TFKalkulator.b4Click(Sender: TObject);  
  209. begin  
  210. if (EdTampil.Text = '0'then  
  211.  EdTampil.Clear  
  212. else if (klik>1then  
  213.  begin  
  214.  EdTampil.Clear;  
  215.  klik:=1;  
  216.  end;  
  217.   
  218. temp := EdTampil.Text;  
  219. EdTampil.Text := temp+'4';  
  220. end;  
  221.   
  222. procedure TFKalkulator.b5Click(Sender: TObject);  
  223. begin  
  224. if (EdTampil.Text = '0'then  
  225.  EdTampil.Clear  
  226. else if (klik>1then  
  227.  begin  
  228.  EdTampil.Clear;  
  229.  klik:=1;  
  230.  end;  
  231.   
  232. temp := EdTampil.Text;  
  233. EdTampil.Text := temp+'5';  
  234. end;  
  235.   
  236. procedure TFKalkulator.b6Click(Sender: TObject);  
  237. begin  
  238. if (EdTampil.Text = '0'then  
  239.  EdTampil.Clear  
  240. else if (klik>1then  
  241.  begin  
  242.  EdTampil.Clear;  
  243.  klik:=1;  
  244.  end;  
  245.   
  246. temp := EdTampil.Text;  
  247. EdTampil.Text := temp+'6';  
  248. end;  
  249.   
  250. procedure TFKalkulator.b7Click(Sender: TObject);  
  251. begin  
  252. if (EdTampil.Text = '0'then  
  253.  EdTampil.Clear  
  254. else if (klik>1then  
  255.  begin  
  256.  EdTampil.Clear;  
  257.  klik:=1;  
  258.  end;  
  259.   
  260. temp := EdTampil.Text;  
  261. EdTampil.Text := temp+'7';  
  262. end;  
  263.   
  264. procedure TFKalkulator.b8Click(Sender: TObject);  
  265. begin  
  266. if (EdTampil.Text = '0'then  
  267.  EdTampil.Clear  
  268. else if (klik>1then  
  269.  begin  
  270.  EdTampil.Clear;  
  271.  klik:=1;  
  272.  end;  
  273.   
  274. temp := EdTampil.Text;  
  275. EdTampil.Text := temp+'8';  
  276. end;  
  277.   
  278. procedure TFKalkulator.b9Click(Sender: TObject);  
  279. begin  
  280. if (EdTampil.Text = '0'then  
  281.  EdTampil.Clear  
  282. else if (klik>1then  
  283.  begin  
  284.  EdTampil.Clear;  
  285.  klik:=1;  
  286.  end;  
  287.   
  288. temp := EdTampil.Text;  
  289. EdTampil.Text := temp+'9';  
  290. end;  
  291.   
  292. procedure TFKalkulator.b0Click(Sender: TObject);  
  293. begin  
  294. if (EdTampil.Text = '0'then  
  295.  EdTampil.Clear  
  296. else if (klik>1then  
  297.  begin  
  298.  EdTampil.Clear;  
  299.  klik:=1;  
  300.  end;  
  301.   
  302. temp := EdTampil.Text;  
  303. EdTampil.Text := temp+'0';  
  304. end;  
  305.   
  306. procedure TFKalkulator.bTitikClick(Sender: TObject);  
  307. begin  
  308. if (klik>1then  
  309.  begin  
  310.  EdTampil.Clear;  
  311.  klik:=1;  
  312.  end;  
  313.   
  314. temp := EdTampil.Text;  
  315. EdTampil.Text := temp+'.';  
  316. end;  
  317.   
  318. procedure TFKalkulator.bMinusClick(Sender: TObject);  
  319. begin  
  320. if ((EdTampil.Text = '0') OR (klik>1)) then  
  321.   EdTampil.Clear;  
  322.   
  323. temp := EdTampil.Text;  
  324. EdTampil.Text := temp+'-';  
  325. end;  
  326.   
  327. procedure TFKalkulator.bClearClick(Sender: TObject);  
  328. begin  
  329. FormShow(Sender); // tampilkan dlm keadaan awal  
  330. end;  
  331.   
  332. procedure TFKalkulator.bTambahClick(Sender: TObject);  
  333. begin  
  334. klik:=klik+1;  
  335. //ShowMessage(''+IntToStr(klik));  
  336. hitung();  
  337. if klik=1 then  
  338.   EdTampil.Text := ''  
  339. else  
  340.  EdTampil.Text := hasil;  
  341.   
  342. simbol := '+';  
  343. temp := '';  
  344. end;  
  345.   
  346. procedure TFKalkulator.bKurangClick(Sender: TObject);  
  347. begin  
  348. klik:=klik+1;  
  349. hitung();  
  350. if klik=1 then  
  351.   EdTampil.Text := ''  
  352. else  
  353.  EdTampil.Text := hasil;  
  354. simbol := '-';  
  355. temp := '';  
  356. end;  
  357.   
  358. procedure TFKalkulator.bKaliClick(Sender: TObject);  
  359. begin  
  360. klik:=klik+1;  
  361. hitung();  
  362. if klik=1 then  
  363.   EdTampil.Text := ''  
  364. else  
  365.  EdTampil.Text := hasil;  
  366. simbol := 'X';  
  367. temp := '';  
  368. end;  
  369.   
  370. procedure TFKalkulator.bBagiClick(Sender: TObject);  
  371. begin  
  372. klik:=klik+1;  
  373. hitung();  
  374. if klik=1 then  
  375.   EdTampil.Text := ''  
  376. else  
  377.  EdTampil.Text := hasil;  
  378.   
  379. simbol := '/';  
  380. temp := '';  
  381. end;  
  382.   
  383. procedure TFKalkulator.bModClick(Sender: TObject);  
  384. begin  
  385. klik:=klik+1;  
  386. hitung();  
  387. if klik=1 then  
  388.   EdTampil.Text := ''  
  389. else  
  390.  EdTampil.Text := hasil;  
  391.   
  392. simbol := '%';  
  393. temp := '';  
  394. end;  
  395.   
  396. procedure TFKalkulator.bAkarClick(Sender: TObject);  
  397. begin  
  398. klik:=klik+1;  
  399. if klik=1 then  
  400.  begin  
  401.     simbol := 'sqrt';  
  402.     hitung();  
  403.     EdTampil.Text := hasil;  
  404.  end  
  405. else  
  406.  begin  
  407.     hitung();  
  408.     EdTampil.Text := hasil;  
  409.  end;  
  410.   
  411. temp := '';  
  412. klik:=0;  
  413. simbol:= '';  
  414. end;  
  415.   
  416. procedure TFKalkulator.BitBtn18Click(Sender: TObject);  
  417. begin  
  418. klik:=klik+1;  
  419. if klik=1 then  
  420.  begin  
  421.     simbol := '1/x';  
  422.     hitung();  
  423.     EdTampil.Text := hasil;  
  424.  end  
  425. else  
  426.  begin  
  427.     hitung();  
  428.     EdTampil.Text := hasil;  
  429.  end;  
  430. temp := '';  
  431. klik:=0;  
  432. simbol:= '';  
  433. end;  
  434.   
  435. procedure TFKalkulator.bHasilClick(Sender: TObject);  
  436. begin  
  437. klik:=klik+1;  
  438. hitung();  
  439. EdTampil.Text := hasil;  
  440. temp := '';  
  441. klik:=0;  
  442. simbol:= '';  
  443. end;  
  444.   
  445. procedure TFKalkulator.bBackspaceClick(Sender: TObject);  
  446. var pjg : Integer;  
  447. begin  
  448. pjg := (EdTampil.GetTextLen); // panjang karakter dalam EdTampil  
  449. EdTampil.Text := LeftStr(EdTampil.Text, pjg-1); // Tampilkan karakter sebanyak pjg-1 dari kiri  
  450. if pjg = 1 then  
  451.  EdTampil.Text := '0';  
  452. end;  
  453.   
  454. procedure TFKalkulator.Clear1Click(Sender: TObject);  
  455. begin  
  456. bClear.Click;  
  457. end;  
  458.   
  459. procedure TFKalkulator.Copy1Click(Sender: TObject);  
  460. begin  
  461. EdTampil.SelectAll;  
  462. EdTampil.CopyToClipboard;  
  463. end;  
  464.   
  465. procedure TFKalkulator.Paste1Click(Sender: TObject);  
  466. begin  
  467. EdTampil.Clear;  
  468. EdTampil.ReadOnly := False;  
  469. EdTampil.PasteFromClipboard;  
  470. EdTampil.ReadOnly := True;  
  471. end;  
  472.   
  473. procedure TFKalkulator.Timer1Timer(Sender: TObject);  
  474. begin  
  475. AlphaBlend := True;  
  476. Panel1.Visible := True;  
  477. if Panel1.Height = 208 then  
  478.  begin  
  479.     Timer2.Enabled := True;  
  480.  end  
  481. else  
  482.  begin  
  483.     Panel1.Height := Panel1.Height +1;  
  484.   
  485.     if (Panel1.Height mod 4=0then  
  486.        begin  
  487.            Label1.Top := Label1.Top+1;  
  488.            Label2.Top := Label2.Top+1;  
  489.            Label3.Top := Label3.Top+1;  
  490.        end;  
  491.  end;  
  492. end;  
  493.   
  494. procedure TFKalkulator.Keluar1Click(Sender: TObject);  
  495. begin  
  496. Timer1.Enabled := True;  
  497. end;  
  498.   
  499. procedure TFKalkulator.Timer2Timer(Sender: TObject);  
  500. begin  
  501.  if AlphaBlendValue=180 then  
  502.     close  
  503.  else  
  504.     begin  
  505.     AlphaBlendValue := AlphaBlendValue-1;  
  506.     Caption := 'Kalkulator '+IntToStr(AlphaBlendValue-180);  
  507.     end;  
  508. end;  
  509.   
  510. procedure TFKalkulator.HakCipta1Click(Sender: TObject);  
  511. begin  
  512. ShowMessage('Peogram kalkulator Standart Versi 1.0 '+#13#10+  
  513.           'Dibuat oleh Mahasiswa Ilmu Komputer UB '+#13#10+  
  514.           'ADHITYA AHMAD P (0510960002) '+#13#10+  
  515.           'Angkatan 2005');  
  516. end;  
  517.   
  518. end.  

Output Program :



No comments:

Post a Comment