Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam...

26
Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom MEMBUAT FORM TRANSAKSI PERSEWAAN VCD 1. Buatlah desain seperti gambar berikut ini. Desain kali ini sedikit lebih rumit karena didalamnya kita akan menggunakan dua buah Panel, yang masing-masing panel mewakili satu tabel, yang diletakkan pada halaman pertama Page Control : 2. Ubahlah properties untuk desain form diatas : Componen Pallete Object Inspector Tab Object Properties Keterangan Win32 Page Control TabSheet1, Caption I&nput dan Edit Sewa TabSheet2, Caption &Lihat Data Persewaan DateTimePicker1 Name DtpTglSewa Standard Edit Name EdNoSewa Button1 Name BtCek Caption &Cek Button2 Name BtInputPLG Caption Input P&elanggan Button3 Name BtBatal2 Caption Bata&l Button4 Name BtTambahVCD Caption Tambah VCD

Transcript of Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam...

Page 1: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

MEMBUAT FORM TRANSAKSI PERSEWAAN VCD

1. Buatlah desain seperti gambar berikut ini. Desain kali ini sedikit lebih rumit karena didalamnya kita akan menggunakan dua buah Panel, yang masing-masing panel mewakili satu tabel, yang diletakkan pada halaman pertama Page Control :

2. Ubahlah properties untuk desain form diatas :

Componen Pallete Object Inspector Tab Object Properties Keterangan

Win32 Page Control TabSheet1, Caption I&nput dan Edit Sewa

TabSheet2, Caption &Lihat Data Persewaan DateTimePicker1 Name DtpTglSewa

Standard

Edit Name EdNoSewa

Button1 Name BtCek Caption &Cek

Button2 Name BtInputPLG Caption Input P&elanggan

Button3 Name BtBatal2 Caption Bata&l

Button4 Name BtTambahVCD Caption Tambah VCD

Page 2: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

Button5 Name BtHapusDaftar Caption Hapus Dari Daftar

Button6 Name BtTambah Caption &Tambah

Button7 Name BtEdit Caption &Edit

Button8 Name BtSimpan Caption &Simpan

Button9 Name BtBatal Caption &Batal

Button10 Name BtKeluar Caption &Keluar

ListBox1 Name LstKode ListBox2 Name LstJudul ListBox3 Name LstJenis

Additional

StaticText1 Name StKodePlg BorderStyle SbsSunken AutoSize False

StaticText2 Name StNamaPLG BorderStyle SbsSunken AutoSize False

StaticText3 Name StAlamatPLG BorderStyle SbsSunken AutoSize False

StaticText4 Name StStatus BorderStyle SbsSunken AutoSize False

StaticText5 Name StTotal BorderStyle SbsSunken AutoSize False

StaticText6 Name StJMLVCD BorderStyle SbsSunken AutoSize False

StaticText7 Name StTarif BorderStyle SbsSunken AutoSize False

StaticText8 Name StLamaSewa BorderStyle SbsSunken AutoSize False

BDE Table1

DatabaseName RentalVCD Name tVCD TableName VCD.db AutoRefresh True Active True

Table2 DatabaseName RentalVCD

Page 3: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

Name tPelanggan TableName Pelanggan.db AutoRefresh True Active True

Table3

DatabaseName RentalVCD Name tTarif TableName Bantu.db AutoRefresh True Active True

Table4

DatabaseName RentalVCD Name tSewa TableName Persewaan.db AutoRefresh True Active True

Table5

DatabaseName RentalVCD Name tVCD2 TableName VCD.db AutoRefresh True Active True

Table6

DatabaseName RentalVCD Name tPelanggan2 TableName Pelanggan.db AutoRefresh True Active True

DataAccess

DataSource DataSet tVCD Name DsVCD

DataSource DataSet tPelanggan Name DsPelanggan

DataSource DataSet tSewa Name DsSewa

3. Berikutnya masukan Panel ke Dalam PageControl pada halaman 1 untuk membuat

desain tampilan tabel pelanggan seperti dibawah ini :

Page 4: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

4. Rubah Propertiesnya :

Componen Pallete Object Inspector Tab Object Properties Keterangan

Standard

Panel Name PnPelanggan Caption (Kosongi)

Edit Name EdCariNama Text (Kosongi)

Button1 Name BtBatal3 Caption B&atal

Additional StaticText Caption

Double Klick Untuk Memasukan Data Pelanggan

BorderStyle sbsSunken Auto Size False

DataControl DBGrid DataSource DsPelanggan

Win32 Animate Name AnmPelanggan CommonAVI aviFindFile

Panel Edit Button

DBGrid Animate StaticText

Page 5: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

Active False 5. Berikutnya buat sub desain form yang kedua, yang masih berada pada halaman1

PageControl. Sebagai berikut :

6. Atur Propertiesnya :

Componen Pallete Object Inspector Tab Object Properties Keterangan

Standard

Panel Name PnVCD Caption (Kosongi)

Edit Name EdCariJudul Text (Kosongi)

Button1 Name BtBatal4 Caption Batal

Additional StaticText Caption Double Klick Untuk

Memasukan Data VCD BorderStyle sbsSunken Auto Size False

Panel Edit Button

Animate StaticText DBGrid

Page 6: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

DataControl DBGrid DataSource DsVCD

Win32 Animate Name AnmVCD CommonAVI aviFindFile Active False

7. Selanjutnya Desain PageControl Halaman ke 2 sebagai berikut :

8. Atur Propertiesnya :

Componen Pallete Object Inspector Tab Object Properties Keterangan

Standard

Edit Name EdCari

Button1 Name BtHapus1 Caption Hap&us Satu

Button2 Name BtHapusBanyak Caption Hapus / Transaksi

RadioGroup Name RgCari

Items Nomor Sewa

Tanggal Sewa Kode Pelanggan

DBGrid

StaticText1 StaticText2

StaticText3 StaticText4

DBNavigator

RadioGroup

Edit DateTimePicker

Button1 Button2

Page 7: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

Kode VCD Caption Pencarian Data

Win32 DateTimePicker Name DtpCari Visible False

Additional

StaticText1 Name StCariNama BorderStyle sbsSunken

StaticText2 Name StCariAlamat BorderStyle sbsSunken

StaticText3 Name StCariJudul BorderStyle sbsSunken

StaticText4 Name StCariJenis BorderStyle sbsSunken

DataControl DBGrid DataSource DsSewa DBNavigator DataSource DsSewa

VisibleButtons [nbFirst, nbPrior, nbNext, nbLast]

9. Deklarasikan beberapa procedure berikut ini :

….. procedure SeleksiItem(Lst:TListBox); procedure BuatNoSewa; procedure AktifkanKode; procedure Aktifkan; procedure CariKeterangan; …..

10. Deklarasikan beberapa Variabel Global, sbb : ….. var FrmSewa: TFrmSewa; Konfirmasi:Integer; Edit, Ketemu:Boolean; Nomor:String[10];

11. Buat kode program untuk procedure SeleksiItem :

Procedure TFrmSewa.SeleksiItem(Lst:TListBox); begin LstKode.ItemIndex:=Lst.ItemIndex; LstJudul.ItemIndex:=Lst.ItemIndex; LstJenis.ItemIndex:=Lst.ItemIndex; end;

Page 8: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

//Double Klick LstKode procedure TFrmSewa.LstKodeClick(Sender: TObject); begin SeleksiItem(LstKode); end; //Double Klick LstJudul procedure TFrmSewa.LstJudulClick(Sender: TObject); begin SeleksiItem(LstJudul); end; //Double Klick LstJenis procedure TFrmSewa.LstJenisClick(Sender: TObject); begin SeleksiItem(LstJenis); end;

12. Buat kode program untuk membuat Nomor Sewa yang akan dibuat dengan format : ttmm.99999 tt : untuk menampung 2 digit tahun terakhir mm : untuk menampung 2 digit angka bulan 99999 : untuk menampung urutan data yang disesuaikan atau dilengkapi dengan angka 0 Procedure TFrmSewa.BuatNoSewa; var Tanggal, Hasil, NSewa:String[10]; Th, Bl :String[2]; NilaiU:String[5]; i, n:Integer; begin Tanggal:=FormatDateTime('dd/mm/yyyy',date); //ambil tahun for i:=9 to 10 do begin Th:=Th+Tanggal[i]; end; //ambil bulan for i:=4 to 5 do begin Bl:=Bl+Tanggal[i]; end; //buat nilai urutan

Page 9: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

if tSewa.RecordCount=0 then n:=1 else begin tSewa.IndexName:='IdxNoSewa'; tSewa.Last; NSewa:=tSewa['NoSewa']; //ambil dari kanan sebanyak 5 karakter for i:=6 to 10 do begin NilaiU:=NilaiU+NSewa[i]; end; n:=StrToInt(NilaiU)+1; end; //gabung hasil pembuatan NoSewa case Length(trim(IntToStr(n))) of 1: Hasil:=Th+bl+'.'+'0000'+Trim(IntToStr(n)); 2: Hasil:=Th+bl+'.'+'000'+Trim(IntToStr(n)); 3: Hasil:=Th+bl+'.'+'00'+Trim(IntToStr(n)); 4: Hasil:=Th+bl+'.'+'0'+Trim(IntToStr(n)); 5: Hasil:=Th+bl+'.'+Trim(IntToStr(n)); end; EdNoSewa.Text:=Hasil; EdNoSewa.SelStart:=length(trim(Hasil)); end;

13. Buat kode program untuk mengaktifkan komponen-komponen yang ada : procedure TFrmSewa.AktifkanKode; begin BtCek.Enabled:=True; BtCek.Default:=True; BtTambah.Enabled:=False; BtEdit.Enabled:=False; BtBatal.Enabled:=True; EdNoSewa.Enabled:=True; EdNoSewa.Color:=clWhite; if Edit=False then BuatNoSewa; EdNoSewa.SetFocus; end;

14. Buat kode program untuk procedure aktifkan :

Page 10: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

procedure TFrmSewa.Aktifkan; var Lama:Integer; begin If Edit=False then EdNoSewa.Enabled:=False; LstKode.Clear; LstJudul.Clear; LstJenis.Clear; LstKode.Enabled:=True; LstJudul.Enabled:=True; LstJenis.Enabled:=True; LstKode.Color:=clWhite; LstJudul.Color:=clWhite; LstJenis.Color:=clWhite; //atur tombol BtCek.Enabled:=False; BtCek.Default:=False; BtInputPlg.Enabled:=True; BtBAtal2.Enabled:=True; BtTambahVCD.Enabled:=True; BtHapusdaftar.Enabled:=True; BtSimpan.Enabled:=True; //Tampilkan tarif sewa Ketemu:=tTarif.FindKey(['S']); if Ketemu=True then StTarif.Caption:=tTarif['Nilai'] else StTarif.Caption:='0'; //tampilkan tanggal DtpTglSewa.Enabled:=True; DtpTglSewa.Color:=clWhite; DtpTglSewa.Date:=Date; //cari ketetetapan lama sewa berdasarkan tabel bantu tTarif.IndexName:=''; Ketemu:=tTarif.FindKey(['L']); if Ketemu=True then lama:=tTArif['Nilai'] else lama:=0; StLamaSewa.Caption:=IntToStr(Lama); end; 15. Buat kode program untuk procedure CariKeterangan :

procedure TFrmSewa.CariKeterangan; begin if tSewa.RecordCount=0 then

Page 11: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

begin StcariNama.Caption:=''; StCariAlamat.Caption:=''; StCariJudul.Caption:=''; StCariJenis.Caption:=''; end else begin //cari keterangan pelanggan tPelanggan2.IndexName:=''; Ketemu:=tPelanggan2.FindKey([tSewa['KodePLG']]); if Ketemu=True then begin StcariNama.Caption:=tPelanggan2['Nama']; StCariAlamat.Caption:=tPelanggan2['Alamat']; end else begin StcariNama.Caption:='KodePLG tidak ada...'; StCariAlamat.Caption:='Data hilang...'; end; //cari keterangan VCD tVCD2.IndexName:=''; Ketemu:=tVCD2.FindKey([tSewa['KodeVCD']]); if Ketemu=True then begin StCariJudul.Caption:=tVCD2['Judul_Film']; if tVCD2['Jenis']='A' then StCariJenis.Caption:='ACTION' else if tVCD2['Jenis']='H' then StCariJenis.Caption:='HOROR' else if tVCD2['Jenis']='K' then StCariJenis.Caption:='KOMEDI' else if tVCD2['Jenis']='D' then StCariJenis.Caption:='DRAMA' else if tVCD2['Jenis']='N' then StCariJenis.Caption:='ANAK-ANAK' else if tVCD2['Jenis']='V' then StCariJenis.Caption:='VIDEO KLIP' else if tVCD2['Jenis']='M' then StCariJenis.Caption:='FILM MANDARIN' else StCariJenis.Caption:='FILM DOKUMENTER'; end else begin StCariJudul.Caption:='Kode VCD tidak ada...';

Page 12: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

StCariJenis.Caption:='Data hilang...'; end; end; end; 16. Buat kode program untuk tombol Batal pada event OnClick :

procedure TFrmSewa.BtBatalClick(Sender: TObject); begin EdNoSewa.Text:=''; EdNoSewa.Enabled:=False; DtpTglSewa.Enabled:=False; EdNoSewa.Color:=clBtnFace; DtpTglSewa.Color:=clBtnFace; StKodePlg.Caption:=''; StNamaPlg.Caption:=''; StAlamatPLG.Caption:=''; StLamaSewa.Caption:=''; StTarif.Caption:=''; StJMLVCD.Caption:=''; StTotal.Caption:=''; StStatus.Caption:=''; LstKode.Clear; LstJudul.Clear; LstJenis.Clear; LstKode.Enabled:=False; LstJudul.Enabled:=False; LstJenis.Enabled:=False; LstKode.Color:=clBtnface; LstJudul.Color:=clBtnface; LstJenis.Color:=clBtnface; //onaktifkan frame VCD dan pelanggan jika aktif BtBatal3Click(sender); BtBatal4Click(sender); //atur tombol BtCek.Enabled:=False; BtCek.Default:=False; BtTambah.Enabled:=True; BtEdit.Enabled:=True; BtSimpan.Enabled:=False; BtBatal.Enabled:=False; BtINputPlg.Enabled:=False; BtBatal2.Enabled:=False; BtTambahVCD.Enabled:=False; BtHapusDaftar.Enabled:=False; end;

Page 13: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

17. Buat kode program untuk memanggil kembali kode program dalam tombol batal pada

event onCreate dalam form melalui object inspector :

procedure TFrmSewa.FormCreate(Sender: TObject); begin BtBatalClick(Sender); Dbgrid2.Columns.RebuildColumns; end;

18. Buat kode program untuk tombol Tambah : procedure TFrmSewa.BtTambahClick(Sender: TObject); begin Edit:=False; AktifkanKode; StStatus.Caption:='Tambah Data'; end;

19. Buat kode program untuk tombol Edit : procedure TFrmSewa.BtEditClick(Sender: TObject); begin Edit:=True; AktifkanKode; StStatus.Caption:='Edit Data'; end;

20. Buat kode program untuk mengecek Nomor Sewa yang ada pada komponen Edit pada tombol Cek :

procedure TFrmSewa.BtCekClick(Sender: TObject); begin if Length(Trim(EdNoSewa.Text))=0 then begin Application.MessageBox('No. Sewa masih kosong...','Cek Input',MB_IconStop); EdNoSewa.SetFocus; end else begin //set index tabel pada kunci utama tSewa.IndexName:='IdxNoSewa'; //cari data

Page 14: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

Ketemu:=tSewa.FindKey([Trim(EdNoSewa.Text)]); if Ketemu=True then //jika data ketemu //cek dulu edit atau tambah begin if Edit=True then //jika edit, tampilkan datanya begin Aktifkan; Nomor:=tSewa['NoSewa']; //digunakan untuk pengeditan //tampilkan detail //cetak data yang sama terlebih dahulu DtpTglSewa.Date:=tSewa['TglSewa']; StLamaSewa.Caption:=tSewa['LamaSewa']; StKodePLG.Caption:=tSewa['KodePLG']; StTarif.Caption:=tSewa['TarifSewa']; //masukan data pelanggan Ketemu:=tPelanggan.FindKey([tSewa['KodePLG']]); if ketemu=True then begin StNamaPlg.Caption:=tPelanggan['Nama']; StAlamatPlg.Caption:=tPelanggan['Alamat']; end else begin StNamaPlg.Caption:=tPelanggan['Kode pelanggan tidak ada...']; StAlamatPlg.Caption:=tPelanggan['Data hilang...']; end; //masukan kode VCD ke dalam daftar //gunakan perulangan Ketemu:=False; while tSewa['NoSewa']=trim(EdNoSewa.Text) do begin LstKode.Items.Append(tSewa['KodeVCD']); //masukan data VCD kedalam tdaftar film Ketemu:=tVCD.FindKey([tSewa['KodeVCD']]); if Ketemu=True then begin LstJudul.Items.Append(tVCD['Judul_Film']); LstJenis.Items.Append(tVCD['Jenis']); //karena dalam perulangan harus dikembalikan ke false Ketemu:=False; end

Page 15: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

else begin LstJudul.Items.Append('Kode VCD tidak ada...'); LstJenis.Items.Append(tVCD['Data hilang...']); end; tSewa.Next; if tSewa.Eof then begin //tampilkan jumlah VCD StJMLVCD.Caption:=IntToStr(LstKode.Items.Count); //hitung biaya StTotal.Caption:=FloatToStr(LstKode.Items.Count * tSewa['TarifSewa']); exit; end; end; //tampilkan jumlah VCD StJMLVCD.Caption:=IntToStr(LstKode.Items.Count); //hitung biaya StTotal.Caption:=FloatToStr(LstKode.Items.Count * tSewa['TarifSewa']); end else begin //jika tambah aktifkan beri pesan Nosewa sudah ada application.MessageBox('No. Sewa sudah ada...','Cek Data',MB_IconInformation); EdNoSewa.Text:=''; EdNoSewa.SetFocus; end; end else //jika data tidak ketemu //cek dulu edit atau tambah begin if Edit=True then begin //beri pesan NoSewa tidak ada application.MessageBox('No. Sewa tidak ada...','Cek Data',MB_IconInformation); EdNoSewa.Text:=''; EdNoSewa.SetFocus; end

Page 16: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

else //aktifkan objek input Aktifkan; end end; end;

21. Buat kode program pada tombol input pelanggan yang berfungsi untuk memunculkan komponen Panel yang didalamnya terdapat tabel pelanggan atau data member yang sebelumnya sudah dibuat desainnya dalam PageControl halaman 1 :

procedure TFrmSewa.BtInputPLGClick(Sender: TObject); begin BtInputPLG.Enabled:=False; BtBatal2.Enabled:=False; pnPelanggan.Visible:=True; //atur posisi panel pelanggan //supaya berada pada pojok kanan atas PnPelanggan.Left:=PnSewa.Width - PnPelanggan.Width; PnPelanggan.Top:=PnSewa.Top; EdCariNama.Text:=''; EdCariNama.SetFocus; //aktifkan animasi cari AnmPelanggan.Active:=True; //refresh tabel tPelanggan.Active:=True; end;

22. Setelah muncul panel Pelanggan, buat kode program untuk menutup panel tersebut, melalui tombol Batal dalam komponen Panel untuk tabel pelanggan :

procedure TFrmSewa.BtBatal3Click(Sender: TObject); begin PnPelanggan.Visible:=False; BtInputPLG.Enabled:=True; BtBatal2.Enabled:=True; //menonaktifkan animasi find file Anmpelanggan.Active:=False; end;

23. Untuk proses memasukan data pelanggan ke dalam form, dilakukan dengan mengklik dua kali pada komponen DBGrid. Untuk itu masukan kode program berikut ini, pada event OnDBClick pada DBGrid melalui Object Inspector :

procedure TFrmSewa.DBGrid1DblClick(Sender: TObject); begin //kirim data dari tabel ke form transaksi

Page 17: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

StKodePlg.Caption:=tPelanggan['KodePlg']; StNamaPlg.Caption:=tPelanggan['Nama']; StAlamatPlg.Caption:=tPelanggan['Alamat']; //tutup kembali tabel pelanggan BtBatal3Click(Sender); end;

24. Setelah memasukan data ke dalam form, ada kalanya data yang dimasukan user ke dalam form salah. Untuk mengatasinya, terlebih dahulu data yang salah yang masuk ke dalam form kita hapus, kemudian proses input data pelanggan bisa diulangi lagi dari awal. Kode program berikut ini berfungsi untuk membersihkan tulisan pada komponen StaticTetx data pelanggan :

procedure TFrmSewa.BtBatal2Click(Sender: TObject); begin stKodePLG.Caption:=''; StNamaPLG.Caption:=''; StAlamatPLG.Caption:=''; end;

25. Dalam komponen Panel pada Tabel pelanggan juga dilengkapi dengan Fasilitas untuk mencari nama pelanggan melalui komponen Edit. Buat kode program untuk mencari data pelanggan berdasarkan nama :

procedure TFrmSewa.EdCariNamaChange(Sender: TObject); begin if length(trim(EDCariNama.Text))=0 then exit else begin tPelanggan.IndexName:='IdxNama'; tPelanggan.FindNearest([trim(EDCariNama.Text)]); end; end;

26. Buat kode program untuk Tombol Tambah VCD, untuk memunculkan panel VCD yang berfungsi untuk memunculkan Panel yang berisi tabel VCD ke dalam Form :

procedure TFrmSewa.BtTambahVCDClick(Sender: TObject); begin BtTambahVCD.Enabled:=False; BtHapusDaftar.Enabled:=False; PnVCD.Visible:=True; //atur posisi panel VCD //supaya berada pada pojok kiri data VCD PnVCD.Left:=GbVCD.Left;

Page 18: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

PnVCD.Top:=GbVCD.Top; EdCariJudul.Text:=''; EdCariJudul.SetFocus; //aktifkan animasi cari AnmVCD.Active:=True; //refresh tabel tVCD.Active:=True; end;

27. Buat kode program untuk memasukan data VCD ke dalam Form, pada event OnDBclick DBGrid yang ada pada panel VCD melalui Objek Inspector :

procedure TFrmSewa.DBGrid3DblClick(Sender: TObject); var J:integer; Cocok:Boolean; begin //CEK DULU APAKAH ADA YANG SAMA ATAU TIDAK Cocok:=false; for j:=0 to lstkode.Items.Count-1 do begin if tVCD['KodeVCD']=LstKode.Items.Strings[J] then Cocok:=True; end; if Cocok=True then Application.MessageBox('Data VCD sudah pernah dimasukan...','Cek data',MB_IconInformation) else begin //cek dulu persediaan VCD if tvcd['JML_Persediaan']<=0 then application.MessageBox('Persediaan habis...','Cek Perseiaan',MB_IconStop) else begin //kirim data dari tabel ke form transaksi LstKode.Items.Append(tVCD['KodeVCD']); LstJudul.Items.Append(tVCD['Judul_Film']); LstJenis.Items.Append(tVCD['Jenis']); //sleksi data yang baru dimasukan LstKode.ItemIndex:=LstKode.Items.Count-1; LstKode.Selected[LstKode.Items.Count-1]; seleksiItem(LstKode); //tutup kembali tabel VCD BtBatal4Click(Sender); //tampilkan jumlah VCD yang dipinjam StJMLVCD.Caption:=IntToStr(LstKode.Items.Count);

Page 19: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

//Tampilkan total bayar StTotal.Caption:=FloatToStr(StrToFloat(StJMLVCD.Captio

n)*StrToFloat(StTarif.Caption)); end; end; end;

28. Buat kode program untuk menghapus daftar VCD ke dalam daftar VCD yang ditampung dalam ListBox :

procedure TFrmSewa.BtHapusDaftarClick(Sender: TObject); begin if LstKode.Items.Count=0 then application.MessageBox('Daftar VCD kosong...','Akses Ditolak',MB_IconStop) else begin Konfirmasi:=application.MessageBox('Anda yakin...','Konfirmasi Hapus', MB_IconQuestion Or MB_YesNO); if Konfirmasi=IdYes Then begin LstKode.DeleteSelected; LstJudul.DeleteSelected; LstJenis.DeleteSelected; end; if Lstkode.Items.Count=0 then exit else begin LstKode.ItemIndex:=LstKode.Items.Count-1; SeleksiItem(LstKode); end; end; end;

29. Buat kode program untuk menyimpan data transaksi persewaan VCD pada tombol Simpan dalam event OnClick :

procedure TFrmSewa.BtSimpanClick(Sender: TObject); var i, JDaftar:Integer; //buat precedure di dalam procedure Procedure KurangiPersediaan(KVCD:String); begin tVCD.IndexName:=''; Ketemu:=tVCD.FindKey([KVCD]); if Ketemu=True then

Page 20: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

begin if tVCD['JML_Persediaan']<=0 then exit else begin tVCD.Edit; tVCD['JML_Persediaan']:=tVCD['JML_Persediaan']-1; tVCD.Post; tVCD.Refresh; end; end else exit; end; begin //Cek input user if Length(Trim(StKodeplg.Caption))=0 then begin Application.MessageBox('Data pelanggan belum diisi !','Cek data',MB_IconStop); btInputPlg.SetFocus; Exit; end else if LstKode.Items.Count=0 then begin Application.MessageBox('Data VCD belum diisi !','Cek data',MB_IconStop); BtTambahVCD.SetFocus; Exit; end; //jika sudah penuh semua, dapat disimpan //cek dulu simpan tambah atau edit if Edit=False then begin Jdaftar:=LstKode.Count-1; for i:=0 to JDaftar do begin LstKode.ItemIndex:=i; tSewa.Append; tSewa['NoSewa']:=EdNoSewa.Text; tSewa['TglSewa']:=DtpTglSewa.Date; tSewa['LamaSewa']:=StLamaSewa.Caption; tSewa['KodePLG']:=StKodePLG.Caption; tSewa['KodeVCD']:=LstKode.Items.Strings[i]; tSewa['TarifSewa']:=StTarif.Caption; tSewa.Post; KurangiPersediaan(LstKode.Items.Strings[i]);

Page 21: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

end; tSewa.Refresh; end else begin Jdaftar:=LstKode.Count-1; //untuk berulangan //hapus dulu yang tidak ada dalam daftar tSewa.IndexName:='IdxNoSewa'; Ketemu:=tSewa.FindKey([Nomor]); if Ketemu=True then //jika ketemu lanjutkan begin while tSewa['NoSewa']=Nomor do begin for i:=0 to JDaftar do begin if tSewa['KodeVCD']<>LstKode.Items.Strings[i] then begin //edit persediaan tVCD.IndexName:=''; Ketemu:=tVCD.FindKey([tSewa['KodeVCD']]); if Ketemu=True then begin tVCD.Edit; tVCD['JML_Persediaan']:=tVCD['JML_Persediaan']+1; tVCD.Post; tVCD.Refresh; end; //lanjutkan proses hapus tsewa.Delete; end; end; tSewa.Next; if tSewa.Eof then tSewa.First; end;//akhir penghapusan tsewa.Refresh; end else //jika tidak ketemu data berarti hilang begin application.MessageBox('Data hilang...','Cek Data',MB_IconStop); Exit; end; //simpan Edit

Page 22: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

for i:=0 to JDaftar do begin //cari dulu data yang akan diedit Ketemu:=False; tSewa.IndexName:='IdxSewa'; //index dengan 2 kunci Ketemu:=tSewa.FindKey([Nomor, LstKode.Items.Strings[i]]); if Ketemu=True then tSewa.Edit else begin tsewa.Append; //jika tidak ketemu berarti ada data baru KurangiPersediaan(LstKode.Items.Strings[i]); end; //Simpan detail tSewa['NoSewa']:=EdNoSewa.Text; tSewa['TglSewa']:=DtpTglSewa.Date; tSewa['LamaSewa']:=StLamaSewa.Caption; tSewa['KodePLG']:=StKodePLG.Caption; tSewa['KodeVCD']:=LstKode.Items.Strings[i]; tSewa['TarifSewa']:=StTarif.Caption; tSewa.Post; end; tSewa.Refresh; end; BtBatalClick(Sender); //setelah selesai bersihkan end;

Selanjutnya kita akan membuat kode program untuk PageControl pada halaman 2 :

30. Buat kode program untuk memilih pencarian data dalam RadioGroup :

procedure TFrmSewa.RgCariClick(Sender: TObject); begin Case RgCari.ItemIndex Of 0: tSewa.IndexName:='IdxNoSewa'; 1: begin tSewa.IndexName:='IdxTglSewa'; EdCari.Visible:=False; DtpCari.Visible:=True; DtpCari.Date:=Date; DtpCari.SetFocus; Exit; end; 2: tSewa.IndexName:='IdxKodePlg'; 3: tSewa.IndexName:='IdxKodeVCD';

Page 23: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

end; DtpCari.Visible:=False; EdCari.Visible:=True; EdCari.Text:=''; EdCari.SetFocus; end;

31. Buat kode program untuk komponen Edit yang akan digunakan untuk mencari data pada event OnChange :

procedure TFrmSewa.EdCariChange(Sender: TObject); begin if length(Trim(EdCari.Text))=0 then exit else begin if tSewa.RecordCount=0 then application.MessageBox('Tabel kosong...','Cek Data',MB_IconExclamation) else begin Case RgCari.ItemIndex Of 0: tSewa.IndexName:='IdxNoSewa'; 2: tSewa.IndexName:='IdxKodePlg'; 3: tSewa.IndexName:='IdxKodeVCD'; end; tSewa.FindNearest([EdCari.Text]); end; end; end;

32. Buat kode program untuk DateTimePicker yang berguna untuk mencari data berdasarkan tanggal sewa pada event OnChange :

procedure TFrmSewa.DtpCariChange(Sender: TObject); begin if tSewa.RecordCount=0 then application.MessageBox('Tabel kosong...','Cek Data',MB_IconExclamation) else begin tSewa.IndexName:='IdxTglSewa'; tSewa.FindNearest([DtpCari.Date]); end; end;

33. Buat kode progam untuk DBGrid dan DBNavigator :

Page 24: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

procedure TFrmSewa.DBGrid2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin CariKeterangan; end; procedure TFrmSewa.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn); begin CariKeterangan; end; procedure TFrmSewa.DBGrid2KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin CariKeterangan; end; procedure TFrmSewa.DBGrid2KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin CariKeterangan; end;

34. Buat kode program untuk Tombol Hapus Satu :

procedure TFrmSewa.BtHapus1Click(Sender: TObject); begin if tSewa.RecordCount=0 then application.MessageBox('Tabel kosong...','Cek Tabel',MB_IconExclamation) else begin Konfirmasi:=application.MessageBox('Anda yakin, menghapus record yang aktif?', 'Konfirmasi',MB_IconQuestion or MB_YesNo); if Konfirmasi=IdYes then tsewa.Delete; tSewa.Refresh; CariKeterangan; end; end; 35. Buat kode program untuk Tombol Hapus Banyak :

Page 25: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

procedure TFrmSewa.BtHapusBAnyakClick(Sender: TObject); var HapNoSewa:String[10]; begin if tSewa.RecordCount=0 then application.MessageBox('Tabel kosong...','Cek tabel',MB_IconExclamation) else begin HapNoSewa:=InputBox('Input Hapus','Masukan Nomor Sewa :','',); if Length(Trim(HapNoSewa))=0 then exit else begin //cari data tSewa.IndexName:='IdxNoSewa'; Ketemu:=tSewa.FindKey([HapNoSewa]); if Ketemu=True then begin //beri konfirmasi Konfirmasi:=Application.MessageBox('Anda yakin...', ' Hapus Per Transaksi',MB_IconQuestion or MB_YesNO); if Konfirmasi=IdYes then begin //hapus dengan perulangan while Ketemu=True do begin tSewa.Delete; Ketemu:=tSewa.FindKey([HapNoSewa]); end; tSewa.Refresh; end else exit; end else application.MessageBox('Data tidak ada...','Cari Data',MB_IconInformation); end; end; end;

36. Buat kode program untuk komonen Timer :

procedure TFrmSewa.Timer1Timer(Sender: TObject);

Page 26: Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S · Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom DataControl DBGrid DataSource DsVCD Win32 Animate Name AnmVCD CommonAVI

Praktikum 11 Pemrograman Delphi 7 Imam Gunawan, S.Kom

begin Lanim.Left:=LAnim.Left-1; if (LAnim.Left + LAnim.Width)<=0 then Lanim.Left:=Panim.Width; end; 37. Buat kode program untuk FormClose : procedure TFrmSewa.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end; 38. Simpan form dengan nama : Usewa.Pas