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.

11/08/2010

Tutorial Membuat Aplikasi Database Dengan Delphi 7 Part-3



Masih inget tutorial sebelumnya mengenai pembuatan aplikasi database dengan delphi 7 !? Ini kelanjutannya gan.Udah lama banget yak !? Hehehe .. Lebih baik telat daripada tidak sama sekali.Pada postingan tersebut untuk tombol hapus dan ubah belum memiliki source code , artinya masih belum berfungsi.Untuk itu , mari kita beri source code.Sebagaimana namanya , tombol ubah berfungsi untuk merubah data dari tabel grBarang.Kecuali kode barang , semua variabel boleh di ubah.Kenapa kode barang tidak di ubah !? Karena merupakan inisial unique dari barang yang akan kita ubah.Dan tombol hapus , ya untuk menghapus.So , let's begin.

Double klik tombol ubah dan ketikan kode berikut.


  1. procedure TFinputBarang.BtnUbahClick(Sender: TObject);  
  2. begin  
  3.  edNama.enable:=true;  
  4.  edJumlahStock.enabled:=true;  
  5.  edSatuan.enabled:=true;  
  6.    
  7.  btnSimpan.enabled:=true;  
  8.  btnHapus.enabled:=false;  
  9.  btnUbah.enabled:=false;  
  10.  btnTambah.Caption:='&Batal';  
  11.    
  12.  lblCek.Caption:='idham';  
  13. end;  

Maksudnya ialah , ketika button ubah di tekan maka variabel edit bisa kita ubah.Lalu kita bisa menyimpannya setelah di ubah.Agar data yang kita ubah tidak terduplikasi , maka lblCek digunakan untuk menjadi pembeda.Sehingga ketika tombol simpan di tekan , yang di eksekusi bukanlah insert , melainkan edit.(lihat pada tutorial sebelumnya agar lebih jelas).
Selanjutnya double-click tombol hapus , lalu ketikan kode berikut :



  1. procedure TFinputBarang.BtnHapusClick(Sender: TObject);  
  2. begin  
  3.  with DM.TBarang do  
  4.   if Application.MessageBox('Anda yakin akan menghapus data ini ? ','Konfirmasi', MB_YESNO or MB_ICONQUESTION) = mrYes then  
  5.   begin  
  6.     if Locate('kdBarang', EdKodeBarang.Text, [loCaseInsensitive]) then  
  7.     begin  
  8.       Delete;  
  9.       ApplyUpdates;  
  10.       Refresh;  
  11.       Active:=False;  
  12.       Active:=True;  
  13.       KondisiAwal;  
  14.       Application.MessageBox('Data Berhasil Di Hapus','Berhasil', MB_OK or MB_ICONINFORMATION);  
  15.     end;  
  16.   end;  
  17. end;  

Jangan lupa tambahkan DB pada klausa uses agar fungsi loCaeInsensitive bisa tereksekusi.Setelah mengetikan source-code tersebut , seharusnya muncul pertanyaan dari agan-agan.Bagaimana cara memilih data yang akan kita hapus/ubah tersebut !? Pertanyaan yang bagus (yang nanya itu saya -,-").Pilih komponen grBarang lalu pada event cellClick ketikan kode berikut :


  1. procedure TFinputBarang.grBarangCellClick(Column: TColumn);  
  2. begin  
  3. with DM.TBarang do  
  4.   begin  
  5.     edKodeBarang.Text:=fieldbyname('KdBarang').asstring;  
  6.  edNama.Text:=fieldbyname('Nama').asstring;  
  7.  edJumlahStok.Text:=fieldbyname('JmlBarang').asstring;  
  8.  edSatuan.Text:=fieldbyname('Satuan').asstring;  
  9.   end;  
  10.   
  11.   BtnTambah.Caption:='Batal';  
  12.   BtnUbah.Enabled:=True;  
  13.   BtnHapus.Enabled:=True;  
  14. end;  

Double-click tombol keluar dan ketikan kode berikut :



  1. procedure TFinputBarang.BtnKeluarClick(Sender: TObject);  
  2. Begin  
  3.  if application.messageBox('Anda yakin akan keluar !?','Konfirmasi',mb_yesno or mb_iconquestion)=mryes then  
  4.   begin  
  5.    self.close;  
  6.   end;  
  7. end;  

Taraaaa !!Sekarang , semua tombol telah berfungsi.Dan form input barang telah selesai di buat.Selanjutnya , kita akan belajar membuat laporan yang akan menampilkan data setelah di input pada form input barang dengan menggunakan QuickReport.Sekian untuk tutorial kali ini ,semoga bermanfaat.

Oia , bila anda berminat untuk mempelajari delphi 7 dari tingkat dasar sampai mahir membuat aplikasi database sendiri.Silahkan kunjungi blog video tutorial saya DISINI.Tersedia video tutorial praktek selama 3 jam yang akan menuntun anda dengan mudah mempelajari pemrograman Delphi 7.

11/04/2010

SimulatorInDLL – Simulator Mikrokontroler MCS-51

Simulator pada versi ini dibuat terpisah dari IDEnya, yaitu dibuat menjadi file “SimulatorInDLL.dll”. Dengan begini Anda bisa mengembangkan simulator tersebut agar bekerja sesuai keinginan Anda.
Sebenarnya, simulator ini baru mendukung assembly. Tapi Anda bisa membuat batasan-batasan agar simulator seolah-olah bekerja untuk C. Syaratnya, Anda harus tahu persis bagaimana C membuat programnya. Hal ini mungkin jika Anda seorang multi-programmer, artinya tidak hanya mengerti pemrograman mikrokontroler tapi juga pemrograman yang lain. Anda juga harus cukup mengerti bagaimana SDCC bekerja. Jika tidak, Anda baru bisa menggunakan simulator untuk assembly saja.
Eit, jangan kuatir, meskipun simulator ini baru bisa bekerja dalam bahasa assembly, tapi Microcontroller Project akan mengonversi program yang Anda tulis dengan SDCC menjadi assembly. Jadi program C Anda tetap bisa dicoba dengan simulator. Nah sekarang kita akan bahas penggunaan simulator secara umum.
Menu utama SimulatorInDLL
Menu utama SimulatorInDLL

Tujuh menu utama pada simulator:
  1. Start. Tentu saja menu ini berfungsi untuk menjalankan simulasi. Menu ini akan berubah menjadi Stop jika sedang berjalan, jadi tentu saja berfungsi untuk menghentikan simulasi.
  2. Single Step (F7). Menu ini berfungsi untuk menjalankan hanya satu baris instruksi.
  3. Step Over (F8). Menu ini hampir sama dengan Single Step. Bedanya tampak jika instruksi yang dijalankan adalah instruksi call. Single Step akan melompat ke subprogram yang dipanggil, sedangkan Step Over akan menjalankan subprogram sampai selesai.
  4. Reset. Menu ini berfungsi halnya kita menekan tombol reset pada rangkaian mikrokontroler. Biasanya saat pertama kali simulator dijalankan, Anda belum bisa menjalankan simulasi sampai Anda klik menu ini. Demikian juga setelah Anda melakukan perubahan opsi.
  5. View. Menu ini berfungsi untuk memilih window mana saja yang akan ditampilkan. Yaitu window RAM internal, RAM eksternal, port, SFR, dan register.
  6. Option. Nah, yang ini yang benar-benar harus diperhatikan agar bisa menggunakan simulator secara optimal.
    • Update External. Kalo menu ini diberi tanda cek, maka setiap akses ke ram eksternal akan menyebabkan isi register pada jendela ram eksternal akan langsung diupdate.
    • Update Display. Kalo menu ini diberi tanda cek, maka setiap eksekusi program akan langsung menyebabkan semua jendela diupdate. Kamu sebaiknya memberi tanda cek pada menu ini jika kamu pengin liat setiap perubahan data pada setiap eksekusi program. Tapi hal ini akan menyebabkan jalannya simulasi menjadi jauh lebih lambat. Jadi kalo kamu hanya pengin liat hasil akhir atau hanya pengin liat kerja yang ditunjukkan pada port, sebaiknya buang saja tanda ceknya.
    • Separate 4 bit biner. Nah kalo menu ini diberi tanda cek, maka bilangan biner pada jendela port, sfr, register, atau ram eksternal akan dipisah dalam dua nibble.
    • Com. Nah menu ini termasuk menu yang sangat penting jika kamu lagi coba program untuk komunikasi serial. Kamu bisa pilih Com1 hingga Com4 jika ingin setiap penulisan pada register SBuf benar-benar dikirim ke port serial di komputermu. Selain itu kamu juga bisa menghubungkan SBuf dengan simulator lain melalui window message. Jika kamu pilih link ini, maka data yang diisikan ke SBuf akan dikirim ke window yang dituju dengan data pada wParam. Kamu sebelumnya harus mengatur dulu parameter-parameter yang dibutuhkan. Pertama adalah handle dari window yang dituju. Untuk mengisi nilai ini, kamu cukup klik pada tombol Capture Handle, terus arahkan pointer mouse ke window yang dituju, lalu klik di window tersebut. Berikutnya adalah message yang dikirim. Jika window simulator yang dituju butuh WM_USER, maka kamu cukup klik pada tombolnya untuk mendapatkan konstanta untuk WM_USER. Demikian juga jika window yang dituju meminta WM_CHAR, maka kamu cukup klik pada tombol WM_CHAR. Kamu bisa menggunakan notepad untuk menangkap data karakter yang dikirim melalui SBuf jika messagenya berupa WM_CHAR. Yang terakhir adalah lParam. Parameter yang ini tidak selalu digunakan. Ini mungkin akan penting jika kamu bikin sendiri simulator dan membutuhkan informasi tambahan, misalnya simulator kamu juga pengin berkomunikasi langsung dengan simulator ini. Kamu tinggal kasih tanda cek pada Handle Aplikasi ini untuk mendapatkan handle dari simulator yang sedang berjalan. Tentu saja keterangan ini hanya akan dipahami oleh kamu yang biasa bikin program di Windows.
    • Prioritas Thread. Nah yang ini kamu harus hati-hati milihnya. Jika kamu milih prioritas paling tinggi maka semua waktu CPU hampir-hampir akan dihabiskan hanya untuk menjalankan simulasi ini. Jadi kadang kamu bahkan akan sulit untuk menggerakkan mouse.
    • Port. Yang ini berguna untuk mengatur link dari P0 hingga P1. Jika kamu klik pada menu ini, maka kamu akan dibawa ke sebuah jendela untuk mengatur link dari port-port tersebut. Ada empat pilihan link untuk setiap port, yaitu link none, jika kamu pengin port untuk tidak terhubung kemanapun; link port, jika kamu pengin port terhubung ke port fisik, misalnya port paralel, ppi atau port-port fisik lain yang terpasang di komputermu; link message, jika data pada port pengin kamu link ke aplikasi yang sedang berjalan atau ke simulator lain; dan yang terakhir adalah link file, yaitu jika data yang dikirim ke port akan dikirimkan ke file. Pengaturan link message bisa dibilang sama dengan pengaturan link message pada COM.
    • Reset Port+Com setting on close. Jika menu ini diberi tanda cek, maka pengaturan pada port dan com akan dikembalikan ke keadaan tidak dilink kemanapun setelah simulasi ditutup. Sebaliknya, seting akan disimpan pada registry dan akan digunakan untuk mengatur simulator pada saat simulator dijalankan lagi.
    • Kecapatan Simulasi. Ini adalah menu terakhir pada menu Option. Ini akan menentukan tundaan setiap eksekusi simulasi. Tentu saja menu ini hanya akan berarti jika menu Update Display diberi tanda cek.
  7. About. Yang ini tidak begitu penting si, cuma kadang kalau kita bikin program, maka kita juga ingin dikenal. Nah kalau Anda klik menu yang ini, Anda bakal lihat logo kebanggaanku.
Break point
Ada kalanya kita ingin menjalankan simulasi tanpa harus mengawasi setiap langkahnya. Kita hanya ingin tahu keadaan pada baris tertentu saja, misal keadaan register-register tepat sebelum sebuah subprogram hendak kembali (pada perintah RET). Kalau begitu, Anda cukup memberi tanda break point pada baris yang Anda kehendaki sebagai tempat berhentinya simulasi. Caranya, klik ganda pada baris di mana Anda ingin simulasi berhenti. Untuk menghilangkan tanda break point, Anda tinggal klik ganda lagi pada baris tersebut.
Update Point
Jika kita pengin simulasi dijalankan dengan cepat, maka kita harus membuang tanda cek pada menu Option-Update Display. Sayangnya jika ini kita lakukan, maka tampilan pada semua jendela hanya akan diupdate setelah kita menghentikan simulasi. Jadi kita tidak bisa mengamati perubahan yang terjadi pada register-registernya. Nah kita bisa membuat agar pada titik-titik tertentu, nilai-nilai register diupdate tanpa harus menghentikan simulasi. Nah jika ini yang kamu kehendaki, maka kamu bisa tambahkan update point pada baris tertentu. Misalnya pada baris setelah sebuah port dimodifikasi sehingga kita bisa mengamati perubahan nilai pada port tersebut. Caranya adalah klik ganda sambil menekan tombol Ctrl pada baris yang pengin kamu tambah update point.
Breakpoint dan Updatepoint
Breakpoint (merah) dan Updatepoint (kuning)

11/03/2010

Simulasi Declare Component Secara Run Time di Delphi 7




Selamat siang agan-agan , siang yang sangat panas disini.Menusuk-nusuk kulit , menghujam jantung dan mencabik hati.Lebay !!Pada postingan kali ini saya akan membahas mengenai Simulasi Declare Component Secara Run Time di Delphi 7.Maksudnya !?Pernahkah agan ngebayangin gimana kalau kita membuat sebuah program GUI(Graphical User Interface) di Delphi 7 tanpa mendrag-drop component apapun !? Ya, kita melakukannya secara runtime dengan terlebih dahulu mendeklarasikan component yang akan digunakan pada file Unit.Sebenarnya , proses drag-drop component ke form merupakan proses pendeklarasian component itu sendiri.Namun di bungkus oleh IDE(Integrated Developement Environtment) yang dalam kasus ini Delphi 7 sehingga kita tidak perlu menuliskan code untuk pendeklarasian component.Bingung !?Bagusss !!haha.Mari kita contohkan dengan praktek.Seperti biasa gan.Silahkan buka borland Delphi 7 agan.Tambahkan 1 buah component TButton.1 TEdit dan 1 TListBox.Ketika aplikasi di jalankan , bila user menekan tombol button1 , maka text yang ada di edit1 akan di tambahkan ke ListBox1.Bila edit1 Kosong , maka akan muncul pesan kesalahan.Dengan menggunakan IDE , kita cukup mendrag-drop component tersebut kedalam form1.Susun component tersebut sesuai gambar berikut













lalu double-klik button1 dan ketikan kode berikut.


  1. procedure TForm1.Button1Click(Sender: TObject);  
  2. begin  
  3.    if Edit1.Text<>'' then  
  4.     begin  
  5.       ListBox1.Items.Add(Edit1.Text);  
  6.     end  
  7.    else  
  8.     begin  
  9.       ShowMessage('Edit belum di isi');  
  10.     end;  
  11. end;  

Yuph , hanya dengan cara seperti itu program yang kita buat sudah selesai.Cepat , mudah dan hemat waktu.Bagaimana jika kita membuat program yang sama namun tanpa mendrag-drop component apapun kedalam form , mungkinkah !? Tentu saja , itulah inti dari postingan saya kali ini.Buat program baru.Pada unit1 klause private , ketikan kode berikut.


  1. private  
  2.     lbBox:TListBox;   //inisialisasi TListBox  dengan nama lbBox  
  3.     tombol:TButton;  //Inisialisasi TButton    dengan nama tombol  
  4.     edInput:TEdit;   // inisialisasi TEdit     dengan nama edInput  
  5.     procedure tombolClick(Sender:TObject); //inisialisai event OnClick pada tombol  
  6.     { Private declarations }  

Pada klausa private tersebut , kita menginisialisasi component baru sesuai parent yang akan di tambahkan (TEdit , TListBox , TButton).Pada form1 event onShow , ketikan kode berikut.


  1. procedure TForm1.FormShow(Sender: TObject);  
  2. begin  
  3.   Form1.Height:=213; //mengatur tinggi form1  
  4.   Form1.Width:=151;  //mengatur lebar form1  
  5.   
  6.   lbBox:=TListBox.Create(Self); //pendeklarasian component  
  7.   lbBox.Parent:=Self;  
  8.   lbBox.Top:=10;  
  9.   lbBox.Left:=10;  
  10.   
  11.   tombol:=TButton.Create(Self);  
  12.   tombol.Parent:=Self;  
  13.   tombol.Top:=150;  
  14.   tombol.Left:=30;  
  15.   tombol.Caption:='Tambah';  
  16.   tombol.OnClick:=tombolClick; //menambahkan event onClick pada tombol  
  17.   
  18.   edInput:=TEdit.Create(Self);  
  19.   edInput.Parent:=Self;  
  20.   edInput.Top:=120;  
  21.   edInput.Left:=10;  
  22. end;  

Pada saat program di jalankan , proses deklarasi component dimulai.Selanjutnya , kita akan mendeklarasikan event onClick pada tombol.ketikan kode berikut setelah kode sebelumnya.


  1. procedure TForm1.tombolClick(sender:TObject); //deklarasi tombol event ocClick  
  2. begin  
  3.   if edInput.Text<>'' then  
  4.     begin  
  5.       lbBox.Items.Add(edInput.Text);  
  6.     end  
  7.   else  
  8.     begin  
  9.       ShowMessage('Edit harus di isi');  
  10.     end;  
  11. end;  

Lalu pada form1 event onClose , ketikan kode berikut.


  1. procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);  
  2. begin  
  3.   lbBox.Free;   //membebaskan component dari memori  
  4.   tombol.Free;  
  5.   edInput.Free;  
  6. end;  

Berikut kode lengkap dari program tersebut.

  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.     procedure FormShow(Sender: TObject);  
  12.     procedure FormClose(Sender: TObject; var Action: TCloseAction);  
  13.   private  
  14.     lbBox:TListBox;   //inisialisasi TListBox  dengan nama lbBox  
  15.     tombol:TButton;  //Inisialisasi TButton    dengan nama tombol  
  16.     edInput:TEdit;   // inisialisasi TEdit     dengan nama edInput  
  17.     procedure tombolClick(Sender:TObject); //inisialisai event OnClick pada tombol  
  18.     { Private declarations }  
  19.   public  
  20.     { Public declarations }  
  21.   end;  
  22.   
  23. var  
  24.   Form1: TForm1;  
  25.   
  26. implementation  
  27.   
  28. {$R *.dfm}  
  29.   
  30. procedure TForm1.FormShow(Sender: TObject);  
  31. begin  
  32.   Form1.Height:=213; //mengatur tinggi form1  
  33.   Form1.Width:=151;  //mengatur lebar form1  
  34.   
  35.   lbBox:=TListBox.Create(Self); //pendeklarasian component  
  36.   lbBox.Parent:=Self;  
  37.   lbBox.Top:=10;  
  38.   lbBox.Left:=10;  
  39.   
  40.   tombol:=TButton.Create(Self);  
  41.   tombol.Parent:=Self;  
  42.   tombol.Top:=150;  
  43.   tombol.Left:=30;  
  44.   tombol.Caption:='Tambah';  
  45.   tombol.OnClick:=tombolClick; //menambahkan event onClick pada tombol  
  46.   
  47.   edInput:=TEdit.Create(Self);  
  48.   edInput.Parent:=Self;  
  49.   edInput.Top:=120;  
  50.   edInput.Left:=10;  
  51. end;  
  52.   
  53. procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);  
  54. begin  
  55.   lbBox.Free;   //membebaskan component dari memori  
  56.   tombol.Free;  
  57.   edInput.Free;  
  58. end;  
  59.   
  60. procedure TForm1.tombolClick(sender:TObject); //deklarasi tombol event ocClick  
  61. begin  
  62.   if edInput.Text<>'' then  
  63.     begin  
  64.       lbBox.Items.Add(edInput.Text);  
  65.     end  
  66.   else  
  67.     begin  
  68.       ShowMessage('Edit harus di isi');  
  69.     end;  
  70. end;  
  71. end.  

Nah sekarang, coba jalankan program anda.Bila sukses , maka program akan berfungsi sama seperti program sebelumnya yang di buat dengan cara drag-drop.Perbedaan yang paling terlihat adalah dari besarnya file *.exe yang di hasilkan.Ini adalah file *.exe dari proses drag-drop.










Sedangkan dengan proses coding , file *.exe nya adalah sebagai berikut.











Namun , apakah sebanding keuntungan file *.exe yang lebih kecil dengan waktu yang digunakan untuk membuatnya !?Saya rasa tidak.Penggunaan IDE lebih efisien dan efektif dibandingkan mengetik secara manual source code program kita.Namun , ada perasaan "gagah" bila membuat program dengan menulis source code secara manual.Sayangnya , deadline tidak mengenal gagah :D
Sekian postingan kali ini semog bermanfaat.

11/01/2010

Cara Membuat dan Menggunakan DLL di Delphi 7


Selamat sore agan-agan.Akhirnya posting lagi , kangen banget membagi ilmu kepada agan-agan semua , :capedes.Okay , pada postingan kali ini saya akan membahas mengenai Cara Membuat dan Menggunakan DLL di Delphi 7.DLL (Dynamic Library Link) adalah sumberdaya/library file exe yang memungkinkan program untuk berbagi kode dan sumber daya lain yang diperlukan untuk melakukan tugas tertentu.Misalnya , kita bisa menyimpan procedure atau function di sebuah DLL , lalu kita panggil procedure atau function tersebut di aplikasi yang kita buat.Caranya !? Maka dari itu , segera buka borland delphi 7 anda.

Lalu , klik file -> new -> Other , lalu akan muncul dialog berikut.



Pilih DLL Wizard dan anda akan melihat source code standar library.Simpan file tersebut dengan nama test_dll.Kita akan menyimpan procedure untuk menampilkan pesan yang nantinya akan di panggil di file exe.Untuk itu , hapus semua code yang ada di editor , dan ganti dengan kode berikut ::

  1. library test_dll;  
  2.   
  3. uses  
  4.   SysUtils,  
  5.   Classes,  
  6.   Dialogs; //library untuk menggunakan dialog  
  7.   
  8. {$R *.res}  
  9.   
  10. procedure DllMessage; export;  
  11.  begin  
  12.    ShowMessage('Saya adalah message yang di simpan di DLL') ;//pesan  
  13. end;  
  14. exports DllMessage; //export procedure  
  15. begin  
  16. end.  

Simpan file tersebut lalu tekan ctrl + f9.Bila tidak ada kesalahan , harusnya sekarang muncul file bernama test_dll.dll di folder tempat anda menyimpan dll tadi.Nah sekarang , saatnya membuat aplikasi yang bertugas memanggil procedure tadi.Klik file -> new -> application lalu simpan di folder yang sama dengan file dll.Simpan file project dengan nama TestLibrary , dan Unit dengan nama Uutama.Tambahkan kode berikut setelah klausa Var


  1. procedure DllMessage; external 'test_dll.dll'  

Sekarang , tambahkan component TButton , lalu double-klik dan ketikan kode berikut

view plainprint?
  1. DllMessage; //dllmessage di panggil  

Berikut kode lengkapnya

view plainprint?
  1. unit Uutama;  
  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.     Button1: TButton;  
  12.     procedure Button1Click(Sender: TObject);  
  13.   private  
  14.     { Private declarations }  
  15.   public  
  16.     { Public declarations }  
  17.   end;  
  18.   
  19. var  
  20.   Form1: TForm1;  
  21.    procedure DllMessage; external 'test_dll.dll'  
  22.   
  23. implementation  
  24.   
  25. {$R *.dfm}  
  26.   
  27. procedure TForm1.Button1Click(Sender: TObject);  
  28. begin  
  29.    DllMessage;  
  30. end;  
  31.   
  32. end.  

Jalankan program anda dan coba klik button1.Harusnya , akan muncul kotak dialog sesuai yang terdapat pada file DLL.Sekian tutorial kali ini , semoga bermanfaat :)
Newer Posts Older Posts Home
Aulia DirUt. Powered by Blogger.
 

Followers

 

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