Download

11/10/2010

Optimalisasi Penggunaan Procedure di Delphi 7



Selamat siang agan-agan sekalian.Apa kabarnya !? Mudah-mudahan selalu diberi kesehatan dan kekuatan juga semangat untuk terus menambah ilmu.Pada postingan kali ini saya akan menyajikan tutorial mengenai Optimalisasi Penggunaan Procedure di Delphi 7.Bila anda belum tau apa itu procedure , alangkah baiknya bila anda membaca postingan Berikut terlebih dahulu.Seperti kita tau , Delphi 7 merupakan sebuah IDE(Integrated Developement Environment) dari bahasa pemrograman Pascal.Dengan modifikasi yang kompleks , maka lahirlah object pascal yang merupakan Delphi 7 itu sendiri.Mengapa dinamakan object pascal !? Yuph , karena
delphi 7 sudah mendukung OOP(Object Oriented Programming) dimana setiap elemen pada dari Delphi 7 diperlakukan sebagai object.Dan procedure serta function sendiri merupakan salah satu fasilitas yang mendukung konsep OOP tersebut.Tentu hal ini memermudah dalam proses coding.Mempermudah !? Bagaimana kita tau bahwa konsep OOP mempermudah dalam proses pemrograman !? Well , saya tidak pandai berteori.Lebih baik saya jelaskan dengan praktek.Dari tingkat basic tentunya , dimana kita akan membuat 2 program sederhana dengan fungsionalitas yang sama namun dengan tekhnik coding yang berbeda.Lalu tunggu apa lagi , buka borland Delphi 7 anda.
Tambahkan 5 buah komponen TEdit dan 1 buah komponen TButton.Susun komponen tersebut sesuai gambar berikut.





















Program tersebut memiliki alur proses sebagai berikut.
1.Ketika pertama kali program tampil , semua komponen TEdit tidak dapat diinput kecuali setelah menekan button tambah terlebih dahulu.
2.ketika user menekan button enter saat mengisi field TEdit , maka focus akan berpindah ke komponen edit selanjutnya kecuali bila field Tedit tersebut kosong.Misal anda mengisi field edit1 , lalu anda menekan button enter , maka focus akan berpindah ke edit2 dan seterusnya , kecuali kalau field edit tersebut kosong.
3.Ketika button tambah di tekan , focus akan berpindah ke edit1 , dan caption Tambah akan berupah menjadi Batal.
4.Bila button tambah dengan caption batal di tekan , maka semua komponen TEdit akan dikosongkan , serta tidak dapat di input.Dan caption button Tambah akan berubah menjadi Tambah.

Bingung !?Bagus lah  :D , tapi tetep semangat ya !!Semoga proses coding berikut bisa membuat anda mengerti.Seperti saya bilang , kita akan membuat program dengan fungsionalitas yang sama namun tekhnik coding yang berbeda.Untuk itu , mari kita menggunakan cara pertama terlebih dahulu.

A.Cara Pertama
Masuk ke form1 event on show dan ketikan kode berikut.


  1. procedure TForm1.FormShow(Sender: TObject);  
  2. begin  
  3.   Edit1.Enabled:=false;  
  4.   Edit2.Enabled:=false;  
  5.   Edit3.Enabled:=false;  
  6.   Edit4.Enabled:=false;  
  7.   Edit5.Enabled:=false;  
  8.   
  9.   Edit1.Clear;  
  10.   Edit2.Clear;  
  11.   Edit3.Clear;  
  12.   Edit4.Clear;  
  13.   Edit5.Clear;  
  14. end;  

Double klik button1 dan ketikan kode berikut

  1. procedure TForm1.Button1Click(Sender: TObject);  
  2. begin  
  3.   if Button1.Caption='Tambah' then  
  4.     begin  
  5.       Edit1.Enabled:=true//mengaktifkan edit1  
  6.       Edit1.SetFocus;      //memfokuskan edit1  
  7.       Button1.Caption:='Batal'//mengganti caption button1 menjadi batal  
  8.     end  
  9.   else  
  10.     begin  
  11.       Edit1.Enabled:=false//  
  12.       Edit2.Enabled:=false//  
  13.       Edit3.Enabled:=false// menonaktifkan semua komponen edit  
  14.       Edit4.Enabled:=false//  
  15.       Edit5.Enabled:=false//  
  16.   
  17.       Edit1.Clear;          //  
  18.       Edit2.Clear;          //  
  19.       Edit3.Clear;          // membersihkan semua komponen edit  
  20.       Edit4.Clear;          //  
  21.       Edit5.Clear;          //  
  22.   
  23.       Button1.Caption:='Tambah'//merubah caption button1 menjadi tambah  
  24.     end;  
  25. end;  

Selanjutnya , pada edit1 on key press , ketikan kode berikut.


  1. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);  
  2. begin  
  3.   if key=#13 then //bila tombol enter ditekan  
  4.     begin  
  5.       if Edit1.Text='' then //bila field edit kosong  
  6.         begin  
  7.           Application.MessageBox('maaf data harus diisi','Keslahan',MB_OK or MB_ICONWARNING);  
  8.         end  
  9.       else  
  10.         begin  
  11.           Edit2.Enabled:=true//mengaktifkan edit2  
  12.           Edit2.SetFocus;      //mefocuskan edit2  
  13.         end;  
  14.     end;  
  15. end;  

Lakukan pengkodean tersebut sampai edit4.Tentu dengan mengubah variabel nama edit pada code tersebut.pada event on key press edit5 , focuskan ke button1.Berikut kode lengkap dari program teresbut.


  1. unit Unit1;  
  2.   
  3. interface  
  4.   
  5. uses  
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  7.   Dialogs, StdCtrls;  
  8.   
  9. type  
  10.   TForm1 = class(TForm)  
  11.     Edit1: TEdit;  
  12.     Edit2: TEdit;  
  13.     Edit3: TEdit;  
  14.     Edit4: TEdit;  
  15.     Edit5: TEdit;  
  16.     Button1: TButton;  
  17.     procedure FormShow(Sender: TObject);  
  18.     procedure Button1Click(Sender: TObject);  
  19.     procedure Edit1KeyPress(Sender: TObject; var Key: Char);  
  20.     procedure Edit2KeyPress(Sender: TObject; var Key: Char);  
  21.     procedure Edit3KeyPress(Sender: TObject; var Key: Char);  
  22.     procedure Edit4KeyPress(Sender: TObject; var Key: Char);  
  23.     procedure Edit5KeyPress(Sender: TObject; var Key: Char);  
  24.   private  
  25.     { Private declarations }  
  26.   public  
  27.     { Public declarations }  
  28.   end;  
  29.   
  30. var  
  31.   Form1: TForm1;  
  32.   
  33. implementation  
  34.   
  35. {$R *.dfm}  
  36.   
  37. procedure TForm1.FormShow(Sender: TObject);  
  38. begin  
  39.   Edit1.Enabled:=false;  
  40.   Edit2.Enabled:=false;  
  41.   Edit3.Enabled:=false;  
  42.   Edit4.Enabled:=false;  
  43.   Edit5.Enabled:=false;  
  44.   
  45.   Edit1.Clear;  
  46.   Edit2.Clear;  
  47.   Edit3.Clear;  
  48.   Edit4.Clear;  
  49.   Edit5.Clear;  
  50. end;  
  51.   
  52. procedure TForm1.Button1Click(Sender: TObject);  
  53. begin  
  54.   if Button1.Caption='Tambah' then  
  55.     begin  
  56.       Edit1.Enabled:=true//mengaktifkan edit1  
  57.       Edit1.SetFocus;      //memfokuskan edit1  
  58.       Button1.Caption:='Batal'//mengganti caption button1 menjadi batal  
  59.     end  
  60.   else  
  61.     begin  
  62.       Edit1.Enabled:=false//  
  63.       Edit2.Enabled:=false//  
  64.       Edit3.Enabled:=false// menonaktifkan semua komponen edit  
  65.       Edit4.Enabled:=false//  
  66.       Edit5.Enabled:=false//  
  67.   
  68.       Edit1.Clear;          //  
  69.       Edit2.Clear;          //  
  70.       Edit3.Clear;          // membersihkan semua komponen edit  
  71.       Edit4.Clear;          //  
  72.       Edit5.Clear;          //  
  73.   
  74.       Button1.Caption:='Tambah'//merubah caption button1 menjadi tambah  
  75.     end;  
  76. end;  
  77.   
  78. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);  
  79. begin  
  80.   if key=#13 then //bila tombol enter ditekan  
  81.     begin  
  82.       if Edit1.Text='' then //bila field edit kosong  
  83.         begin  
  84.           Application.MessageBox('maaf data harus diisi','Keslahan',MB_OK or MB_ICONWARNING);  
  85.         end  
  86.       else  
  87.         begin  
  88.           Edit2.Enabled:=true//mengaktifkan edit  
  89.           Edit2.SetFocus;      //mefocuskan edit  
  90.         end;  
  91.     end;  
  92. end;  
  93.   
  94. procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);  
  95. begin  
  96.   if key=#13 then //bila tombol enter ditekan  
  97.     begin  
  98.       if Edit2.Text='' then //bila field edit kosong  
  99.         begin  
  100.           Application.MessageBox('maaf data harus diisi','Keslahan',MB_OK or MB_ICONWARNING);  
  101.         end  
  102.       else  
  103.         begin  
  104.           Edit3.Enabled:=true//mengaktifkan edit  
  105.           Edit3.SetFocus;      //mefocuskan edit  
  106.         end;  
  107.     end;  
  108. end;  
  109.   
  110. procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);  
  111. begin  
  112.   if key=#13 then //bila tombol enter ditekan  
  113.     begin  
  114.       if Edit3.Text='' then //bila field edit kosong  
  115.         begin  
  116.           Application.MessageBox('maaf data harus diisi','Keslahan',MB_OK or MB_ICONWARNING);  
  117.         end  
  118.       else  
  119.         begin  
  120.           Edit4.Enabled:=true//mengaktifkan edit  
  121.           Edit4.SetFocus;      //mefocuskan edit  
  122.         end;  
  123.     end;  
  124. end;  
  125.   
  126. procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);  
  127. begin  
  128.   if key=#13 then //bila tombol enter ditekan  
  129.     begin  
  130.       if Edit4.Text='' then //bila field edit kosong  
  131.         begin  
  132.           Application.MessageBox('maaf data harus diisi','Keslahan',MB_OK or MB_ICONWARNING);  
  133.         end  
  134.       else  
  135.         begin  
  136.           Edit5.Enabled:=true//mengaktifkan edit  
  137.           Edit5.SetFocus;      //mefocuskan edit  
  138.         end;  
  139.     end;  
  140. end;  
  141.   
  142. procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);  
  143. begin  
  144.   if key=#13 then //bila tombol enter ditekan  
  145.     begin  
  146.       if Edit5.Text='' then //bila field edit kosong  
  147.         begin  
  148.           Application.MessageBox('maaf data harus diisi','Keslahan',MB_OK or MB_ICONWARNING);  
  149.         end  
  150.       else  
  151.         begin  
  152.           Button1.SetFocus;  
  153.         end;  
  154.     end;  
  155. end;  
  156.   
  157. end.  

Jalankan program dan mulai inputkan apa saja pada tiap field edit.Perhatikan , dengan cara pertama untuk membuat program simpel seperti ini saja kita harus melakukan koding yang cukup banyak.Boros waktu tentunya.Dan lagi , bagaimana bila kita ingin merubah message yang ditampilkan menjadi "maaf data tidak boleh kosong"!? Kita harus merubahnya satu persatu.Kurang efisien !? Tentu saja.Maka dari itu , mari kita mencoba cara kedua yang memanfaatkan procedure yang kita buat.

B.Cara Kedua
Buat program baru lagi dengan kriteria form yang sama seperti tadi.Kita akan membuat procedure dengan nama kondisiAwal untuk mensetting tampilan ketika program pertama kali dijalankan.Ketikan kode berikut setelah {$R *.dfm}.

  1. procedure kondisiAwal;  
  2. var a:Integer;  
  3. begin  
  4.   with Form1 do  
  5.     begin  
  6.       for a :=0 to ComponentCount-1 do  
  7.         begin  
  8.           if Components[a] is TEdit then TEdit(Components[a]).Clear;   //membersihkan semua komponen TEdit  
  9.           if Components[a] is TEdit then TEdit(Components[a]).Enabled := False;  //menonaktifkan semua komponen TEdit  
  10.           Button1.Caption:='Tambah';  
  11.           Button1.SetFocus;  
  12.         end;  
  13.     end;  
  14. end;  

Panggil procedure tersebut pada form1 event on show.


  1. procedure TForm1.FormShow(Sender: TObject);  
  2. begin  
  3.   kondisiAwal;  
  4. end;  

Selanjutnya , double klik button1 dan ketikan kode berikut.


  1. procedure TForm1.Button1Click(Sender: TObject);  
  2. begin  
  3.   if Button1.Caption='Tambah' then  
  4.     begin  
  5.       Edit1.Enabled:=true;  
  6.       Edit1.SetFocus;  
  7.       Button1.Caption:='Batal';  
  8.     end  
  9.   else  
  10.     begin  
  11.       kondisiAwal; //bila button1 captionnya batal , maka kondisiAwal dipanggil  
  12.     end;  
  13. end;  

Selanjutnya , kita akan membuat procedure lagi yang berfungsi untuk menangani proses input pada field edit.Bila tombol enter di tekan , maka focus akan berpindah ke edit selanjutnya kecuali bila edit tersebut kosong.Yuph , fungsionalitas yang sama seperti cara pertama.Procedure yang bernama cekEdit ini di tempatkan setelah procedure kondisiAwal.Ayo ketikan kode berikut.


  1. procedure cekEdit(sender,fokus:TObject);//sender adalah Tedit awal , dan fokus Tedit tujuan  
  2. begin  
  3.   with(sender as TEdit) do  
  4.     begin  
  5.       if Text='' then //bila sender kosong  
  6.         begin  
  7.           Application.MessageBox('Maaf data harus di isi','Kesalahan',MB_OK or MB_ICONWARNING);  
  8.         end  
  9.       else  
  10.         begin  
  11.           with(fokus as TEdit) do  
  12.             begin  
  13.               Enabled:=true;  
  14.               SetFocus;  
  15.             end;  
  16.         end;  
  17.     end;  
  18. end;  

Lalu , pada event on key press edit1 , ketikan kode berikut.


  1. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);  
  2. begin  
  3.   if Key=#13 then  
  4.     begin  
  5.       cekEdit(Sender,Edit2);  
  6.     end;  
  7. end;  

Lakukan hal yang sama hingga edit4.Tentu dengan mengubah variabel tujuan.Pada , event on key press edit5 ketikan kode berikut.

  1. procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);  
  2. begin  
  3.   if Key=#13 then  
  4.     begin  
  5.       if Edit5.Text='' then  
  6.         begin  
  7.           Application.MessageBox('Maaf data harus di isi','Kesalahan',MB_OK or MB_ICONWARNING);  
  8.         end  
  9.       else  
  10.         begin  
  11.           Button1.SetFocus;  
  12.         end;  
  13.     end;  
  14. end;  

Berikut kode lengkap dari Cara Kedua.


  1. unit Unit1;  
  2.   
  3. interface  
  4.   
  5. uses  
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  
  7.   Dialogs, StdCtrls;  
  8.   
  9. type  
  10.   TForm1 = class(TForm)  
  11.     Edit1: TEdit;  
  12.     Edit2: TEdit;  
  13.     Edit3: TEdit;  
  14.     Edit4: TEdit;  
  15.     Edit5: TEdit;  
  16.     Button1: TButton;  
  17.     procedure FormShow(Sender: TObject);  
  18.     procedure Button1Click(Sender: TObject);  
  19.     procedure Edit1KeyPress(Sender: TObject; var Key: Char);  
  20.     procedure Edit2KeyPress(Sender: TObject; var Key: Char);  
  21.     procedure Edit3KeyPress(Sender: TObject; var Key: Char);  
  22.     procedure Edit4KeyPress(Sender: TObject; var Key: Char);  
  23.     procedure Edit5KeyPress(Sender: TObject; var Key: Char);  
  24.   private  
  25.     { Private declarations }  
  26.   public  
  27.     { Public declarations }  
  28.   end;  
  29.   
  30. var  
  31.   Form1: TForm1;  
  32.   
  33. implementation  
  34.   
  35. {$R *.dfm}  
  36.   
  37. procedure kondisiAwal;  
  38. var a:Integer;  
  39. begin  
  40.   with Form1 do  
  41.     begin  
  42.       for a :=0 to ComponentCount-1 do  
  43.         begin  
  44.           if Components[a] is TEdit then TEdit(Components[a]).Clear;   //membersihkan semua komponen TEdit  
  45.           if Components[a] is TEdit then TEdit(Components[a]).Enabled := False;  //menonaktifkan semua komponen TEdit  
  46.           Button1.Caption:='Tambah';  
  47.           Button1.SetFocus;  
  48.         end;  
  49.     end;  
  50. end;  
  51.   
  52. procedure cekEdit(sender,fokus:TObject);//sender adalah Tedit awal , dan fokus Tedit tujuan  
  53. begin  
  54.   with(sender as TEdit) do  
  55.     begin  
  56.       if Text='' then //bila sender kosong  
  57.         begin  
  58.           Application.MessageBox('Maaf data harus di isi','Kesalahan',MB_OK or MB_ICONWARNING);  
  59.         end  
  60.       else  
  61.         begin  
  62.           with(fokus as TEdit) do  
  63.             begin  
  64.               Enabled:=true;  
  65.               SetFocus;  
  66.             end;  
  67.         end;  
  68.     end;  
  69. end;  
  70.   
  71. procedure TForm1.FormShow(Sender: TObject);  
  72. begin  
  73.   kondisiAwal;  
  74. end;  
  75.   
  76. procedure TForm1.Button1Click(Sender: TObject);  
  77. begin  
  78.   if Button1.Caption='Tambah' then  
  79.     begin  
  80.       Edit1.Enabled:=true;  
  81.       Edit1.SetFocus;  
  82.       Button1.Caption:='Batal';  
  83.     end  
  84.   else  
  85.     begin  
  86.       kondisiAwal; //bila button1 captionnya batal , maka kondisiAwal dipanggil  
  87.     end;  
  88. end;  
  89.   
  90. procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);  
  91. begin  
  92.   if Key=#13 then  
  93.     begin  
  94.       cekEdit(Sender,Edit2);  
  95.     end;  
  96. end;  
  97.   
  98. procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);  
  99. begin  
  100.   if Key=#13 then  
  101.     begin  
  102.       cekEdit(Sender,Edit3);  
  103.     end;  
  104. end;  
  105.   
  106. procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);  
  107. begin  
  108.   if Key=#13 then  
  109.     begin  
  110.       cekEdit(Sender,Edit4);  
  111.     end;  
  112. end;  
  113.   
  114. procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);  
  115. begin  
  116.   if Key=#13 then  
  117.     begin  
  118.       cekEdit(Sender,Edit5);  
  119.     end;  
  120. end;  
  121.   
  122. procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);  
  123. begin  
  124.   if Key=#13 then  
  125.     begin  
  126.       if Edit5.Text='' then  
  127.         begin  
  128.           Application.MessageBox('Maaf data harus di isi','Kesalahan',MB_OK or MB_ICONWARNING);  
  129.         end  
  130.       else  
  131.         begin  
  132.           Button1.SetFocus;  
  133.         end;  
  134.     end;  
  135. end;  
  136.   
  137. end.  

Jalankan program anda.Sama seperti Cara Pertama bukan !? Tentu saja.Namun lihat , kode anda lebih irit serta terstruktur.Bila ada perubahan pada message , kita cukup merubanhya pada procedure cekEdit.Ini sangat menguntungkan bila kita menginginkan perubahan.Bayangkan bila kita memiliki belasan komponen TEdit yang harus divalidasi seperti Cara Pertama.Tentu program kita akan gemuk oleh source code yang kenyataannya bisa kita optimalkan agar lebih rapih dan singkat.Lebih cepat dan efisien.Ini hanya secuil dari manfaat procedure.Disini saya membeikan contoh procedure yang sangat simple agar mudah dimengerti.Yang terpenting ialah , anda memahami konsep dari procedure itu sendiri.Sekian untuk tutorial kali ini , semoga bermanfat.

0 komentar:

Post a Comment

Newer Post Older Post Home
Aulia DirUt. Powered by Blogger.
 

Blog Archive

Followers

 

Templates by Nano Yulianto | CSS3 by David Walsh | Powered by {N}Code & Blogger