MODUL&PRAKTIKUM& PEMROGRAMAN&VISUAL&& BORLAND&DELPHI&7.0& & &
&
& & & & & INFORMATIKA& FAKULTAS&TEKNIK& UNIVERSITAS&PGRI&SEMARANG& 2015& & 1
& Daftar&Isi& ! 1.! Daftar!Isi!!……………………………………………………………………………..! 2.! Pedoman!Penulisan!Laporan!……………………………………………………! 3.! Contoh!Cover!Laporan!…………………………………………………………..! 4.! Contoh!Lembar!Pengesahan!Asisten!……………………………………….! 5.! Latihan!1!!……………………………………………………………………………..! 6.! Latihan!2!………………………………………………………………………………! 7.! Latihan!3!………………………………………………………………………………! 8.! Latihan!4!………………………………………………………………………………! 9.! Latihan!5!………………………………………………………………………………! !
i& ii& iii& iv! 1! 7! 13! 19! 25!
&
2
Pedoman&Pelaporan& Petunjuk!Pembuatan!Laporan!dengan!menggunakan!Font!Tahoma!16!untuk!Judul!dan!Tahoma! 11!untuk!isi,!dan!Line!Spasi!1,5.!Ukuran!Kertas!A4!dengan!Margin!Kiri!4!cm,!Atas!2,5cm,!Kanan! 2,5cm,!dan!Bawah!2,5cm.! Jilid!menggunakan!Softcover!warna!Biru!untuk!Laporan!I,!dan!Hijau!Laporan!II.! Laporan!untuk!setiap!Latihan!berisi!:! 1.! Pendahuluan! Mengenai!Latihan!Tujuan!dan!Manfaatnya! 2.! Teori! Teori!Pendukung!terhadap!Latihan! 3.! Hasil!Pengamatan!Perintah!Program!&!Jalannya!Program! Melaporkan!pengamatan!langkah!dan!perintah!program,!serta!jalannya!program! 4.! Pengujian! Pengujian! terhadap! program! dengan! menyebutkan! kekurangan! dan! kelebihan! program! yang!dibuat! 5.! Kesimpulan! Kesimpulan!yang!dapat!diambil!dari!setiap!latihan! Laporan! Dibuat! Perorang! dan! diserahkan! kepada! Asisten! sebanyak! 2! (dua)! kali! penyerahan! yaitu!pada!latihan!keX6!untuk!laporan!1!sampai!dengan!5,!dan!pada!saat!ujian!untuk!latihan!6! sampai!dengan!10.!! Laporan!Gabungan!Terdiri!dari!:! Untuk!Laporan!I! 1.! Cover! 2.! Pengesahan!Asisten! 3.! Daftar!Isi! 4.! Latihan1! 5.! Latihan2! 6.! Latihan3! 7.! Latihan4! 8.! Latihan5! 9.! Latihan6! 10.!Latihan7! 11.!Latihan8! 12.!Latihan9! 13.!Latihan10! 14.!Daftar!Pustaka! !
3
Tujuan!:! 1.! Mahasiswa!memahami!tahapan!perancangan!database!dengan!BDE! 2.! Mahasiswa!memahami!bagaimana!membuat!tabel!dengan!Database!Desktop! 3.! Mahasiswa!memahami!bagaimana!pengalokasian!file!dan!alias!database! ! Perancangan!Database!BDE! Dalam!perancangan!program!dengan!menggunakan!BDE!(Borland!Database!Enginee)!dilakukan! tahapanXtahapan!sebagai!berikut!:! 1.! Pengalokasian!Lokasi!data!dengan!menentukan!Directory!atau!Folder!dimana!kita!akan! menyimpan!file!data!atau!tabel!yang!akan!dibuat!dan!digunakan!dalam!program!dengan! menggunakan!SQLExplorer!yang!telah!disediakan!oleh!Delphi!7.0! 2.! Pembuatan! struktur! tabel! dan! pengaturan! field! atau! tata! pengisian! fieldnya! dengan! menentukan! type,! format,! dan! ketentuan! lainnya! dengan! menggunakan! Database! Desktop!yang!disediakan!oleh!Delphi!7.0! 3.! Merancang!program!pengolahan!database! ! Langkah!Praktikum!1!:! 1.! Gunakan! Windows! Explorer! untuk! membuat! Folder! atau! Directory! untuk! menampung! file! tabel! yang! digunakan! dalam! program,! misalkan! di! E:\FT! UNSUR\ProViL\Propustaka! (Untuk! Praktikum!buat!Folder!berdasarkan!Kelas!dan!Nama!misalkan!D\IFAXUdinSedunia\)! 2.! Selanjutnya! membuat! Alias! dengan! menggunakan! SQLExplorer,! untuk! membuat! alias! dengan! SQLExplorer! ada! 2! (dua)! cara,! yaitu! dengan! menggunakan! shotcut! SQL! Explorer! pada! Folder! Borland! Delphi! 7.0,! atau! apabila! sudah! memanggil! Delphi! 7.0! bisa! menggunakan!menu!utama!Delphi!Database!|!Explorer!
!
Maka!akan!muncul!:!
! 3.! Click! Kanan! kemudian! New! atau! pilih! Menu! Object! |! New! atau! dengan! menekan! tombol! Ctrl+N!maka!akan!muncul!tampilan!berikut!:!
4
! 4.! Pilih! driver! database! yang! akan! digunakan,! untuk! latihan! 1! pilih! Standard! yang! artinya! memilih! driver! database! untuk! jenis! Paradox! 7.0,! Driver! database! lain! bisa! dipilih! dengan! menggunakan! combobox! yang! akan! menampilkan! daftar! Driver! Database.! Setelah! dipilih! tekan!tombol!OK,!apabila!muncul!tampilan!seperti!berikut!:!
! dimana!muncul!warna!merah!terjadi!kegagalan!pada!SQLExplorer,maka!pilih!menu!Object!|! Cancel! |! Exit,! dan! untuk! mengantisipasinya! maka! pilih! pada! Windows! Start! |! Programs! |! Borland!Delhi!7.0!|!SQL!Explorer!dan!lakukan!langkah!3!dan!4!
! 5.! !Tulisan! Standard1! ganti! dengan! nama! database! yang! akan! digunakan! sebagai! alias! misalnya!kita!akan!mengganti!dengan!Perpustakaan!
!
! 5
6.! Kemudian!Pilih!Path!
!
Kemudian!pilih!Folder!:! !
Selanjutnya!klik!OK!
!
!!!!Pilih!menu!Object!|!Exit!maka!muncul!pesan!berikut!:!
!
! Tekan!tombol!Yes,!maka!langkah!untuk!membuat!Alias!telah!selesai! 6
7.! !Membuat! Tabel! dengan! menggunakan! database! desktop,! ada! 2! (dua)! cara,! pertama! melalui! shortcut! Database! Desktop! yang! berada! pada! folder! Borland! Delphi! 7.0,! dan! cara! kedua! melalui! menu! utama! Borland! Delphi! 7.0! yaitu! Tools! |! Database! Desktop,! sehingga! muncul!tampilan!berikut!:!
! Selanjutnya!pilih!menu!File!|!New!|!Table,!sehingga!muncul!tampilan!berikut!:!
! ! Pilihan!type!data!ke!Paradox!7!sebagai!standar!format!database!yang!akan!digunakan,! selanjutnya!buat!struktur!Tabel!sebagai!berikut!:!
! Apabila!telah!selesai!membuat!struktur!tabelnya,!klik!simpan!dan!beri!nama!“Anggota”! Selanjutnya! klik! tombol! edit! (dilingkari)! kemudian! isikan! data! sebanyak! 10! data! seperti! contoh!dibawah!ini!:! 7
!
8.! Setelah!selesai!membuat!tabel!Anggota,!maka!kita!buat!tabel!JenisPustaka!dengan!cara!pilih! menu!File!|!New!|!Table!dan!buat!strukturnya!seperti!berikut!:!!
! Simpan! tabelnya! dengan! nama! “JenisPustaka”! kemudian! isikan! sekitar! 10! record! dengan! menekan!tombol!edit!data!(dilingkari)! !
8
! 9.! Selanjutnya!buat!struktur!tabel!“Penerbit”!!seperti!berikut!:!
Simpan!dengan!Nama!“Penerbit”!dan!isikan!data!minimal!10!record!seperti!berikut!:!
!
9
10.!Selanjutnya!buat!struktur!tabel!untuk!“buku”!
!
! 11.!Untuk!field!Status!Default!Valuenya!isi!dengan!“A”!dan!selanjutnya!entry!datanya!sebanyak! 10!Record!seperti!tampilan!berikut!:!
10
!
12.!Buat!struktur!tabel!User!sebagai!berikut!:!!
! Simpan!dengan!nama!User.db,!selanjutnya!isi!minimal!10!record!:!
11
! ! !
!
12
Latihan!2! Data!Module!dan!Tabel!BDE! ! Tujuan!:! 1.! Membuat!dan!Memahami!penggunaan!Data!Module! 2.! Memahami!pengolahan!data!pada!tabel!dengan!perintah!dalam!komponen!ActionList! dan!dbNavigator! 3.! Memahami!pengolahan!data!pada!tabel!dengan!perintah!langsung! Pengolahan!database!pada!Borland!Delphi!7!digambarkan!seperti!berikut!:!
UI!adalah!User!Interface!atau!Form!yang!dirancang!sebagai!antar!muka!yang!pada!Delphi!7.0! menggunakan!komponen!Visual!dimana!komponen!tersebut!berfungsi!untuk!menampilkan!data! dari!data!yang!disimpan!dalam!file!atau!database!yang!dibaca!dengan!perantara!Data!Module.! Data! Module! terdiri! dari! komponen! non! Visual! yang! digunakan! sebagai! koneksi! media! dimana! berfungsi!untuk!menghubungkan!hasil!pembacaan!data!dari!file!atau!database!dengan!koneksi!! data!dan!Koneksi!File!yang!digunakan!untuk!membaca!data!dari!file!atau!table.!! Koneksi!yang!disediakan!oleh!Borland!Delphi!7.0!diantaranya!:! a.! Borland!Database!Engine! b.! Ado!dengan!ODBC!Windows! c.! Interbase! d.! dbExpress!! Berikut! tabel! yang! menggambarkan! konfigurasi! komponen! Delphi! 7.0! untuk! pengolahan! database.! Koneksi&File!
Koneksi&Media!
Koneksi&Visual!
BDE!:! Table! "! "! "!
Data!Access!:! DataSource!! X!DataSet!
DataControl!:! Komponen!Visual!! "! DataSource! "! Data!Field!
ADO! AdoConnection! "! ConnectionString! "! LoginPrompt! AdoTable! "! Connection! "! TableName! "! Active!
!
!
InterBase!
!
!
DatabaseName! TableName! Active!
! 13
Langkah!praktikum!:! 1.! Masuk!Menu!Utama!Delphi!7.0!pilih!File!|!New!|!Data!Module!
! 2.! Kemudian!ganti!Nama!DataModule2!menjadi!DM!untuk!mempersingkat!:! 3.! Selanjutnya!pasang!pada!Data!Module!5!table!dari!komponen!palette!BDE!dan!5!datasource! dari!komponen!palette!Data!Access!
! 4.! Konfigurasikan/setting! untuk! setiap! table! pada! propertiesnya! untuk! Name,! DatabaseName,! dan!TableName,!sebagai!berikut!:! Table\Properties! Name! Database!Name! Table!Name! Active! Table1! User! Perpustakaan! User.db! True! Table2! Anggota! Perpustakaan! Anggota.db! True! Table3! Buku! Perpustakaan! Buku.db! True! Table4! JenisPustaka! Perpustakaan! JenisPustaka.db! True! Table5! Penerbit! Perpustakaan! Penerbit.db! True!
! 14
5.! Sedangkan!untuk!datasourceXnya!konfigurasi/setting!propertiesnya!sebagai!berikut!:! Datasource\Properties! Name! Dataset! Datasource1! dsUser! User! Datasource2! dsAnggota! Anggota! Datasource3! dsBuku! Buku! Datasource4! dsJenisPustaka! JenisPustaka! Datasource5! dsPenerbit! Penerbit!
! 6.! Selanjutnya! simpan! dengan! pilih! menu! utama! Delphi! :! File! |! Save! :! DataModul.pas! atau! Ctrl+S!DataModul.pas! 7.! Pindah!ke!Form1,!ganti!properties!! a.! Name!:!FUserAdmin!! b.! Caption!:!“.:Pengelolaan!User!:.”! c.! Position!:!poScreenCenter! 8.! Design!Tampilan!berikut!:!!
!
!
!
15
9.! Selanjutnya!tekan!FX12,!kemudian!cari!kata!ketik!:!Uses!DataModulj!
! 10.!Selanjutnya! tekan! kembali! FX12! untuk! kembali! ke! perancangan! Form,! dengan! mengatur! properties!dari!komponen!berikut!:! Komponen! Properties! Nilai! DataSource! DM.dsUser! dbEdit1! DataField! UserName! DataSource! DM.dsUser! dbEdit2! DataField! Password! DataSource! DM.dsUser! DataField! Akses! dbComboBox1! O! Items! A! dbNavigator! DataSource! DM.dsUser! dbGrid! DataSource! DM.dsUser! Button1! Caption! &Tutup! Sehingga!tampilan!form!tampak!seperti!berikut!:!
! 16
11.!Double!Klik!tombol!Tutup!dan!ketikan:!
procedure!TFUserAdmin.Button1Click(Sender:!TObject)j! begin! !!Closej! endj!
12.!Simpan!dengan!Nama!:!Fuser.pas! 13.!Run!Program!dengan!menekan!FX9!untuk!mengguji!program! 14.!Tambahkan!data!sekitar!5!record! 15.!Buatlah!Form!baru!dan!konfigurasi/setting!propertiesnya!sebagai!berikut!:! a.! Name!:!FAnggotaPerpustakaan!! b.! Caption!:!“.:Pengelolaan!Anggota!:.”! c.! Position!:!poScreenCenter! 16.!Design!Tampilan!berikut!:!
17.!Tekan!tekan!FX12,!kemudian!cari!kata!ketik!:!Uses!DataModulj!
!
! 17
18.!Selanjutnya!tekan!kembali!FX12!untuk!kembali!ke!perancangan!Form! 19.!Untuk!ActionList1!buat!action!standar!dari! a.! TOpenPicture! !!!Caption! Buka!File!Foto! b.! TDataSetInsert! Caption! &Tambah! Datasource! DM.dsAnggota! c.! TDataSetEdit! Caption! &Edit! Datasource! DM.dsAnggota! d.! TDataSetDelete! Caption! &Delete! Datasource! DM.dsAnggota! e.! TDataSetPost! Caption! &Simpan! Datasource! DM.dsAnggota! f.! TDataSetCancel! Caption! &Batal! Datasource! DM.dsAnggota!
!
!
!!
18
20.!Konfigurasi/setting!dari!properties!komponen!adalah!:! Komponen! Properties! Nilai! Panel1! Caption!
! Panel2! Caption! ! DataSource! DM.dsAnggota! dbEdit1! DataField! NoAnggota! DataSource! DM.dsAnggota! dbEdit2! DataField! Nama! DataSource! DM.dsAnggota! DataField! Prodi! dbComboBox1! INFORMATIKA! Items! INDUSTRI! SIPIL! DataSource! DM.dsAnggota! dbMemo1! DataField! Alamat! DataSource! DM.dsAnggota! dbImage1! DataField! Foto! DataSource! DM.dsAnggota! VisibelButton! ! +nbInsert! False! dbNavigator1! +nbEdit! False! +ndDelete! False! +nbPost! False! +nbCancel! False! Button1! Action! DataSetInsert1! Button2! Action! DataSetEdit1! Button3! Action! DataSetDelete1! Button4! Action! DataSetPost1! Button5! Action! DataSetCancel1! Button6! Caption!! &Tutup! Button7! Action! OpenPicture1! Button8! Caption! &Kamera! Maka!hasilnya!adalah!sebagai!berikut!:!
19
!
Simpan!kedalam!file!dengan!nama!:!FAnggota.pas! 21.!Jadikan!FAnggota!menjadi!Form!Utama! 22.!Run!Program!untuk!menguji!program! 23.!Tambahkan!data!sekitar!5!record! 24.!Simpan!Project!:!Perpustakaan.dpr!
!
!
!
20
Latihan!3! Pengelolaan!Data!BDE!(Lanjutan)! ! Tujuan!:! 1.! Memahami!pengolahan!data!pada!tabel!dengan!perintah!langsung! ! 1.! Buka!File!Project!perpustakaan.dpr! 2.! Buatlah!Form!baru!dan!konfigurasi/setting!propertiesnya!sebagai!berikut!:! a.! Name!:!FJenisPustaka! b.! Caption!:!“.:Pengelolaan!Jenis!Pustaka!:.”! c.! Position!:!poScreenCenter! 3.! Design!Tampilan!berikut!:!
! 4.! Selanjutnya!tekan!FX12,!kemudian!cari!kata!implementation!dan!ketik!:!Uses!DataModulj!
!
!
!
21
5.! Selanjutnya!tambahkan!“db”!pada!:!
! 6.! Selanjutnya! tekan! kembali! FX12! untuk! kembali! ke! perancangan! Form,! dengan! mengatur! properties!dari!komponen!berikut!:! Komponen! Properties! Nilai! Panel1! Caption! ! Panel2! Caption! ! Edit1! Text! ! Edit2! Text! ! Button1! Caption! Ke!Awal! Button2! Caption! Berikut! Button3! Caption! Sebelum! Button4! Caption! Ke!Akhir! Button5! Caption! &Tambah! Button6! Caption! &Edit! Button7! Caption! &Hapus! Button8! Caption! &Simpan! Button9! Caption! &Batal! Button10! Caption! &Tutup! Sehingga!tampilan!sebagai!berikut!:!
!
!
22
7.! Form!onActive!ketik!perintah!berikut!:! procedure!TFJenisPustaka.FormActivate(Sender:!TObject)j! begin! !!Edit1.Text!:=!DM.JenisPustaka.Fields[0].AsStringj! !!Edit2.Text!:=!DM.JenisPustaka.Fields[1].AsStringj! endj! 8.! Double!Klik!Tombol!“Ke!Awal”,!ketik!perintah!berikut!:! procedure!TFJenisPustaka.Button1Click(Sender:!TObject)j! begin! !!DM.JenisPustaka.Firstj! !!Edit1.Text!:=!DM.JenisPustaka.Fields[0].AsStringj! !!Edit2.Text!:=!DM.JenisPustaka.Fields[1].AsStringj! !!Button1.Enabled!:=!Falsej! !!Button3.Enabled!:=!Falsej! !!Button2.Enabled!:=!Truej! !!Button4.Enabled!:=!Truej! endj! 9.! Double!Klik!Tombol!“Berikut”!,!ketik!perintah!berikut!:! procedure!TFJenisPustaka.Button2Click(Sender:!TObject)j! begin! !!DM.JenisPustaka.Nextj! !!Edit1.Text!:=!DM.JenisPustaka.Fields[0].AsStringj! !!Edit2.Text!:=!DM.JenisPustaka.Fields[1].AsStringj! !!Button1.Enabled!:=!Truej! !!Button3.Enabled!:=!Truej! !!Button2.Enabled!:=!Truej! !!Button4.Enabled!:=!Truej! !!If!DM.JenisPustaka.Eof!Then! !!!!!Button4.Enabled!:=!Falsej! endj! 10.!Double!Klik!Tombol!“Sebelum”!,!ketik!perintah!berikut!:! procedure!TFJenisPustaka.Button3Click(Sender:!TObject)j! begin! !!DM.JenisPustaka.Priorj! !!Edit1.Text!:=!DM.JenisPustaka.Fields[0].AsStringj! !!Edit2.Text!:=!DM.JenisPustaka.Fields[1].AsStringj! !!Button1.Enabled!:=!Truej! !!Button3.Enabled!:=!Truej! !!Button2.Enabled!:=!Truej! !!Button4.Enabled!:=!Truej! !!If!DM.JenisPustaka.Bof!Then! !!!!!Button1.Enabled!:=!Falsej! endj! ! !
23
11.!Double!Klik!Tombol!“Ke!Akhir”!,!ketik!perintah!berikut!:! procedure!TFJenisPustaka.Button4Click(Sender:!TObject)j! begin! !!DM.JenisPustaka.Lastj! !!Edit1.Text!:=!DM.JenisPustaka.Fields[0].AsStringj! !!Edit2.Text!:=!DM.JenisPustaka.Fields[1].AsStringj! !!Button2.Enabled!:=!Falsej! !!Button4.Enabled!:=!Falsej! !!Button1.Enabled!:=!Truej! !!Button3.Enabled!:=!Truej! endj! 12.!Double!Klik!Tombol!“Tambah”!,!ketik!perintah!berikut!:! procedure!TFJenisPustaka.Button5Click(Sender:!TObject)j! begin! !!Button5.Enabled!:=!Falsej! !!Button6.Enabled!:=!Falsej! !!Button7.Enabled!:=!Falsej! !!Button8.Enabled!:=!Truej! !!Button9.Enabled!:=!Truej! !!DM.JenisPustaka.Appendj! endj! 13.!Double!Klik!Tombol!“Edit”!,!ketik!perintah!berikut!:! procedure!TFJenisPustaka.Button6Click(Sender:!TObject)j! begin! !!Button5.Enabled!:=!Falsej! !!Button6.Enabled!:=!Falsej! !!Button7.Enabled!:=!Falsej! !!Button8.Enabled!:=!Truej! !!Button9.Enabled!:=!Truej! !!DM.JenisPustaka.Editj! endj! 14.!Double!Klik!Tombol!“Hapus”!,!ketik!perintah!berikut!:! procedure!TFJenisPustaka.Button7Click(Sender:!TObject)j! begin! !!If! MessageDlg('Apakah! Yakin! Akan! Menghapus! ?',mtConfirmation,[mbYes,MbNo],0)! =! MrYes!Then! !!!!!DM.JenisPustaka.Deletej! !!Edit1.Text!:=!DM.JenisPustaka.Fields[0].AsStringj! !!Edit2.Text!:=!DM.JenisPustaka.Fields[1].AsStringj! endj! ! !
24
15.!Double!Klik!Tombol!“Simpan”!,!ketik!perintah!berikut!:! procedure!TFJenisPustaka.Button8Click(Sender:!TObject)j! begin! !!!Button5.Enabled!:=!Truej! !!!Button6.Enabled!:=!Truej! !!!Button7.Enabled!:=!Truej! !!!Button8.Enabled!:=!Falsej! !!!Button9.Enabled!:=!Falsej! !!!If!(DM.JenisPustaka.State!=!dsInsert)!or! !!!!!!(DM.JenisPustaka.State!=!dsEdit)! !!!!!!Then! !!!Begin! !!!!!!DM.JenisPustaka.Fields[0].AsString!:=!Edit1.Textj! !!!!!!DM.JenisPustaka.Fields[2].AsString!:=!Edit2.Textj! !!!!!!DM.JenisPustaka.Postj! !!!Endj! endj! 16.!Double!Klik!Tombol!“Batal”!,!ketik!perintah!berikut!:! procedure!TFJenisPustaka.Button9Click(Sender:!TObject)j! begin! !!!Button5.Enabled!:=!Truej! !!!Button6.Enabled!:=!Truej! !!!Button7.Enabled!:=!Truej! !!!Button8.Enabled!:=!Falsej! !!!Button9.Enabled!:=!Falsej! !!!DM.JenisPustaka.Cancelj! endj! 17.!Double!Klik!Tombol!“Tutup”!,!ketik!perintah!berikut!:! procedure!TFJenisPustaka.Button10Click(Sender:!TObject)j! begin! !!Closej! endj! ! Simpan!kedalam!file!dengan!nama!:!FKodeJenisPustaka.pas! 18.!Jadikan!FJenisPustaka!menjadi!Form!Utama! 19.!Run!Program!untuk!menguji!program! 20.!Tambahkan!data!sekitar!5!record! ! !
25
21.!Buatlah!Form!baru!dan!konfigurasi/setting!propertiesnya!sebagai!berikut!:! a.! Name!:!FPenerbit! b.! Caption!:!“.:Pengelolaan!Penerbit:.”! c.! Position!:!poScreenCenter! 22.!Design!Tampilan!berikut!:!
! 23.!Selanjutnya!tekan!FX12,!kemudian!cari!kata!implementation!dan!ketik!:!Uses!DataModulj!
!
!
!
26
24.!Pilih!ActionList!dan!tentukan!action!:!
25.!Pilih!Oke! 26.!Konfigurasi!semua!datasource!dari!ActionList1!menjadi!:!DM.dsPenerbit! a.! b.! c.! d.! e.!
!
TDataSetInsert! Caption! &Tambah! Datasource! DM.dsPenerbit! TDataSetEdit! Caption! &Edit! Datasource! DM.dsPenerbit! TDataSetDelete! Caption! &Delete! Datasource! DM.dsPenerbit! TDataSetPost! Caption! &Simpan! Datasource! DM.dsPenerbit! TDataSetCancel! Caption! &Batal! Datasource! DM.dsPenerbit!
! 27.!Selanjutnya! tekan! kembali! FX12! untuk! kembali! ke! perancangan! Form,! dengan! mengatur! properties!dari!komponen!berikut!:! Komponen! Properties! Nilai! Panel1! Caption! ! Panel2! Caption! ! Edit1! Text! ! Edit2! Text! ! Button1! Caption! Awal! ! Action! DataSet1First! 27
Button2! Caption! Berikut! ! Action! DataSet1Next! Button3! Caption! Sebelum! ! Action! DataSet1Prior! Button4! Caption! Ke!Akhir! ! Action! DataSet1Last! Button5! Caption! &Tambah! ! Action! DataSet1Insert! Button6! Caption! &Edit! ! Action! DataSet1Edit! Button7! Caption! &Hapus! ! Action! DataSet1Delete! Button8! Caption! &Simpan! ! Action! DataSet1Post! Button9! Caption! &Batal! ! Action! DataSet1Cancel! Button10! Caption! &Tutup! 28.!Klik!Tombol!“Tutup”!dan!ketik!program!:! procedure!TFPenerbit.Button6Click(Sender:!TObject)j! begin! !!Closej! endj! ! Simpan!kedalam!file!dengan!nama!:!FPenerbitan.pas! 29.!Jadikan!FPenerbit!menjadi!Form!Utama! 30.!Simpan!Project! 31.!Run!Program!untuk!menguji!program! 32.!Tambahkan!data!sekitar!5!record! ! !
28
Latihan!4! Pengelolaan!Record!dan!Field!Tabel!BDE! ! Tujuan!:! 1.! Pengelolaan!LookUp! 2.! Pencarian! 3.! Filterisasi! ! 1.! Buka!File!Project!perpustakaan.dpr! 2.! Buatlah!Form!baru!dan!konfigurasi/setting!propertiesnya!sebagai!berikut!:! a.! Name!:!FOlahBuku! b.! Caption!:!“.:Pengelolaan!Buku!Pustaka!:.”! c.! Position!:!poScreenCenter! 3.! Pasang! PageControl! dari! komponen! Palette! Win32,! buat! 2! halaman! dan! berinama! masingX masing!“Data!Buku”!dan!“Daftar!Buku”,!caranya!! a.! PageControl!diklik! b.! Klik!Kanan! c.! New!Page!2x! 4.! Design!Tampilan!berikut!:!
Dan!untuk!tabsheet2nya!seperti!tampilan!berikut!
!
29
! 5.! Tambahkan!komponen!“OpenPictureDialog1”!dari!komponen!Palette!“Dialog”! 6.! Selanjutnya!tekan!FX12,!kemudian!cari!kata!implementation!dan!ketik!:!Uses!DataModulj!
! !
!
30
7.! Konfigurasi!ActionList1!!
8.! Konfigurasi!semua!datasource!dari!ActionList1!menjadi!:!DM.dsBuku! a.! b.! c.! d.! e.!
TDataSetInsert! Caption! ! Datasource!! TDataSetEdit! Caption! ! Datasource!! TDataSetDelete! Caption! ! Datasource!! TDataSetPost! Caption! ! Datasource!! TDataSetCancel! Caption! ! Datasource!!
!
&Tambah! DM.dsBuku! &Edit! DM.dsBuku! &Delete! DM.dsBuku! &Simpan! DM.dsBuku! &Batal! DM.dsBuku!
! ! 9.! Selanjutnya! tekan! kembali! FX12! untuk! kembali! ke! perancangan! Form,! dengan! mengatur! properties!dari!komponen!berikut!:! Komponen! Properties! Nilai! PageControl! ! <Buat!2!Tabsheet>! TabSheet1! Caption! Data!Buku! DataSource! DM.dsBuku! dbEdit1! Field! KodeJenis! DataSource! DM.dsBuku! dbEdit2! Field! Judul! 31
DataSource! Field! dbLooKUpComboBox1! ListSource! ListField! KeyField! DataSource! dbEdit3! Field! DataSource! dbEdit4! Field! DataSource! Field! dbLooKUpComboBox2! ListSource! ListField! KeyField! DataSource! dbMemo1! Field! DataSource! dbImage1! Field! DataSource! VisibelButton! +nbInsert! dbNavigator1! +nbEdit! +ndDelete! +nbPost! +nbCancel! Button1! Caption! Caption! Button2! Action! Button3! Caption! Caption! Button4! Action! Caption! Button5! Action! Caption! Button6! Action! Caption! Button7! Action! Caption! Button8! Action! Tabsheet2! Caption! dbControlGrid1! Datasource! dbText1! Field! dbText2! Field! Field! dbText3! Aligment! dbText4! Field!
DM.dsBuku! KodeJenis! DM.dsJenisPustaka! JenisPustaka! KodeJenis! DM.dsBuku! Edisi! DM.dsBuku! TahunTerbit! DM.dsBuku! Penerbit! DM.dsPenerbit! Penerbit! KodePenerbit! DM.dsBuku! Sumber! DM.dsBuku! Sampul! DM.dsBuku! ! False! False! False! False! False! &Baru! &Ambil!Gambar! OpenPicture1! &Kamera! &Tambah! DataSet1Insert! &Edit! DataSet1Edit! &Hapus! DataSet1Delete! &Simpan! DataSet1Post! &Batal! DataSet1Cancel! Daftar!Buku! DM.dsBuku! KodeBuku! Judul! Edisi! taRightJustify! Tahun! 32
dbText5! dbImage1! Button9!
Field! Field! Caption!
Penulis! Sampul! &Tutup!
! Sehingga!tampilan!sebagai!berikut!
Dan!
!
! 33
10.!Double!klik!tombol!“Baru”!dan!ketik!program!:! procedure!TFOlahBuku.Button1Click(Sender:!TObject)j! begin! !!!FPenerbit.ShowModalj! endj! 11.!Double!klik!tombol!“Tutup”!dan!ketik!program!:! procedure!TFOlahBuku.Button9Click(Sender:!TObject)j! begin! !!Closej! endj! 12.!Simpan!File!dengan!nama!:!FBuku.pas! 13.!Run!dan!Tambahkan!5!record! 14.!Buat!LookUp!Field!dengan!cara!masuk!ke!DataModule!(Shift+F12)!pilih!DM!
!
! 15.!Pilih!Buku!kemudian!klik!kanan!akan!muncul!PopUp!Menu!dan!pilih!“Field!Editor”! !
! 34
16.!Lalu!tekan!Ctrl+F!
! 17.!Untuk! membuat! Field! Bayangan! untuk! LookUp! tekan! Ctrl+N,! maka! akan! muncul! Field! Bayangan!“Jenis”!untuk!type!“LookUp”!
18.!Selanjutnya!buat!Field!LookUp!untuk!“NamaPenerbit”!!
19.!Untuk!menampilkan!Field!LookUp!tersebut,!kembali!ke!Form!FOlahBuku!dengan!cara!tekan! Shift+F12!lalu!pilih!FOlahBuku,!selanjutnya!tambahkan!design!pada!Tabsheet2!seperti!pada! design!:!
35
20.!Konfigurasi!untuk!komponen! Komponen! Properties! Nilai! dbText6! Field! Jenis! dbText7! Field! NamaPenerbit! 21.!Hasilnya!akan!tampak!:!
! ! !
!
!
36
22.!Pasang!Tombol!“Cari!No!Buku”!seperti!design!berikut!
23.!Double!Klik!Tombol!“Cari!No!Buku”!dan!ketikan!program!berikut!:! procedure!TFOlahBuku.Button10Click(Sender:!TObject)j! Var!Cari!:!Stringj! begin! !!Cari!:=!InputBox('Pencarian!No.Buku','No.Buku','')j! !!If!Cari!=!'!'!Then! !!!!!MessageDlg('Isilah!No.Buku!Yang!Dicari',mtError,[mbOk],0)! !!Else! !!!!!If!DM.Buku.FindKey([Cari])!Then! !!!!!!!!MessageDlg('Data!Ditemukan',mtConfirmation,[mbOk],0)! !!!!!Else! !!!!!!!!MessageDlg('Maaf!Data!Tidak!Ditemukan',mtConfirmation,[mbOk],0)! endj! ! ! ! ! ! ! ! ! !
!
37
24.!Untuk!melakukan!pencarian!dengan!Field!yang!ditentukan!design!tampilan!berikut!:!
! 25.!Konfigurasi!Komponen!sebagai!berikut!:! Komponen! Properties! Nilai! Judul! Sumber! Items! Edisi! ComboBox1! Tahun! ItemIndex! 0! Edit1! Text! ! Button11! Caption! Cari! 26.!Tuliskan!Library!“db”!pada!Uses,!gunanya!agar!mengenal!KeyWord!“LoPartialKey”!
! 38
27.!Double!klik!tombol!“Cari”!dan!ketikan!program!sebagai!berikut!:!
procedure!TFOlahBuku.Button11Click(Sender:!TObject)j! begin! !!If!Edit1.Text!=!'!'!Then! !!!!!MessageDlg('Isi!'+ComboBox1.Text+'Yang!Dicari',mtError,[mbOk],0)! !!Else! !!!!!If!DM.Buku.Locate(ComboBox1.Text,Edit1.Text,[LoPartialKey])!Then! !!!!!!!!MessageDlg('Data!'+ComboBox1.Text+'!'+Edit1.Text+'Ditemukan',mtConfirmation,[mbOk],0)! !!!!!Else! !!!!!!!!MessageDlg('Maaf!Data!'+ComboBox1.Text+'!'+Edit1.Text+'!Tidak!Ditemukan',! mtConfirmation,[mbOk],0)! endj!
28.!Untuk!Filterisasi,!design!pada!TabSheet2!dimodifikasi!menjadi!:! 29.!Konfigurasi!Komponen! Komponen! Properties! Nilai! Judul! Sumber! Items! Edisi! ComboBox2! Tahun! ItemIndex! 0! Edit2! Text! ! CheckBox1! Caption! Filter!Berdasarkan! 30.!Double!Klik!“CheckBox1”!dan!ketikan!program!berikut!:! procedure!TFOlahBuku.CheckBox1Click(Sender:!TObject)j! begin! !!If!(Not!CheckBox1.Checked)!or!(Edit2.Text!=!'')!Then! !!!!!DM.Buku.Filtered!:=!False! !!Else! !!Begin! !!!!DM.Buku.Filtered!:=!Falsej! !!!!DM.Buku.Filter!!!:=!ComboBox2.Text+'!=!'+QuotedStr(Edit2.Text)j! !!!!DM.Buku.Filtered!:=!Truej! !!Endj! endj! ! !
39
31.!Rubah!Events!dari!ComboBox2!dan!Edit2,!OnChange!=!CheckBox1Click!
!!!! 32.!Simpan! dan! Run,! kemudian! Uji! Coba! Pencarian! dan! Filterisasi,! laporkan! kejadian! yang! terjadi! ! !
40
Latihan!5! Membangun!Log!In!dan!Konfigurasi!Sistem! ! Tujuan!:! 1.! Membuat!Form!Log!In!dengan!Searching! 2.! Membuat!Menu!Aktif!berdasarkan!Log!in! 3.! Membuat!Konfigurasi!Sistem!yang!ditentukan! ! Langkah!Praktikum!:! 1.! Buka!File!Project!perpustakaan.dpr! 2.! Buat!sebuah!Form!Baru!kemudian!Design!sebagai!berikut!:!
3.! Konfigurasi/setting!propertiesnya!sebagai!berikut!:! a.! Name!!! :!FGantiPassword! b.! BorderStyle! :!bsDialog! c.! Caption!! :!“.:Ganti!Password:.”! d.! Position!! :!poScreenCenter! 4.! Tulis!“Uses!DataModulj”!seperti!tampilan!berikut!:!
! 5.! Konfigurasi!komponen!sebagai!berikut!:! Komponen! Properties! Nilai! Edit1! Text! ! Text! ! Edit2! PasswordChar! *! Caption! &Ganti! Button1! Enable! False! Button2! Caption! &Batal!
!
!
41
! 6.! Ketik!program!pada!Form!event!onActive!:! procedure!TFGantiPassword.FormActivate(Sender:!TObject)j! begin! !!!Edit1.Text!:=!DM.User.Fields[0].AsStringj! endj! 7.! Ketik!program!pada!Edit2!event!OnChange!sebagai!berikut!:! procedure!TFGantiPassword.Edit2Change(Sender:!TObject)j! begin! !!Button1.Enabled!:=!(Edit2.Text!<>!'')j! endj! 8.! Pada!Button1!atau!Ganti!ketik!program!:! procedure!TFGantiPassword.Button1Click(Sender:!TObject)j! begin! !!!DM.User.Editj! !!!DM.User.Fields[1].AsString!:=!Edit2.Textj! !!!DM.User.Postj! endj! 9.! Pada!Button2!atau!Batal!ketik!program!:! procedure!TFGantiPassword.Button2Click(Sender:!TObject)j! begin! !!Closej! endj! 10.!Simpan!dengan!nama!:!FPassword.pas! 11.!Buat!sebuah!Form!Baru!kemudian!Design!sebagai!berikut!:!
! 12.!Konfigurasi/setting!propertiesnya!sebagai!berikut!:! e.! Name!!! :!FLogin! f.! BorderStyle! :!bsDialog! g.! Caption!! :!“…:::Login:::….”! h.! Position!! :!poScreenCenter! 13.!Tulis!“Uses!DataModulj”!seperti!tampilan!berikut!:!
42
14.!Tambahkan!library!“db”!pada!uses!:!
!
15.!Konfigurasi!komponen!sebagai!berikut!:! Komponen! Properties! Nilai! Edit1! Text! ! Text! ! Edit2! PasswordChar! *! Caption! Log!&in! Button1! Enable! False! Button2! Caption! &Batal! 16.!Ketik!program!pada!Edit2!event!OnChange!:! procedure!TForm1.Edit2Change(Sender:!TObject)j! begin! !!Button1.Enabled!:=!(Edit2.Text!<>!'')j! endj! 17.!Ketik!Program!pada!tombol!“Log!In”!:! procedure!TFLogin.Button1Click(Sender:!TObject)j! begin! !!!If! DM.User.Locate('UserNamejPassword',VarArrayof([Edit1.Text,Edit2.Text]),[LoPartialKey])! Then! !!Begin! !!!!!!FUtama.Buku1.Enabled!:=!(DM.User.Fields[2].AsString!=!'A')j! !!!!!!FUtama.JenisPustaka1.Enabled!:=!(DM.User.Fields[2].AsString!=!'A')j! !!!!!!FUtama.Anggota1.Enabled!:=!(DM.User.Fields[2].AsString!=!'A')j! !!!!!!FUtama.Penerbit1.Enabled!:=!(DM.User.Fields[2].AsString!=!'A')j! !!!!!!FUtama.ShowModalj! !!!End!
!
43
Else! !!!!!!MessageDlg('Maaf!User!Name!atau!Password!Salah!!',mtError,[mbOk],0)j! !!!Edit1.Text!:=!''j! !!!Edit2.Text!:=!''j! Endj! 18.!Ketik!Program!pada!tombol!Batal!:! procedure!TForm1.Button2Click(Sender:!TObject)j! begin! !!Closej! endj! 19.!Simpan!Program!dengan!nama!FormLogin.pas! 20.!Jadikan!FLogin!sebagai!MainForm! 21.!Buatlah!Form!baru!dan!konfigurasi/setting!propertiesnya!sebagai!berikut!:! a.! Name!! :!FUtama! b.! Caption!! :!“.:Sistem!Informasi!Perpustakaan:.”! c.! Position!! :!poScreenCenter! 22.!Jadikan!Form!FUtama!menjadi!Main!Form! 23.!Pasang!MainMenu1!(Standard)!dan!buat!menu!sebagai!berikut!:! &File! &Transaksi! &Laporan! &Bantuan! &Buku! Pe&minjaman! Laporan!&Buku! &Pedoman! &Jenis!Pustaka! Pen&gembalian! Laporan!&Transaksi! P&rogrammer! &Penerbit! ! Laporan!&Anggota! ! &Anggota! ! ! ! X! ! ! ! &Selesai! ! ! ! 24.!Pasang! StatusBar1,! klik! kanan,! add! New! sebanyak! 3x,! kemudian! konfigurasi! masing! StatusPanel!Panel!keX0!dan!keX2!Width!=!150,!sedangkan!panel!keX1!Width!=!360!
! 25.!Ketikan!program!pada!Form!Event!onActive!:! procedure!TFUtama.FormActivate(Sender:!TObject)j! begin! !CurrencyString!!!!:=!''j! !CurrencyFormat!!!!:=!2j! !NegCurrFormat!!!!!:=!9j! !ThousandSeparator!:=!'.'j! !DecimalSeparator!!:=!','j! !CurrencyDecimals!!:=!0j! !ShortDateFormat!!!:=!'ddXmmXyy'j! 44
!LongDateFormat!!!!:=!'ddXmmXyyyy'j! !DateSeparator!!!!!:=!'X'j! !StatusBar1.Panels[0].Text!:=!'User!:!'+DM.User.Fields[0].AsStringj! !StatusBar1.Panels[1].Text!:=!'Program!Studi!Teknik!Informatika'j! endj! 26.!Selanjutnya!pasang!Timer1,!kemudian!ketik!perintah!berikut!:! procedure!TFUtama.Timer1Timer(Sender:!TObject)j! begin! !!StatusBar1.Panels[2].Text!:=!FormatDateTime('ddd,!dd!mmm!yyyy!!!hh:mm:ss',Now)j! endj! 27.!Kemudian!klik!menu!Arsip!|!Buku!kemudian!ketik!:! procedure!TFUtama.Buku1Click(Sender:!TObject)j! begin! !!FOlahBuku.ShowModalj! endj! 28.!Kemudian!klik!menu!Arsip!|!Jenis!Pustaka!kemudian!ketik!:! procedure!TFUtama.JenisPustaka1Click(Sender:!TObject)j! begin! !!FJenisPustaka.ShowModalj! endj! 29.!Kemudian!klik!menu!Arsip!|!Penerbit!kemudian!ketik!:! procedure!TFUtama.Penerbit1Click(Sender:!TObject)j! begin! !!FPenerbit.ShowModalj! endj! 30.!Kemudian!klik!menu!Arsip!|!Anggota!kemudian!ketik!:! procedure!TFUtama.Anggota1Click(Sender:!TObject)j! begin! !!FAnggotaPerpustakaan.ShowModalj! endj! 31.!Kemudian!klik!menu!Arsip!|!Ganti!Password!kemudian!ketik!:! procedure!TFUtama.GantiPassword1Click(Sender:!TObject)j! begin! !!If!DM.User.Fields[2].AsString!=!'A'!Then! !!!!!FUserAdmin.ShowModal! !!Else! !!!!!FGantiPassword.ShowModalj! endj! 32.!Kemudian!klik!menu!Arsip!|!Selesai!kemudian!ketik!:! procedure!TFUtama.Selesai1Click(Sender:!TObject)j! begin! !!Closej! endj! ! !
45
33.!Jalankan!program!tersebut!sehingga!muncul!tampilan!berikut!:!
! 34.!Coba!setiap!menu!yang!telah!diberikan!perintah!seperti!Arsip!|!Buku,!Arsip!|!Jenis!Pustaka,! Arsip!|!Anggota,!dan!Selesai,!laporkan!kejadiannya!!! 35.!Simpan!File!dan!berinama!:!FPerpustakaan.pas! 36.!CopyXkan!file!berikut!ke!Folder!program!perpustakaan!:!(Minta!kepada!Asisten!Lab.)! a.! vFW.dcu! b.! vFW.pas! c.! FCapturer.dfm! d.! FCapturer.pas! e.! FCapturer.dcu! f.! FCapturer.ddp!! 37.!Pilih! menu! Project! |! Add! To! Project! …! atau! Shift+F11,! kemudian! file! FCapturer! dan! vFw! dipilih!untuk!digabungkan!dengan!program!yang!telah!dibuat!seperti!gambar!berikut!:!
! 46
38.!Panggil!FAnggotaPerpustakaan!dengan!Shift+F12!
! 39.!Klik!Tombol!“Kamera”!dan!ketikan!program!berikut!:! procedure!TFAnggotaPerpustakaan.Button8Click(Sender:!TObject)j! begin! !!FormCapture.ShowModalj! !!If!FormCapture.ModalResult!=!mrOk!Then! !!!!!DBImage1.Picture!:=!FormCapture.Image1.Picturej! endj! 40.!Panggil!FOlahBuku!dengan!Shift+F12!
47
! 41.!Klik!Tombol!“Kamera”!dan!ketikan!program!berikut!:! procedure!TFOlahBuku.Button3Click(Sender:!TObject)j! begin! !!FormCapture.ShowModalj! If!FormCapture.ModalResult!=!mrOk!Then! !!!!!DBImage1.Picture!:=!FormCapture.Image1.Picturej! endj! 42.!Simpan!Semua!dengan!Shift+Ctrl+S! 43.!Jalankan! program,! kemudian! masuk! ke! Arsip! |! Anggota,! coba! klik! kamera! dimana! apabila! terdapat!Hardware!Camera!maka!akan!muncul!gambar!yang!dapat!di!Capture.!! ! ! ! !
48
Latihan!6! File!Master!dan!Query! ! Tujuan!:! 1.! Mengenal!cara!penggunaan!File!Master!untuk!mengkaitkan!2!buah!File! 2.! Membuat!Query! 3.! Menggunakan!Query!untuk!transaksi! ! Langkah!Praktikum!:! 1.! Buka!File!Project!perpustakaan.dpr! 2.! Buat!2!buah!tabel!beriku!dengan!database!desktop!:!
!
!
!
! Tabel!Transaksi!Field!NoTraksaksi!=!TranPinjam!Field!NoTransaksi! ! 49
! 3.! Kemudian! pilih! ke! Form! DM! (Shift+F12),! dan! pasang! 2! Table! dan! 2! Datasource! seperti! design!berikut!:!
4.! Konfigurasi!komponen!sebagai!berikut! Komponen! Properties! Nilai! Name! Transaksi! DatabaseName! Perpustakaan! Table1! TableName! Transaksi.db! Active! True! Name! dsTransaksi! Datasource1! DataSet! Transaksi! Name! TransPinjam! DatabaseName! Perpustakaan! TableName! TranPinjam.db! Table2! MasterSource! dsTransaksi! MasterField! NoTransaksi! Active! True! Name! dsTransPinjam! Datasource1! DataSet! TransPinjam!
!
Untuk MasterField Lihat Urutan Gambar Berikut !
50
Klik
K l i k
!
! Klik! OK,! Kemudian! Pilih! Table! TranPinjam! kemudian! klik! Kanan! Pilih! Field! Editor! kemudian! Ctrl+F,! kemudian! tekan! Ctrl+N! ikuti! seperti! gambar! dibawah! ini! lalu! tekan! tombol! “OK”! maka! akan! muncul! seperti! pada! gambar! disampingnya,! selanjutnya! drag! Judul! ke! atas! dibawah!NoBuku!sehingga!seperti!gambar!dibawahnya.
51
!
!
!
52
5.! Buat!sebuah!Form!Baru!kemudian!Design!sebagai!berikut!:! !
6.! Konfigurasi/setting!propertiesnya!sebagai!berikut!:! a.! Name!!! :!FTransPinjam! b.! BorderStyle! :!bsSizeable! c.! Caption!! :!“::Peminjaman!Buku::”! d.! Position!! :!poScreenCenter! 7.! Komponen!di!setting!sebagai!berikut!:! Komponen! Properties! Nilai! GroupBox1! Caption! Data!Transaksi! DataSource! dsTransaksi! dbEdit1! Field! NoTransaksi! DataSource! dsTransaksi! dbEdit2! Field! TglTransaksi! DataSource! dsTransaksi! Field! KodeAnggota! dbLookUpComboBox1! ListSource! dsAnggota! ListField! Nama! KeyField! NoAnggota! DataSource! dsTransaksi! dbEdit4! Field! NoTransaksi! Enable! False! Button1! Caption! &Baru! Button2! Caption! &Simpan! ! Enable! False! Button3! Caption! &Batal! ! Enable! False! GroupBox2! Caption! Transaksi!Peminjaman! dbControlGrid1! DataSource! DM.dsTransPinjam! DataSource! dsTranPinjam! dbEdit4! Field! NoBuku!
!
53
dbEdit5! dbMemo1!
Query1!
DataSource1!
DataSource! Field! DataSource! Field! ! DatabaseName! SQL! Active! DataSet! ! Caption! DataSource! DataSource! Field! DataSource! Field! DataSource! Field! Caption!
dsTranPinjam! TglKembali! dsTranPinjam! Judul! ! Perpustakaan! SELECT!NoBuku,!Judul,!Penulis,!Status! FROM!"Buku.DB"!Buku! WHERE!!Status!=!'A'!or!Status!=!'K'!! True! Query! ! Daftar!Buku!Yang!Dapat!Dipinjam! DataSource1! DataSource1! NoBuku! DataSource1! Penulis! DataSource1! Judul! &Tutup!
GroupBox3! dbControlGrid1! dbEdit6! ! dbEdit7! ! dbMemo2! ! Button4! ! 8.! Tulis!“Uses!DataModulj”!seperti!tampilan!berikut!:!
9.! Tulis!Program!pada!Tombol!“Baru”!:! procedure!TFTransPinjam.Button1Click(Sender:!TObject)j! begin! !!DM.Transaksi.Appendj! !!DM.Transaksi.Fields[0].AsString!:=!'P'+IntToStr(DM.Transaksi.RecordCount+1)j! !!DM.Transaksi.Fields[1].AsDateTime!:=!Now()j! !!DM.Transaksi.Fields[3].AsString!:=!'P'j! !!Button1.Enabled!:=!Falsej! !!Button2.Enabled!:=!Truej! !!Button3.Enabled!:=!Truej! endj! !
!
54
10.!Tulis!Program!pada!Tombol!“Simpan”!:! procedure!TFTransPinjam.Button2Click(Sender:!TObject)j! begin! !!If!DM.Transaksi.State!=!dsInsert!Then! !!!!!DM.Transaksi.Postj! !!Button1.Enabled!:=!Truej! !!Button2.Enabled!:=!Falsej! !!Button3.Enabled!:=!Falsej! endj! 11.!Tulis!Program!pada!Tombol!“Batal”!:! procedure!TFTransPinjam.Button3Click(Sender:!TObject)j! begin! !!If!DM.Transaksi.State!=!dsInsert!Then! !!!!!DM.Transaksi.Cancelj! !!Button1.Enabled!:=!Truej! !!Button2.Enabled!:=!Falsej! !!Button3.Enabled!:=!Falsej! endj! 12.!Tulis!Program!pada!Event!Form!OnActive!:! procedure!TFTransPinjam.FormActivate(Sender:!TObject)j! begin! !!DM.Transaksi.Filtered!:=!Falsej! !!DM.Transaksi.Filter!!!:=!'JenisTransaksi!=!'+QuotedStr('P')j! !!DM.Transaksi.Filtered!:=!Truej! !!DM.TranPinjam.Filtered!:=!Falsej! !!DM.TranPinjam.Filter!!!:=!'Status!=!'+QuotedStr('P')j! !!DM.TranPinjam.Filtered!:=!Truej! !!DM.Transaksi.Lastj! !!Button1Click(Sender)j! endj!! 13.!Tulis!program!dengan!menklik!dbControlGrid2,!sebagai!berikut!:! procedure!TFTransPinjam.DBCtrlGrid2Click(Sender:!TObject)j! begin! !!!DM.TranPinjam.Appendj! !!!DM.TranPinjam.FieldByName('NoBuku').AsString!:=!Query1.Fields[0].AsStringj! !!!DM.TranPinjam.FieldByName('TglKembali').AsDateTime!:=!Now()+7j! !!!If! MessageDlg('Apakah! Buku! '+Query1.Fields[0].AsString+'! Akan! Dipinjam! mtConfirmation,[mbYes,MbNo],0)!=!MrYes!Then! !!!Begin! !!!!!!If!DM.Buku.FindKey([Query1.Fields[0].AsString])!Then! !!!!!!Begin! !!!!!!!!DM.Buku.Editj! !!!!!!!!DM.BukuStatus.Value!:=!'P'j! !!!!!!!!DM.Buku.Postj! !!!!!!Endj! !!!!!!DM.TranPinjam.Postj! !!!End! !!!Else!
?',!
55
!!!!!!DM.TranPinjam.Cancelj! !!!Query1.Closej! !!!Query1.Openj! endj! 14.!Tulis!program!untuk!tombol!“Tutup”!sebagai!:! procedure!TFTransPinjam.Button4Click(Sender:!TObject)j! begin! !!Closej! endj! 15.!Simpan!dengan!nama!:!FTransaksiPinjam.pas! 16.!Pilih! Form! FUtama,! kemudian! klik! MainMenu! untuk! Transaksi! |! Peminjaman,! dan! tulis! program!berikut!:! begin! !!!FTransPinjam.ShowModalj! endj! 17.!Buat!sebuah!Form!Baru!kemudian!Design!sebagai!berikut!:!
! !
!
!
56
18.!Konfigurasi/setting!propertiesnya!sebagai!berikut!:! a.! Name!!! :!FTransKembali! b.! BorderStyle! :!bsSizeable! c.! Caption!! :!“::Transaksi!Pengembalian!Buku::”! d.! Position!! :!poScreenCenter! 19.!Komponen!di!setting!sebagai!berikut!:! Komponen! Properties! Nilai! GroupBox1! Caption! Data!Transaksi! DataSource! dsTransaksi! dbEdit1! Field! NoTransaksi! DataSource! dsTransaksi! dbEdit2! Field! TglTransaksi! DataSource! dsTransaksi! Field! KodeAnggota! dbLookUpComboBox1! ListSource! dsAnggota! ListField! Nama! KeyField! NoAnggota! DataSource! dsTransaksi! dbEdit4! Field! NoTransaksi! Enable! False! Button1! Caption! &Baru! Caption! &Simpan! Button2! Enable! False! Caption! &Batal! Button3! Enable! False! DatabaseName! Perpustakaan! SELECT!Anggota.Nama,!Transaksi.TglTransaksi,! Transaksi.NoTransaksi,!Transaksi.JenisTransaksi,! Tranpinjam.NoBuku,!Buku.Judul,!! !!!!!!!!!!!!!!Tranpinjam.TglKembali! FROM!"TranPinjam.DB"!Tranpinjam! !!!INNER!JOIN!"Transaksi.DB"!Transaksi! SQL! !!!ON!!(Tranpinjam.NoTransaksi!=!Transaksi.NoTransaksi)!!! !!!INNER!JOIN!"Buku.DB"!Buku! Query1! !!!ON!!(Buku.NoBuku!=!Tranpinjam.NoBuku)!!! !!!INNER!JOIN!"Anggota.DB"!Anggota! !!!ON!!(Anggota.NoAnggota!=!Transaksi.KodeAnggota)!!! WHERE!!Tranpinjam.Status!=!'P'!!!And! !!!!!!!!!!!!!!!!Anggota.Nama!Like!:Nama! 0!–!Nama! ! Params! DataType! ftString! Active! True! dbControlGrid1! DataSource! DataSource1! DataSource! DataSource1! dbEdit4! Field! NoBuku! DataSource! DataSource1! dbEdit5! Field! TglKembali! 57
dbMemo1!
Query2!
DataSource! Field! ! DatabaseName!
DataSource1! Judul! ! Perpustakaan!
SQL!
Update!!"TranPinjam.DB"!Tranpinjam! Set!Tranpinjam.Status!=!'K'! WHERE!!!(Tranpinjam.NoTransaksi!=!:NoTransaksi)!!! !!!AND!!(Tranpinjam.NoBuku!=!:NoBuku)!!!!
Params! !
!
0!–!NoTransaksi!
Datatype!:!ftString!
1!–!NoBuku!
Datatype!:!ftString!
!
! Gambar!Params!Query!A! !
!!
!! Gambar!Params!Query!B! ! ! ! 20.!Tulis!“Uses!DataModulj”!seperti!tampilan!berikut!:!
!
58
! 21.!Tulis!Program!pada!Tombol!“Baru”!:! procedure!TFTransPinjam.Button1Click(Sender:!TObject)j! begin! !!DM.Transaksi.Appendj! !!DM.Transaksi.Fields[0].AsString!:=!'P'+IntToStr(DM.Transaksi.RecordCount+1)j! !!DM.Transaksi.Fields[1].AsDateTime!:=!Now()j! !!DM.Transaksi.Fields[3].AsString!:=!'P'j! !!Button1.Enabled!:=!Falsej! !!Button2.Enabled!:=!Truej! !!Button3.Enabled!:=!Truej! endj! 22.!Tulis!Program!pada!Tombol!“Simpan”!:! procedure!TFTransPinjam.Button2Click(Sender:!TObject)j! begin! !!If!DM.Transaksi.State!=!dsInsert!Then! !!!!!DM.Transaksi.Postj! !!Button1.Enabled!:=!Truej! !!Button2.Enabled!:=!Falsej! !!Button3.Enabled!:=!Falsej! endj! 23.!Tulis!Program!pada!Tombol!“Batal”!:! procedure!TFTransPinjam.Button3Click(Sender:!TObject)j! begin! !!If!DM.Transaksi.State!=!dsInsert!Then! !!!!!DM.Transaksi.Cancelj! !!Button1.Enabled!:=!Truej! !!Button2.Enabled!:=!Falsej! !!Button3.Enabled!:=!Falsej! endj! ! !
59
24.!Tulis!Program!pada!Form!onActive!:! procedure!TFTransKembali.FormActivate(Sender:!TObject)j! begin! !!DM.Transaksi.Filtered!:=!Falsej! !!DM.Transaksi.Filter!!!:=!'JenisTransaksi!=!'+QuotedStr('K')j! !!DM.Transaksi.Filtered!:=!Truej! !!DM.Transaksi.Lastj! !!Button1Click(Sender)j! endj! 25.!Tulis!Program!pada!dbLookUpComboBox1!:! procedure!TFTransKembali.DBLookupComboBox1Click(Sender:!TObject)j! begin! !!Query1.Closej! !!Query1.Preparej! !!Query1.Params[0].AsString!:=!DBLookupComboBox1.Textj! !!Query1.Openj! endj! 26.!Tulis!Program!dengan!mengklik!dbControlGrid1!:! procedure!TFTransKembali.DBCtrlGrid1Click(Sender:!TObject)j! begin! !!If! MessageDlg('Apakah! Buku! '+Query1.Fields[4].AsString+'! Akan! ?',mtConfirmation,[mbYes,MbNo],0)!=!MrYes!Then! !!Begin! !!{Update!Data}! !!Query2.Closej! !!Query2.Preparej! !!Query2.Params[0].AsString!:=!Query1NoTransaksi.Valuej! !!Query2.Params[1].AsString!:=!Query1NoBuku.Valuej! !!Query2.ExecSQLj! !!{Rubah!status!buku}! !!If!DM.Buku.FindKey([Query1NoBuku.Value])!Then! !!Begin! !!!!DM.Buku.Editj! !!!!DM.BukuStatus.Value!:=!'K'j! !!!!DM.Buku.Postj! !!Endj! !!Endj! !!{Tampilkan!Data!buku!yang!masih!dipinjam}! !!Query1.Closej! !!Query1.Preparej! !!Query1.Params[0].AsString!:=!DBLookupComboBox1.Textj! !!Query1.Openj! endj! 27.!Tulis!program!untuk!Tombol!“Tutup”!:! procedure!TFTransKembali.Button4Click(Sender:!TObject)j! begin! !!Closej! endj!
Dikembalikan!
60
28.!Simpan!dengan!nama!file!:!FTransaksiKembali.pas! 29.!Pilih! FUtama! dengan! Shift+F12! kemudian! pada! main! menu! Transaksi! |! Pengembalian! klik! dan!tulis!program!:! procedure!TFUtama.Pengembalian1Click(Sender:!TObject)j! begin! !!FTransKembali.ShowModalj! endj! 30.!Simpan!program,!jadikan!FLogin!sebagai!Form!Utama!dan!jalankan! ! !
61