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.
- procedure TForm1.FormShow(Sender: TObject);
- begin
- Edit1.Enabled:=false;
- Edit2.Enabled:=false;
- Edit3.Enabled:=false;
- Edit4.Enabled:=false;
- Edit5.Enabled:=false;
- Edit1.Clear;
- Edit2.Clear;
- Edit3.Clear;
- Edit4.Clear;
- Edit5.Clear;
- end;
Double klik button1 dan ketikan kode berikut
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- if Button1.Caption='Tambah' then
- begin
- Edit1.Enabled:=true; //mengaktifkan edit1
- Edit1.SetFocus; //memfokuskan edit1
- Button1.Caption:='Batal'; //mengganti caption button1 menjadi batal
- end
- else
- begin
- Edit1.Enabled:=false; //
- Edit2.Enabled:=false; //
- Edit3.Enabled:=false; // menonaktifkan semua komponen edit
- Edit4.Enabled:=false; //
- Edit5.Enabled:=false; //
- Edit1.Clear; //
- Edit2.Clear; //
- Edit3.Clear; // membersihkan semua komponen edit
- Edit4.Clear; //
- Edit5.Clear; //
- Button1.Caption:='Tambah'; //merubah caption button1 menjadi tambah
- end;
- end;
Selanjutnya , pada edit1 on key press , ketikan kode berikut.
- procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
- begin
- if key=#13 then //bila tombol enter ditekan
- begin
- if Edit1.Text='' then //bila field edit kosong
- begin
- Application.MessageBox('maaf data harus diisi','Keslahan',MB_OK or MB_ICONWARNING);
- end
- else
- begin
- Edit2.Enabled:=true; //mengaktifkan edit2
- Edit2.SetFocus; //mefocuskan edit2
- end;
- end;
- 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.
- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
- type
- TForm1 = class(TForm)
- Edit1: TEdit;
- Edit2: TEdit;
- Edit3: TEdit;
- Edit4: TEdit;
- Edit5: TEdit;
- Button1: TButton;
- procedure FormShow(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- procedure Edit1KeyPress(Sender: TObject; var Key: Char);
- procedure Edit2KeyPress(Sender: TObject; var Key: Char);
- procedure Edit3KeyPress(Sender: TObject; var Key: Char);
- procedure Edit4KeyPress(Sender: TObject; var Key: Char);
- procedure Edit5KeyPress(Sender: TObject; var Key: Char);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- procedure TForm1.FormShow(Sender: TObject);
- begin
- Edit1.Enabled:=false;
- Edit2.Enabled:=false;
- Edit3.Enabled:=false;
- Edit4.Enabled:=false;
- Edit5.Enabled:=false;
- Edit1.Clear;
- Edit2.Clear;
- Edit3.Clear;
- Edit4.Clear;
- Edit5.Clear;
- end;
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- if Button1.Caption='Tambah' then
- begin
- Edit1.Enabled:=true; //mengaktifkan edit1
- Edit1.SetFocus; //memfokuskan edit1
- Button1.Caption:='Batal'; //mengganti caption button1 menjadi batal
- end
- else
- begin
- Edit1.Enabled:=false; //
- Edit2.Enabled:=false; //
- Edit3.Enabled:=false; // menonaktifkan semua komponen edit
- Edit4.Enabled:=false; //
- Edit5.Enabled:=false; //
- Edit1.Clear; //
- Edit2.Clear; //
- Edit3.Clear; // membersihkan semua komponen edit
- Edit4.Clear; //
- Edit5.Clear; //
- Button1.Caption:='Tambah'; //merubah caption button1 menjadi tambah
- end;
- end;
- procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
- begin
- if key=#13 then //bila tombol enter ditekan
- begin
- if Edit1.Text='' then //bila field edit kosong
- begin
- Application.MessageBox('maaf data harus diisi','Keslahan',MB_OK or MB_ICONWARNING);
- end
- else
- begin
- Edit2.Enabled:=true; //mengaktifkan edit
- Edit2.SetFocus; //mefocuskan edit
- end;
- end;
- end;
- procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
- begin
- if key=#13 then //bila tombol enter ditekan
- begin
- if Edit2.Text='' then //bila field edit kosong
- begin
- Application.MessageBox('maaf data harus diisi','Keslahan',MB_OK or MB_ICONWARNING);
- end
- else
- begin
- Edit3.Enabled:=true; //mengaktifkan edit
- Edit3.SetFocus; //mefocuskan edit
- end;
- end;
- end;
- procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
- begin
- if key=#13 then //bila tombol enter ditekan
- begin
- if Edit3.Text='' then //bila field edit kosong
- begin
- Application.MessageBox('maaf data harus diisi','Keslahan',MB_OK or MB_ICONWARNING);
- end
- else
- begin
- Edit4.Enabled:=true; //mengaktifkan edit
- Edit4.SetFocus; //mefocuskan edit
- end;
- end;
- end;
- procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
- begin
- if key=#13 then //bila tombol enter ditekan
- begin
- if Edit4.Text='' then //bila field edit kosong
- begin
- Application.MessageBox('maaf data harus diisi','Keslahan',MB_OK or MB_ICONWARNING);
- end
- else
- begin
- Edit5.Enabled:=true; //mengaktifkan edit
- Edit5.SetFocus; //mefocuskan edit
- end;
- end;
- end;
- procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);
- begin
- if key=#13 then //bila tombol enter ditekan
- begin
- if Edit5.Text='' then //bila field edit kosong
- begin
- Application.MessageBox('maaf data harus diisi','Keslahan',MB_OK or MB_ICONWARNING);
- end
- else
- begin
- Button1.SetFocus;
- end;
- end;
- end;
- 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}.
- procedure kondisiAwal;
- var a:Integer;
- begin
- with Form1 do
- begin
- for a :=0 to ComponentCount-1 do
- begin
- if Components[a] is TEdit then TEdit(Components[a]).Clear; //membersihkan semua komponen TEdit
- if Components[a] is TEdit then TEdit(Components[a]).Enabled := False; //menonaktifkan semua komponen TEdit
- Button1.Caption:='Tambah';
- Button1.SetFocus;
- end;
- end;
- end;
Panggil procedure tersebut pada form1 event on show.
- procedure TForm1.FormShow(Sender: TObject);
- begin
- kondisiAwal;
- end;
Selanjutnya , double klik button1 dan ketikan kode berikut.
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- if Button1.Caption='Tambah' then
- begin
- Edit1.Enabled:=true;
- Edit1.SetFocus;
- Button1.Caption:='Batal';
- end
- else
- begin
- kondisiAwal; //bila button1 captionnya batal , maka kondisiAwal dipanggil
- end;
- 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.
- procedure cekEdit(sender,fokus:TObject);//sender adalah Tedit awal , dan fokus Tedit tujuan
- begin
- with(sender as TEdit) do
- begin
- if Text='' then //bila sender kosong
- begin
- Application.MessageBox('Maaf data harus di isi','Kesalahan',MB_OK or MB_ICONWARNING);
- end
- else
- begin
- with(fokus as TEdit) do
- begin
- Enabled:=true;
- SetFocus;
- end;
- end;
- end;
- end;
Lalu , pada event on key press edit1 , ketikan kode berikut.
- procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
- begin
- if Key=#13 then
- begin
- cekEdit(Sender,Edit2);
- end;
- end;
Lakukan hal yang sama hingga edit4.Tentu dengan mengubah variabel tujuan.Pada , event on key press edit5 ketikan kode berikut.
- procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);
- begin
- if Key=#13 then
- begin
- if Edit5.Text='' then
- begin
- Application.MessageBox('Maaf data harus di isi','Kesalahan',MB_OK or MB_ICONWARNING);
- end
- else
- begin
- Button1.SetFocus;
- end;
- end;
- end;
Berikut kode lengkap dari Cara Kedua.
- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
- type
- TForm1 = class(TForm)
- Edit1: TEdit;
- Edit2: TEdit;
- Edit3: TEdit;
- Edit4: TEdit;
- Edit5: TEdit;
- Button1: TButton;
- procedure FormShow(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- procedure Edit1KeyPress(Sender: TObject; var Key: Char);
- procedure Edit2KeyPress(Sender: TObject; var Key: Char);
- procedure Edit3KeyPress(Sender: TObject; var Key: Char);
- procedure Edit4KeyPress(Sender: TObject; var Key: Char);
- procedure Edit5KeyPress(Sender: TObject; var Key: Char);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- procedure kondisiAwal;
- var a:Integer;
- begin
- with Form1 do
- begin
- for a :=0 to ComponentCount-1 do
- begin
- if Components[a] is TEdit then TEdit(Components[a]).Clear; //membersihkan semua komponen TEdit
- if Components[a] is TEdit then TEdit(Components[a]).Enabled := False; //menonaktifkan semua komponen TEdit
- Button1.Caption:='Tambah';
- Button1.SetFocus;
- end;
- end;
- end;
- procedure cekEdit(sender,fokus:TObject);//sender adalah Tedit awal , dan fokus Tedit tujuan
- begin
- with(sender as TEdit) do
- begin
- if Text='' then //bila sender kosong
- begin
- Application.MessageBox('Maaf data harus di isi','Kesalahan',MB_OK or MB_ICONWARNING);
- end
- else
- begin
- with(fokus as TEdit) do
- begin
- Enabled:=true;
- SetFocus;
- end;
- end;
- end;
- end;
- procedure TForm1.FormShow(Sender: TObject);
- begin
- kondisiAwal;
- end;
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- if Button1.Caption='Tambah' then
- begin
- Edit1.Enabled:=true;
- Edit1.SetFocus;
- Button1.Caption:='Batal';
- end
- else
- begin
- kondisiAwal; //bila button1 captionnya batal , maka kondisiAwal dipanggil
- end;
- end;
- procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
- begin
- if Key=#13 then
- begin
- cekEdit(Sender,Edit2);
- end;
- end;
- procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
- begin
- if Key=#13 then
- begin
- cekEdit(Sender,Edit3);
- end;
- end;
- procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
- begin
- if Key=#13 then
- begin
- cekEdit(Sender,Edit4);
- end;
- end;
- procedure TForm1.Edit4KeyPress(Sender: TObject; var Key: Char);
- begin
- if Key=#13 then
- begin
- cekEdit(Sender,Edit5);
- end;
- end;
- procedure TForm1.Edit5KeyPress(Sender: TObject; var Key: Char);
- begin
- if Key=#13 then
- begin
- if Edit5.Text='' then
- begin
- Application.MessageBox('Maaf data harus di isi','Kesalahan',MB_OK or MB_ICONWARNING);
- end
- else
- begin
- Button1.SetFocus;
- end;
- end;
- end;
- 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