Belajar Membuat Program dengan Delphi7 (bag. 2)

Membuat Input,Edit,Hapus Data pada Form Delphi

Apa kabar kawan? Semoga sehat adanya.
Sesuai janji saya kemaren. Kita lanjutkan bahasan kita soal program Delphi kita. Kali ini kita akan membuat form data anggota yang kita buat kemaren menjadi berfungsi tombol-tombolnya. Bagaimana. Sudah siap ?
Ulangi langkah yang dibuat kemaren. Masih ingat kan? Ya sambil menghafal langkah-langkahnya kan gak ada jeleknya mengukang sebentar. Hehee
Setelah siap Delhpi dengan Formnya seperti ini:


Sekarang saatnya kita membuat kode-kode perintah pada tombol-tombolnya. Yakinkan kalau Koneksi Delphi engan database nya sudah jalan. Tapi sebelum menuju tombol Simpan kita perlu membuat kode untuk mendeklarasikan bagaimana status Form saat mulai di jalankan. Caranya:
Klik di bagian kosong Form. Lalu pada Properties pilih event dan klik dua kali pada kolom OnCreate 

lalu ketikkan kodenya sbb:
procedure Tfrmanggota.FormCreate(Sender: TObject);
begin
   Button1.Enabled:= false;
   Button2.Enabled:= false;
   Button3.Enabled:= false;
   Button4.Enabled:= true;
end;

Apa maksud kode tersebut? Ya. Untuk membuat tiga tombol yaitu Button1,Button2 dan Button3 menjadi dalam kondisi tidak aktif dan hanya tombol Button4 saja yang aktif. Kenapa dibuat begitu? Nanti kita akan tahu. Sekarang mari kita lanjutkan koding-koding kita.

Untuk Tombol Simpan
Klik dua kali (double click) pada tombol simpan, lalu tuliskan kodenya seperti berikut :
procedure Tfrmanggota.Button1Click(Sender: TObject);
   var jenis:String;
begin
if Button1.Caption= 'Simpan' then
begin
   ADOQuery1.Close;
   ADOQuery1.SQL.clear;
if RadioButton1.Checked=true then
jenis := 'L'
else if RadioButton2.Checked=true then
jenis := 'P'
else
jenis := '';
   ADOQuery1.SQL.Add ('insert into dt_anggota(id,'
                    +'nama,tgl_lahir,jns_kelaink,'
                    +'alamat) Values("'
                    +Edit1.Text+'","'+Edit2.Text+'","'
                    +datetostr(datetimepicker1.date)+'","'
                    +jenis+'","'+Edit3.Text+'")');
   ADOQuery1.ExecSQL;
   ADOQuery1.SQL.Clear;
   ADOQuery1.SQL.add('Select * from dt_anggota');
   ADOQuery1.Open;
Edit1.Text :='';
Edit2.Text :='';
Edit3.Text :='';
RadioButton1.Checked:=false    ;
RadioButton2.Checked:=false   ;
edit1.SetFocus;
showmessage('Data Sudah Berhasil Disimpan!');
Button1.Enabled:= false;
end else
if Button1.Caption= 'Batal' then
begin
 Button1.Caption:= 'Simpan' ;
   Edit2.Enabled:= true;
   Edit3.Enabled:= true;
   DateTimePicker1.Enabled:= true;
   RadioButton1.Enabled:= true;
   RadioButton2.Enabled:= true;
   RadioButton1.Checked:=false;
   RadioButton2.Checked:=false;
   Edit2.Text:='' ;
   Edit1.Text:='' ;
   Edit3.Text :='';
   edit1.SetFocus;
   Button1.Enabled:= false;
   Button2.Enabled:= false;
   Button3.Enabled:= false;
end;
end;

Wah, panjang juga ya. Tapi mudah-mudahan bias dipahami maksudnya. Kalo masih bingung sementara di kopas aja dulu deh, ntar lama-lama juga mengerti kok. Keliatan rumit karena kita disana sudah melibatkan komponen RadioButton, dan menjadikan tombol Simpan kita bias sekaligus menjadi tombol Pembatalan input.(perhatikan bagian kode “if Button1.Caption= 'Batal' then Begin…dst”)

Sekarang untuk Tombol Edit
Sama caranya. Klik double pada tombol lalu tuliskan kodenya seperti berikut:

procedure Tfrmanggota.Button2Click(Sender: TObject);
var jenis:String;
begin
if Button2.Caption='edit' then
begin
Button1.Caption:= 'Simpan' ;
Button2.Caption:= 'Update' ;
Button3.Caption:= 'Batal';
Button1.Enabled:= false;
Edit2.Enabled:= true;
Edit3.Enabled:= true;
DateTimePicker1.Enabled:= true;
RadioButton1.Enabled:= true;
RadioButton2.Enabled:= true;
end else

if Button2.Caption='Update' then
begin
Button2.Caption:='Update';
ADOQuery1.Close;
ADOQuery1.SQL.clear;
if RadioButton1.Checked=true then
jenis := 'L'
else if RadioButton2.Checked=true then
jenis := 'P'
else
jenis := '';
ADOQuery1.SQL.Add ('update dt_anggota set nama ="'
                  + Edit2.Text
                  +'",tgl_lahir="'+datetostr(datetimepicker1.date)
                  +'",jns_kelamin="'+jenis+'",alamat="'
                  +Edit3.Text+'" where id =('+Edit1.Text+')');
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('Select * from dt_anggota');
ADOQuery1.Open;

Edit1.Text :='';
Edit2.Text :='';
Edit3.Text :='';
RadioButton1.Checked:=false    ;
RadioButton2.Checked:=false   ;
edit1.SetFocus;
showmessage('Data Sudah Berhasil Di Rubah!');

Button2.Enabled:= false;
Button3.Enabled:= false;
end;
end;

Disini tombol Edit juga kita fungsikan ganda, yaitu manakala tombol bertuliskan edit, saat di klik akan membuat kolom-kolom menjadi aktif untuk dapat di edit datanya dan merubah tulisan tombol menjadi Update. Lalu ketika di klik saat tombol bertuliskan Update maka program akan memproses perubahan data pada database kita. Begitulah kira-kira kronologi kerja pada kode di atas. Mudah-mudahan ngerti lah ya maksudnya.

Lanjut lagi.
Sekarang untuk Tombol Hapus
Biasa. Klik dua kali tombolnya lalu tuliskan kode nya seperti berikut :

procedure Tfrmanggota.Button3Click(Sender: TObject);
begin
if Button3.Caption= 'Batal' then
begin
   Button3.Caption:= 'Hapus' ;
   Edit2.Enabled:= true;
   Edit3.Enabled:= true;
   DateTimePicker1.Enabled:= true;
   RadioButton1.Enabled:= true;
   RadioButton2.Enabled:= true;
   RadioButton1.Checked:=false;
   RadioButton2.Checked:=false;
   Edit3.Text :='';
   Edit2.Text:='' ;
   Edit1.Text:='' ;
   edit1.SetFocus;
   Button1.Enabled:= false;
   Button2.Enabled:= false;
   Button3.Enabled:= false;

end else
if Button3.Caption= 'Hapus' then
begin
if(application.MessageBox('Yakin mau menghapus data ini?','Konfirmasi',MB_YesNo)=ID_Yes) then
begin
ADOQuery1.Close;
ADOQuery1.SQL.clear;
ADOQuery1.SQL.Add ('delete from dt_anggota where id =('
                            +Edit1.Text+')');
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('Select * from dt_anggota');
ADOQuery1.Open;

Edit1.Text :='';
Edit2.Text :='';
Edit3.Text :='';
RadioButton1.Checked:=false    ;
RadioButton2.Checked:=false   ;
Edit1.Enabled:= true;
edit1.SetFocus;
showmessage('Data Sudah Berhasil Di hapus!');
Button3.Enabled:= false;
end else
end;
end;

Dan
Untuk tombol Keluar nya tuliskan kode di bawah ini:

procedure Tfrmanggota.Button4Click(Sender: TObject);
begin
if(application.MessageBox('Yakin akan keluar dari program?','Konfirmasi',MB_YesNo)=ID_Yes) then
begin
Application.Terminate;
end;
end;

Sampai disini Program kita sudah bisa di coba. Coba jalankan dengan klik Run atau klik tombol F9 pada keyboard.
Tapi tunggu dulu. Kita tambah satu langkah lagi dulu. Saya ingin Form input saya itu bisa memanggil data dari database ke form juga. Sebab kan tadi kita sudah buat kode untuk meng edit dan meng hapus data. Lalu kalo kita belum bisa memanggil data kita dari database kan lucu ya. Hehee.. Untung di ingetin.
Sebenarnya banyak cara untuk memanggil/menampilkan data dari database ke form. Untuk kali ini saya akan menggunakan cara auto enter pada kolom Edit1 nya aja lah. Wow ide bagus juga nih. Tapi sulit enggak gan ? Jangan kuatir, mudah kok. Yuk di ulai aja.

Caranya: Klik pada komponen Edit1 lalu pada menu properties pilih bagian event (tadi kan udah tau toh dimana tempatnya?) kemudian pilih dan klik dua kali (dobel) pada OnKeyPress. Sudah? Ini dia kode yang harus di tuliskan;

procedure Tfrmanggota.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then  //maksudnya jika yang di tekan tombol Enter//
begin
if Edit1.Text='' then // maksudnya jika edit1 masih kosong//
begin
Application.MessageBox('Masukkan No IDnya dulu donk !','info',0);
Exit;
end
else
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('Select * From dt_anggota Where ID =('
                              +Edit1.Text+')');
ADOQuery1.open;
if not ADOQuery1.Eof then
begin
Edit2.Text := ADOQuery1.Fields[1].AsString;
Edit3.Text :=  ADOQuery1.Fields[4].AsString;
if ADOQuery1.Fields[3].AsString = 'L' then
RadioButton1.Checked:=true
else
RadioButton2.Checked:=true;
datetimepicker1.DateTime := ADOQuery1.Fields[2].AsDateTime;

Edit2.Enabled:= false;
Edit3.Enabled:= false;
DateTimePicker1.Enabled:= false;
RadioButton1.Enabled:= false;
RadioButton2.Enabled:= false;
Button1.Enabled:= true;
Button2.Enabled:= true;
Button3.Enabled:= true;
Button1.Caption:= 'Batal' ;
Button2.Caption:='edit';
Button3.Caption:= 'Hapus';
exit;

end else
Edit2.Enabled:= true;
Edit3.Enabled:= true;
DateTimePicker1.Enabled:= true;
RadioButton1.Enabled:= true;
RadioButton2.Enabled:= true;
RadioButton1.Checked:=false;
RadioButton2.Checked:=false;
Edit2.Text:='' ;
Edit3.Text :='';
edit2.SetFocus;
Button1.Enabled:= true;
Button2.Enabled:= false;
Button3.Enabled:= true;
Button3.Caption:= 'Batal';
Button1.Caption:= 'Simpan' ;
end;
end;
end;

Keterangan kode:
Saat tombol enter di tekan, jika kolom edit1 masih kosong akan muncul pesan “Masukkan NoIDnya dulu donk!”. Lalu jika data dengan ID yang di ketikkan  di temukan di database, maka data akan di tampilkan dan kondisi kolom-kolom non aktif,tombol Simpan non aktif, tombol Edit dan Hapus aktif. Jika data tidak ditemukan atau data belum ada di database dengan ID yang di ketikkan, maka kolom-kolom akan di aktifkan, kursor menuju ke edit2, tombol Simpan akan di aktifkan. Begitu kira-kira maksudnya. Lihat gambar:



Nah. Sekarang coba di run programnya. Coba masukkan data ke form. Kalau anda lakukan proses tadi dengan benar maka anda sekarang sudah bias menginputkan data kedalam database Ms Access dan juga memanggilnya serta nengedit datanya.

Iini dulu lah ya untuk kali ini. Selanjutnya nanti kita akan kembangkan form kita tadi untuk bisa memanggil data nya dari DBGridnya sendiri, Mencetak tabel datanya, Menyimpan Prongamnya, dan trik-trik lainnya. Ikuti terus ya…
Sampai ketemu lagi di bagian ke 3 ..

Label: