Anda di halaman 1dari 65

Pemrograman Delphi Hal : 1

Pendahuluan
Delphi merupakan bahasa pemrograman yang berbasis pada bahasa pemrograman Pascal. Bahasa Pascal sendiri muncul pada tahun 1971 oleh ilmuwan Swiss Niklaus Wirth, yang namanya diambil dari ahli matematika Perancis Blaise Pascal (1623-1662). Sejak munculnya Pascal kemudian mengalami beberapa kali pengembangan diantaranya Turbo Pascal keluaran Borland International Incorporation tahun 1983. Turbo Pascal ini memiliki perbedaan dengan Pascal standard, diantaranya dalam hal pengolahan string, penambahan beberapa prosedur dan fungsi, dan sebagainya. Turbo Pascal ini awalnya Under DOS namun dalam perkembangannya Borland juga mengeluarkan Turbo Pascal Under Windows yakni Turbo Pascal For Windows. Pada tahun 1992, Borland International memergerkan Turbo Pascal For DOS dan Turbo Pascal For Windows yang dikenal dengan nama Borland Pascal Versi 7.0. Seiring perkembangan sistem operasi Windows dan pemrograman berbasis visual, pada tahun 1995 kemudian Borland mengeluarkan Delphi Versi 1 yang kemudian berkembang pada tahun 1996 menjadi Delphi 2. Pada tahun 1997, 1998, dan 1999 Borland International berganti nama menjadi Inprise Corporation dan menghasilkan penyempurnaan Delphi dalam versi 3, 4, dan 5. Pada versi Delphi yang umumnya digunakan saat ini telah mengalami perkembangan dari versi 5 ke 6, 7, dan 8. Delphi merupakan salah satu bahasa pemrograman yang bersifat multi-purposes.

BAGIAN I : SEKILAS TENTANG DELPHI

Mengenal IDE (Integrated Development Environment) DELPHI IDE (Integrated Development Environment) adalah bagian dari Delphi yang ditujukan untuk membuat aplikasi. Melalui IDE inilah pemrograman secara visual mendesain user-interface dan melakukan pengkodean program. Pada dasarnya IDE Delphi dibagi menjadi 6 bagian utama yaitu : Menu, SpeedBar(Toolbar), Component Pallete, Form Designer, Code Editor dan Object Inspector. Gambar berikut ini menunjukkan letak keenam komponen IDE Delphi:

Speed Bar

Menu

Form Designer Code Editor

Component Pallete

Object Inspector

Gambar 1. Bagian dari IDE Delphi

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 2 Menu, berisi sejumlah pilihan (File, Edit, Search, dan sebagainya) digunakan untuk melakukan proses terhadap file program (membuka, menyimpan), mengkompilasi dan sebagainya. Speed Bar / Toolbar, digunakan sebagai tombol eksekusi pengganti beberapa item menu yang lazim digunakan. Misalnya tombol RUN yang menggantikan fungsi Menu RUN | RUN. Component Pallete, berisi kumpulan icon yang mensimbolkan VCL (Visual Component Library). Pada component pallete terdapat beberapa tab : Standards, Additionals, Win32, dan seterusnya. Komponen inilah yang akan digunakan (ditambahkan) ke dalam form dalam implementasi aplikasi pemrogramannya. Form Designer, merupakan tempat dimana desain dari aplikasi yang akan dihasilkan dilakukan dengan meletakkan atau menambahkan komponen-komponen yang ada dalam component pallete. Code Editor, tempat melakukan pengkodean program dalam sintaks Delphi (Pascal). Object Inspector, digunakan untuk melakukan setting terhadap suatu objek (kontrol) yang ditambahkan dari component pallete ke form. Pada object inspector terdapat 2 tab yaitu : Properties dan Events. Nama Property Kotak Objek Objek (Kontrol) , Properties, Events, Methods Dalam pemrograman berbasis OOP, suatu program dibagi dalam objek. Setiap objek memiliki entity terpisah dengan entity objek lainnya dalam lingkungannya. Setiap objek memiliki sekumpulan sifat dan metode yang melakukan fungsi tertentu sesuai dengan yang dikodekan terhadap objek tersebut. Nama Sub

Setting

Property Setiap objek memiliki 3 hal utama : Tombol 1. Properties, adalah karakteristik atau sifat dari Property suatu objek. Misalnya warna (Font.Color) untuk teks (label) adalah hitam, ukurannya (Width) = 100, dsb. 2. Method, adalah serangkaian prosedur yang dimiliki oleh suatu objek yang akan dijalankan sesuai dengan perintah atau event. Misalnya objek button (tombol) EXIT memiliki metode keluar dari aplikasi. 3. Event, adalah kejadian atau segala sesuatu yang terjadi pada suatu objek. Misalnya mengklik tombol mouse pada suatu button (Event : Click). Berikut ini ilustrasi singkat tentang objek dengan analogi konkret objek Mobil : OBJEK MOBIL

PROPERTIES : Merk : Toyota Warna : Hitam Tipe : Sedan

EVENT : Pintu dibuka Ditabrak Kehujanan

METHODS : - Berjalan Maju - Berjalan Mundur - Berhenti

Pada object inspector terdiri dari beberapa bagian : Kotak objek, berisi nama objek yang ditambahkan pada form. AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 3 Tombol daftar objek, berisi tombol daftar nama objek yang telah ditambahkan dalam form yang dapat disetting propertynya. Nama property, adalah nama masing-masing property yang diberikan pada objek. Nama SubProperty, adalah nama sebuah property yang ada di dalam sebuah induk property. Setting, adalah isi dari tiap property pada daftar property. Tombol property, adalah tombol untuk menampilkan pilihan untuk mengisi salah satu dari property objek. Cara Pengisian Property : Property suatu objek dapat diisi dengan 2 cara yaitu : 1. Mengisi pada saat design-time, artinya property diisikan pada object inspector dengan mengisikan (mensetting) nilai property untuk tiap-tiap objek yang ada dalam form. Pengisian ini dapat dilakukan dengan cara mengetikkan langsung pada property objek di object inspector atau dengan memilih dari tombol property yang disediakan (umumnya berbentuk combo box). Cara pertama ini umumnya digunakan untuk memberi nilai property untuk objek yang sifatnya konstan (tidak berubah) sepanjang berjalannya aplikasi. 2. Mengisi pada saat run-time, mensetting property pada saat berlangsungnya aplikasi dengan melalui pengkodean program. Standard penulisan program untuk mensetting property dilakukan dengan : Nama_objek.Nama_property.Nama_SubProperty := Setting_property; Membuat Aplikasi Baru Pilih menu File | New | Application atau dengan mengklik pada Speedbar New kemudian Pilih Application. Menyimpan Project dan Form Pilih menu File | Save Project As .. Kemudian akan muncul kotak dialog penyimpanan unit (ekstention .pas) dan kotak dialog penyimpanan project file (.dpr) sbb :

Catatan : Nama file untuk unit (.pas) umumnya diawali huruf F misalnya FBiodata.pas dan Tidak Boleh Sama dengan Nama file project (.dpr). Untuk file project umumnya diawali huruf P misalnya PBiodata.dpr untuk kemudahan dalam identifikasi. Setelah melakukan penyimpanan file unit dan project di atas secara otomatis akan muncul beberapa file khusus dalam aplikasi sbb : File dengan extention .dfm adalah file form; file dengan extention .dof berisi opsi-opsi project (pengaturan linker dan compiler); file dengan extention .cfg adalah file yang berisi konfigurasi project, dan file dengan extention .res adalah file yang berisi resource windows standard (icon aplikasi).

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 4 Menjalankan Program PAUSE Untuk menjalankan program dapat dilakukan dengan memilih Menu RUN | RUN atau dengan menggunakan shortcut keyboard F9 atau dengan menggunakan speedbar RUN RUN Cara kedua adalah dengan memilih speedbar Save ALL atau menu File | Save ALL (SHIFT + CTRL + S) untuk menyimpan Form dan Project secara sekaligus. Menghentikan Eksekusi Program. Untuk menghentikan running program dapat dilakukan dengan memilih menu RUN | Program Reset (CTRL + F2). Mengedit Project Untuk membuka aplikasi gunakan menu File | Open Project (CTRL + F11). Kemudian pilih folder untuk membuka project yang akan diubah. Simpan kembali perubahan setelah proses pengeditan selesai dilakukan. Soal 1. Desainlah form dengan tampilan sebagai berikut ini: 1. Ubah property Caption pada form dengan Soal 1 dan property Name pada form dengan frmSoal1. Ubah property Position dengan poScreenCenter. 2. Tambahkan komponen editbox pada form. Setting property Name dengan editTeks dan property Text dikosongkan. 3. Tambahkan groupbox pertama, setting property name dengan grbWarna dan ubah property caption dengan Warna Background. 4. Pada groupbox tersebut tambahkan tiga buah tombol (button) dan ubah masing-masing propertynya sbb : Button1, ubah caption dengan &Biru, ubah name dengan btnbiru. Button2, ubah caption dengan &Hijau, ubah name dengan btnhijau. Button3, ubah caption dengan &Normal, ubah name dengan btnnormal. 5. Tambahkan groupbox kedua, setting property name dengan grbTeks dan ubah property caption dengan Tampilan Teks. 6. Pada groupbox tersebut tambahkan tiga buah tombol (button) dan ubah masing-masing propertynya sbb : Button1, ubah caption dengan Delphi, ubah name dengan btndelphi. Button2, ubah caption dengan Pemrograman, ubah name dengan btnprogram. Button3, ubah caption dengan Normal, ubah name dengan btnnormal. 7. Tambahkan sebuah tombol (bitbutton dari tab Additional). Setting property Kind dengan bkClose. Selanjutnya untuk event untuk masing-masing komponen tersebut adalah :
Procedure TfrmSoal1.btnbiruClick(Sender: TObject); begin frmSoal1.color := clblue; end; procedure TfrmSoal1.btnnormalClick(Sender: TObject); begin frmSoal1.Color := clBtnFace; end; procedure TfrmSoal1.btnhijauClick(Sender: TObject); begin frmSoal1.color := clgreen; end;

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 5


procedure TfrmSoal1.btnteksnormalClick(Sender: TObject); begin editteks.Text := ''; end; procedure TfrmSoal1.btndelphiClick(Sender: TObject); begin editteks.Text := 'Delphi'; end; procedure TfrmSoal1.btnProgramClick(Sender: TObject); begin editteks.Text := 'Pemrograman'; end; procedure TfrmSoal1.bitbtnkeluarClick(Sender: TObject); begin application.Terminate; end;

Soal 2 Buatlah form dengan tampilan seperti di bawah ini !

Memo Combobox DateTimePicker Radiobutton Listbox Groupbox Checkbox

1. Ubah property Name pada form dengan frmBiodata. Ubah pula caption dengan Biodata Mahasiswa dan property color dengan clSilver. 2. Tambahkan 10 komponen label pada form dan atur propertynya sbb : Label1, setting property caption dengan BIODATA MAHASISWA. Setting property Font.Style.fsBold dengan True, Font.Name disetting Arial dan Font.Size = 12. Untuk masing-masing label (label2-label10) atur property captionnya dengan tampilan seperti pada form. 3. Untuk komponen lainnya dijelaskan pada tabel berikut ini : Nama Komponen Property Nilai setting property EditBox (pertama) Text Name editNIM EditBox (kedua) Text Name editNama Memo Lines Dikosongkan (0 lines) Name memoAlamat EditBox (ketiga) Text Name editTelepon Combobox Text Name cboJenisKelamin Items Tambahkan laki-laki & perempuan DateTimePicker (tab Win32) Name dtpTglLahir RadioButton (satu) Caption Manajemen Name rdbManajemen RadioButton (dua) Caption Akuntansi AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 6 Name rdbAkuntansi RadioButton (tiga) Caption Informatika Name rdbInformatika Listbox Items D1, D3, S1 Name lstProgStudi Groupbox Caption Name grbHobby Checkbox (satu) Caption Membaca Name chkMembaca Checkbox (dua) Caption Olahraga Name Chkolahraga Checkbox (tiga) Caption Kesenian Name chkKesenian Checkbox (empat) Caption Lain lain Name Chklain Button Caption &Keluar Name Btnkeluar 4. Pada button keluar berikan kode untuk keluar dari aplikasi :
procedure TfrmBiodata.btnkeluarClick(Sender: TObject); begin application.Terminate; end;

BAGIAN II : TIPE DATA & OPERATOR


Komentar Cara memberi komentar untuk pemrograman delphi dapat dilakukan dengan cara : 1. Meletakkan komentar diantara tanda { dan }. 2. Meletakkan komentar diantara tanda (* dan *). 3. Memberi tanda // pada teks untuk komentar. Variabel Aturan pemberian variabel : 1. Diawali dengan huruf atau garis bawah. 2. Karakter berikutnya dapat berupa huruf, angka, atau garis bawah. 3. Panjang variabel pada dasarnya bebas dengan maksimal 255 karakter pertama saja yang digunakan. 4. Tidak membedakan huruf besar dan kecil (non-case sensitive). 5. Tidak berupa kata tercadang (reserved word). Pendeklarasian variabel sesuai dengan standarisasi Pascal : Var nama_variabel : tipedata_variabel; Jenis Tipe Data 1. Tipe Bilangan Bulat (Integer) Tipe Data Range Ukuran Memory Byte 0 s/d 255 1 byte Word 0 s/d 65535 2 byte ShortInt -128 s/d 127 1 byte SmallInt -32768 s/d 32767 2 byte Integer -2147483648 s/d 2147483647 4 byte Cardinal 0 s/d 2147483647 4 byte LongInt -2147483648 s/d 2147483647 4 byte 2. Tipe Karakter Tipe Data Ukuran Memory Karakter yang dapat disimpan ANSIChar 1 byte Satu karakter ANSI AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 7 WideChar 2 byte Satu karakter Unicode Char 1 byte Identik dengan ANSI Char 3. Tipe Boolean Tipe Data Range Ukuran Memory 4. Tipe String, yang umumnya digunakan berupa ShortString dengan panjang karakter Boolean Berukuran 1 byte 1 byte 255 karakter dan elemen yang dapat ByteBool Berukuran byte 1 byte disimpan berupa ANSIChar. Bool Berukuran word 2 byte Wordbool Berukuran word 2 byte Longbool Berukuran double 4 byte 5. Tipe Real Tipe Data Range Ukuran Memory Real 2,9x10-39 s/d 1,7x1038 6 byte -45 38 Single 1,5x10 s/d 3,4x10 4 byte -324 308 Double 5,0x10 s/d 1,7x10 8 byte Extended 3,6x10-4951 s/d 1,1x104392 10 byte Comp -263+1 s/d 263-1 64 bit integer Currency -922337203685477.5808 s/d 922337203685477.5807 64 bit integer Konstanta, adalah suatu nilai yang tetap (konstan) selama eksesuksi suatu program. Konstanta dapat berupa karakter, bilangan bulat (integer), bilangan real, dan boolean. Cara mendeklarasikan konstanta : Const nama_konstanta = nilai konstanta; Array, adalah kumpulan variabel yang bertipe sama dengan menggunakan nama variabel array yang sama dengan indeks(subscript) yang berbeda-beda. Cara mendeklarasikan array pada Delphi adalah : Var Nama_var_array : Array [batas_awal .. batas_akhir] of Tipe_data_array Array dapat berbentuk satu dimensi (baris, kolom) ataupun multi dimensi (2x2). Macam Macam Operator 1. Operator Pemberian nilai (Assignment). Pemberian nilai pada Delphi dilakukan dengan menggunakan tanda := 2. Operator Aritmatika Operator aritmatika yang digunakan meliputi : * untuk operasi perkalian; / untuk operasi pembagian bilangan real; div untuk operasi pembagian bilangan bulat; mod untuk operasi sisa pembagian; + untuk operasi penjumlahan dan untuk operasi pengurangan. 3. Operator logika, meliputi : Not, And, OR, XOR, SHL, dan SHR 4. Operator Relasional.Adapun operator pembanding (relasional) yang digunakan dalam Delphi meliputi : Operator Keterangan Lebih dari > Kurang dari < Lebih dari atau sama dengan >= Kurang dari atau sama dengan <= Tidak Sama dengan <> Sama dengan = 5. Operator Himpunan, meliputi : + untuk operasi union (penggabungan), - untuk operasi selisih, * untuk operasi interseksi, dan IN untuk operasi anggota dari. 6. Operator String, penggabungan antar string menggunakan operator + Program dalam Delphi umumnya dibentuk oleh modul-modul kode sumber yang disebut unit. Unit adalah bagian program yang berisi rutin (procedure atau function). Setiap unit akan disimpan dalam file berekstensi .PAS. Suatu unit mempunyai struktur sebagai berikut :
unit namaunit;

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 8


interface uses { Daftar unit yang digunakan } { Bagian interface ada di bagian ini } implementation uses { Daftar unit yang digunakan } {Bagian implementation ada di bagian ini } initialization { Bagian initialization ada di bagian ini } finalization { Bagian finalization ada di bagian ini } end.

Soal 3. Disainlah form dengan tampilan sebagai berikut : Tambahkan ke dalam form komponen label sebanyak 7 buah. Atur masing-masing captionnya dengan tampilan di samping ini. Tambahkan sebuah groupbox sebelum membuat 3 label tersebut (tampilan konversi). Untuk tiga buah label yang akan diisikan nilai untuk hasil konversi celcius berikan nama sbb: Label pertama, atur name dengan lblfahrenheit, untuk label kedua setting name dengan lblreamur, dan label ketiga dengan lblkelvin. Ketiga label tersebut dikosongkan captionnya. Selanjutnya tambahkan sebuah button berikan Label (3 buah) captionnya dengan Konversi dan name dengan btnkonversi. Terakhir tambahkan sebuah bitbutton, beri name bitbtnclose dan atur property Kind dengan bkclose. Pada form setting position dengan poScreenCenter dan atur caption dengan Konversi Suhu serta setting name dengan frmKonversiSuhu. Selanjutnya untuk kode pemrograman yang diperlukan adalah pada tombol konversi dan close sbb :
procedure TfrmKonversiSuhu.BitBtncloseClick(Sender: TObject); begin application.Terminate; end; procedure TfrmKonversiSuhu.btnkonversiClick(Sender: TObject); var celcius,reamur,kelvin,fahrenheit : real; begin celcius := StrToFloat(editcelcius.text); reamur := Round(5/4 * celcius); kelvin := celcius + 273; fahrenheit := Round(9/5 * celcius + 32); lblreamur.Caption := floatToStr(reamur); lblkelvin.Caption := FloatToStr(kelvin); lblfahrenheit.Caption := FloatToStr(fahrenheit); end;

Soal 4. Buatlah form dengan tampilan di bawah ini : 1. Setting property pada form : Name form dengan frmPenjualan Position dengan poCenterDesktop Color dengan clGray 2. Tambahkan komponen label (7 buah) dan atur property captionnya dengan tampilan di form. 3. Tambahkan komponen editbox sebanyak 6 buah. Atur property text dengan mengosongkan semua komponennya. Beri name untuk masing-masing komponen edit sebagai berikut ini AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 9 Nama Komponen Edit 1 Edit 2 Edit 3 Edit 4 Edit 5 Edit 6 Property Name Name Name Name Enabled Name Enabled Name Enabled Nilai setting property Editkode EditNama EditHarsat EditJumlah False EditPajak False EditTotal False 4. Tambahkan komponen spinedit (dari tab Sample). Setting property minvalue = 0 dan maxvalue = 32767. Setting pula Name dengan speQty. 5. Terakhir, tambahkan 3 buah button dengan caption seperti pada form. Beri nama masing-masing btnprocess, btnclear, btnexit.

Selanjutnya untuk pengkodean masing-masing objek sebagai berikut ini :


procedure Tfrmpenjualan.btnexitClick(Sender: TObject); begin application.Terminate; end; procedure Tfrmpenjualan.btnprocessClick(Sender: TObject); var qty,harsat : integer; jumlah,pajak,total : currency; begin ThousandSeparator:='.'; qty := spebanyak.Value; harsat := StrToInt(editharsat.Text); jumlah := qty * harsat; editjumlah.Text := CurrToStrF(jumlah,ffNumber,0); pajak:=0.1*jumlah; editpajak.Text := CurrToStrF(pajak,ffNumber,0); total := jumlah + pajak; edittotal.Text := CurrToStrF(Total,ffNumber,0); end; procedure Tfrmpenjualan.btnclearClick(Sender: TObject); begin editkode.Text := ''; editnama.text:= ''; editharsat.Text:=''; editjumlah.Text := ''; editpajak.Text := ''; edittotal.text:=''; spebanyak.value := 0; editkode.setfocus; end;

BAGIAN III : ALIRAN PROGRAM, SUBROUTINE.


Percabangan (Conditional) Ada dua macam pernyataan kondisi (pencabangan) yaitu : 1. Pernyataan if Ada dua macam pernyataan if yaitu : If .. Then AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 10 If .. Then .. Else Bentuk umum ini dapat dijabarkan sebagai berikut : If kondisi then Begin {pernyataan yang dijalankan jika kondisi terpenuhi}; End Else Begin {pernyataan yang dijalankan jika kondisi tidak terpenuhi}; End; 2. Pernyataan Case Bentuk umum : Case ekspresi_nilai of Pilihan_1 : pernyataan_1; Pilihan_2 : pernyataan_2; Pilihan_3 : pernyataan_3; End; NB : Nilai Ekspresi_Nilai harus berupa tipe ordinal.

Pengulangan (Looping) Ada beberapa perintah yang digunakan dalam melakukan looping (pengulangan), yaitu : 1. Pernyataan FOR Bentuk pernyataan FOR ada dua jenis yaitu : For .. To For .. Downto Bentuk umum : for variabel_counter := nilai_awal to nilai_akhir do Begin { pernyataan yang akan diulang } End; 2. Pernyataan While, menjalankan pengulangan selama kondisi bernilai True. Bentuk umum : While kondisi Do Begin { pernyataan yang akan diulang } End; 3. Pernyataan Repeat .. Until, menjalankan pengulangan hingga kondisi False. Bentuk umum : Repeat { pernyataan yang akan diulang } Until kondisi; 4. Pernyataan Break, pernyataan untuk keluar dari pengulangan. 5. Pernyataan Continue, pernyataan untuk melanjutkan ke pengulangan berikutnya pada pernyataan pengulangan for / while / repeat. PROCEDURE & FUNCTION Dalam bahasa pemrograman yang terstruktur (Pascal) tiap-tiap pengkodean dilakukan dengan membentuk subroutine (sub program) yang kemudian akan diintegrasikan (dicall) dari main programnya atau subroutine lain yang memanggil subroutine yang bersangkutan. Perbedaan mendasar dengan bahasa pemrograman yang berbasis visual konsep pemograman terstruktur ini tetap dipertahankan dengan penambahan pada konsep event oriented (objek berdasarkan pada event tertentu). Perbedaan antara procedure dan function adalah function selalu mengembalikan nilai ke procedure yang memanggilnya (return value) sedangkan procedure tidak mengembalikan nilai. Deklarasi Procedure : Procedure nama_procedure(parameter1,parameter2,...); Begin {pernyataan} AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 11 End; Deklarasi Function : Function nama_function(parameter1,parameter2,...) : tipedata_retval; Begin {pernyataan} End; Untuk memanggil suatu procedure atau function dapat dilakukan dengan memanggil / menyebutkan nama procedure atau function yang bersangkutan. Khususnya untuk function yang memiliki retval maka digunakan suatu variabel bertipe data sama dengan retvalnya untuk menampung hasil retval dari function tersebut. Parameter pada procedure atau function dibedakan atas 2 yaitu : Parameter nilai (value), pada parameter ini nilai akan dipassing pada parameter aktual (parameter pada saat function atau procedure dipanggil) dan nilai parameter ini hanya akan berpengaruh pada function atau procedure itu sendiri tanpa mengubah nilai dari pemanggilnya. Parameter acuan (reference / variabel), pada parameter ini nilai yang dipassing pada parameter aktual akan berpengaruh pada function atau procedure itu sendiri dan akan mengubah nilai dari pemanggilnya. Parameter ini dibuat dengan menambahkan reserved word var pada awal parameter acuan. Soal 5 Setting property untuk form dengan : Name : frmPenjualan; Position : poScreenCenter; Color : clGray. Tambahkan checkbox Discount dengan name ChkDiscount dan RadioGroup PersenDiscount seperti tampilan di samping. Editbox di samping persentase menunjukkan nilai nominal dari discount.

Pengkodean untuk tiap-tiap objek adalah sebagai berikut :


procedure Tfrmpenjualan.btnexitClick(Sender: TObject); begin application.Terminate; end; function cekisian(teks : string):boolean; begin if teks = '' then cekisian:=True else cekisian:=False; end; procedure Tfrmpenjualan.btnprocessClick(Sender: TObject); var qty,harsat : integer; jumlah,pajak,total,discount : currency; begin ThousandSeparator:='.'; if not (cekisian(editkode.Text)) and not (cekisian(editnama.Text)) and not (cekisian(editharsat.Text)) and not (cekisian(inttostr(spebanyak.Value))) then begin

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 12


qty := spebanyak.Value; harsat := StrToInt(editharsat.Text); jumlah := qty * harsat; editjumlah.Text := CurrToStrF(jumlah,ffNumber,0); if chkdiscount.Checked then begin case rdgdiscount.ItemIndex of 0 : discount := 0.05 * jumlah; 1 : discount := 0.1 * jumlah; 2 : discount := 0.2 * jumlah; end; end else discount:=0; editdiscount.text := CurrToStrF(discount,ffNumber,0); pajak:=0.1*jumlah; editpajak.Text := CurrToStrF(pajak,ffNumber,0); total := jumlah + pajak - discount; edittotal.Text := CurrToStrF(Total,ffNumber,0); end else begin messageDlg('Isian Belum Lengkap',mtInformation,[mbok],0); editkode.SetFocus; end; end; procedure Tfrmpenjualan.btnclearClick(Sender: TObject); begin editkode.Text := ''; editnama.text:= ''; editharsat.Text:=''; editjumlah.Text := ''; editpajak.Text := ''; edittotal.text:=''; editdiscount.text := ''; spebanyak.value := 1; chkdiscount.Checked := false; editkode.setfocus; end; procedure Tfrmpenjualan.chkdiscountClick(Sender: TObject); begin if chkdiscount.checked = true then rdgdiscount.Enabled := true else rdgdiscount.Enabled := false; end; procedure Tfrmpenjualan.editharsatKeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9',,,#8]) then key:=#0; end;

Soal 6 Disainlah form dengan tampilan berikut ini : Setting property pada form dengan mengubah Name : frmJlhKarakter; Caption : Menghitung Jumlah Karakter, Color : clBtnShadow, dan Position : poDesktopCenter. Tambahkan komponen label ubah captionnya dengan tampilan teks seperti pada gambar di bawah. Tambahkan komponen editbox, atur Name dengan editteks, dan kosongkan property Text. AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 13 Tambahkan komponen groupbox dan label (10 buah) pada groupbox tersebut. Untuk label yang berfungsi sebagai keterangan atur property caption seperti pada gambar. Sedangkan untuk 5 label yang lain kosongkan semua property captionnya dan atur Name sebagai berikut : lbltotkarakter, lblkonsonan, lblvokal, lblspasi, dan lblangka. Terakhir, tambahkan dua buah bitbutton atur property Kind dengan OK dan Close. Kemudian atur caption dengan tampilan &Proses dan &Keluar. Untuk pengkodeannya adalah sebagai berikut :
procedure TfrmJlhLKarakter.BitBtn1Keluar(Sender: TObject); begin application.Terminate; end; procedure TfrmJlhLKarakter.bitbtnProsesClick(Sender: TObject); var nVokal,nKonsonan,nHuruf,nSpasi,nAngka : integer; uji : string; i : byte; begin nVokal:=0; nKonsonan:=0; nAngka:=0; nHuruf:=Length(editteks.Text); For i:=1 to nHuruf do begin uji := UpperCase(copy(editteks.Text,i,1)); if (uji ='A') or (uji = 'E') or (uji='I') or (uji = 'O') or (uji ='U') then inc(nvokal) else if uji = #32 then inc(nSpasi) else if (uji >= #48) and (uji <= #57) then inc(nangka) {ASCII angka 0 9 => 48-57} else inc(nkonsonan); end; lbltotkarakter.caption:=IntToStr(nHuruf); lblvokal.caption:=IntToStr(nvokal); lblspasi.Caption := IntToStr(nSpasi); lblkonsonan.Caption := IntToStr(nKonsonan); lblangka.caption := IntToStr(nAngka); end;

Soal 7 Disainlah form dengan tampilan berikut ini : Atur property pada form : Name : frmNilai Caption : Menghitung Nilai Position : poScreenCenter Tambahkan groupbox dan atur property caption dengan Menghitung Nilai. Tambahkan 9 buah label dan sesuaikan dengan tampilan (caption) pada form di samping ini. Tambahkan 9 buah editbox, kosongkan property textnya. Atur property lainnya sebagai berikut : Nama Komponen Property Nilai setting property EditBox (1) Name editNim EditBox (2) Name editNama EditBox (3) Name editAbs EditBox (4) Name editTt EditBox (5) Name editMid EditBox (6) Name editUa EditBox (7) Name editTotNil Enabled False EditBox (8) Name editGrade Enabled False EditBox (9) Name editKet Enabled False Komponen terakhir yang ditambahkan adalah button sebanyak 3 buah atur caption dengan : &Hitung, K-&osongkan dan &Keluar; property Name dengan btnHitung, btnKosong, btnKeluar. AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 14

Selanjutnya untuk pengkodeannya dapat dilakukan sebagai berikut ini :


procedure TfrmNilai.editNimKeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9',,#8]) then key:=#0; end; function Overnilai(nilai : Real):boolean; begin if nilai > 100 then Overnilai:=True else Overnilai:=False; end; procedure TfrmNilai.EditAbsChange(Sender: TObject); begin if editabs.Text = '' then editabs.text:='0' else if Overnilai(StrToFloat(editabs.Text)) then begin MessageDlg('Range Masukan 0-100!',mtInformation,[mbok],0); editabs.text:=''; editabs.SetFocus end; end; procedure TfrmNilai.EditTtChange(Sender: TObject); begin if editTt.Text = '' then editTt.text:='0' else if Overnilai(StrToFloat(editTt.Text)) then begin MessageDlg('Range Masukan 0-100!',mtInformation,[mbok],0); editTt.text:=''; editTt.SetFocus end; end; procedure TfrmNilai.EditMidChange(Sender: TObject); begin if editMid.Text = '' then editMid.text:='0' else if Overnilai(StrToFloat(editMid.Text)) then begin MessageDlg('Range Masukan 0-100!',mtInformation,[mbok],0); editMid.text:=''; editMid.SetFocus end; end; procedure TfrmNilai.EditUaChange(Sender: TObject); begin if editUa.Text = '' then editUa.text:='0' else if Overnilai(StrToFloat(editUa.Text)) then begin MessageDlg('Range Masukan 0-100!',mtInformation,[mbok],0); editUa.text:='';

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 15


editUa.SetFocus end; end; procedure TfrmNilai.btnkeluarClick(Sender: TObject); begin application.Terminate; end; procedure TfrmNilai.btnkosongkanClick(Sender: TObject); begin editNim.text:='';editNama.text:='';editAbs.text:=''; editMid.text:='';editUa.text:=''; editTt.text:=''; editGrade.text:='';editTotNil.text:='';editKet.text:=''; end; Function HitungNilai(abs,tt,mid,ua : real):real; begin HitungNilai := (abs*0.1) + (tt*0.2) + (mid*0.3) + (ua*0.4) end; procedure TfrmNilai.btnhitungClick(Sender: TObject); begin edittotNil.Text := FloatToStr(HitungNilai(StrToFloat(editabs.Text), StrToFloat(editTt.Text),StrToFloat(editMid.Text),StrToFloat(editUa.Text))); if StrToFloat(editTotNil.Text)>=80 then editGrade.Text:='A' else if StrToFloat(editTotNil.Text)>=70 then editGrade.Text:='B' else if StrToFloat(editTotNil.Text)>=60 then editGrade.Text:='C' else if StrToFloat(editTotNil.Text)>=50 then editGrade.Text:='D' else editGrade.Text:='E'; if editGrade.text='A' then editKet.Text:='Baik Sekali' else if editGrade.text='B' then editKet.Text:='Baik' else if editGrade.text='C' then editKet.Text:='Cukup' else if editGrade.text='D' then editKet.Text:='Kurang' else editKet.Text:='Kurang Sekali' end; Untuk kontrol editTt, editMid dan editUa dilakukan validasi yang sama dimana hanya angka saja yang dapat dimasukkan, caranya dengan menggunakan validasi pada editAbs (sharing). Pada event keypress ketiga komponen editbox ini pilih editNim.Keypress sebagai event yang dijalankan.

BAGIAN IV : FORM & VISUAL COMPONENT LIBRARY (VCL)


Pada bagian berikut ini akan dibahas sejumlah komponen pada component pallete yang umumnya sering digunakan dalam aplikasi. Tidak semua komponen akan dibahas tetapi yang sifatnya umum digunakan. VCL merupakan pustaka berisi kumpulan komponen visual dan non visual yang dapat digunakan untuk membangun aplikasi Delphi. Sebelum membahas komponen VCL secara khusus berikut ini adalah komponen dasar yang wajib diketahui yaitu Form. Property penting pada form diantaranya : Name, berisi setting nama form untuk aplikasi. Umumnya diawali dengan kata standard frm. BorderIcons, untuk mengatur setting tampilan tombol Maximize, minimize, help memiliki beberapa subproperty : Biminimize, jika diset false maka saat form dijalankan tombol minimize tidak akan dapat diakses. Bimaximize, jika diset false maka saat form dijalankan tombol maximize tidak akan dapat diakses. Bihelp, jika diset true maka akan ditampilkan tombol help di atas jendela dengan syarat tombol minimize dan maximize harus diset false. AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 16 Caption, tampilan judul bar yang akan muncul di bagian atas jendela form. Position, untuk mengatur peletakkan form. Jika disetting ke poScreenCenter maka akan menyebabkan form diletakkan di tengah layar ketika program dieksekusi. Cara untuk memanggil form dari form lain adalah dengan menggunakan method SHOW. Bentuk umum : nama_form_yang_dipanggil.Show;

Visual Component Library (VCL) Untuk menambahkan semua komponen dari components pallete ke form dapat dilakukan dengan teknik click & drag dimana objek yang akan digunakan dipilih dulu dengan cara diklik kemudian gerakkan (drag) mouse di bagian form. Berikut ini adalah beberapa VCL yang sering digunakan berikut property penting pada VCL tersebut. Pada tab Standard : MainMenu Komponene ini digunakan untuk mendesain dan membuat menu bar pada form. PopUpMenu Komponen ini digunakan untuk membuat menu popup yang umumnya digunakan saat melakukan klik kanan pada mouse. Label Umumnya digunakan untuk menampilkan keterangan dalam bentuk teks pada form. Property yang umumnya digunakan adalah : Name, berisi nama dari objek label yang digunakan dalam form. Umumnya diawali lbl. Caption, berisi tampilan teks yang akan muncul pada objek label yang bersangkutan. Editbox Edit digunakan untuk input / output satu baris teks. Property yang umumnya digunakan adalah : Name, berisi nama dari objek edit yang digunakan dalam form. Umumnya diawali edit. Text, berisi tampilan teks yang akan muncul pada objek edit yang bersangkutan. PasswordChar, digunakan untuk menyembunyikan tampilan teks dengan character yang diset biasanya untuk keperluan sekuritas (password). Memo Komponen ini digunakan untuk input / output teks yang berjumlah lebih dari 1 baris. Beberapa property yang penting adalah : Alignment, untuk menentukan posisi teks pada objek ini. taLeftJustify (rata kiri), taCenter (rata tengah) dan taRightJustify(rata kanan). Lines, berisi baris teks pada memo. Name, berisi nama objek memo. Readonly, jika diset true maka teks hanya dapat dibaca dan tidak dapat diedit. Scrollbars, menunjukkan peletakkan scrollbar. Dapat diset : ssNone(tidak ada scrollbar) ssHorizontal (scrollbar horisontal) ssVertical (scrollbar vertikal) ssBoth (scrollbar vertikal dan horisontal) Button Komponen ini digunakan untuk membuat tombol yang akan melakukan event atau proses tertentu saat tombol tersebut ditekan atau diklik. Beberapa property yang umumnya digunakan : Caption, menunjukkan teks yang akan tampil pada button. Untuk membuat hot key berikan tanda & sebelum teks pada property caption. Contoh &Keluar menghasilkan tombol keluar dengan hotkey ALT + K Name, menunjukkan nama dari objek button, umumnya diawali kata btn. AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 17 Checkbox Komponen ini digunakan untuk memilih sejumlah pilihan tertentu (dapat lebih dari satu pilihan) yang disediakan. Beberapa property yang umumnya digunakan : Caption, menunjukkan judul / teks pada kotak cek. Checked, bernilai true jika kotak cek dalam keadaan dipilih. Name, berisi nama dari objek checkbox umumnya diawali kata chk. Radiobutton Komponen ini digunakan untuk memilih satu pilihan tertentu yang sekelompok atau daftar pilihan yang disediakan. Beberapa property yang umumnya digunakan : Caption, berisi keterangan/teks di sebelah kanan radio button. Checked, berisi setting true jika radio button dalam keadaan dipilih. Name, nama dari objek radiobutton, umumnya diawali kata rdb. Listbox Komponen ini digunakan untuk membuat sejumlah daftar pilihan yang kemudian dapat dipilih satu atau lebih dari satu pilihan. Beberapa property penting yang umumnya digunakan : Items, menunjukkan daftar string yang digunakan sebagai item pilihan. Name, nama untuk objek listbox umumnya diawali lst. Sorted, untuk mengurutkan item pilihan. Pengurutan hanya dilakukan jika nilai property bernilai True. Combobox Komponen ini pada dasarnya merupakan perpaduan antara listbox dan komponen editbox, dengan tujuan yang sama memilih dari sejumlah pilihan yang ada dalam daftar pilihan dengan tambahan data dapat dimasukkan pada combo box tersebut. Beberapa property yang umumnya digunakan adalah : Items, menunjukkan daftar pilihan combo box. MaxLength, menentukan jumlah karakter maksimum yang dapat dimasukkan. Name, menunjukkan nama dari objek combo box; umumnya diawali kata cbo. Style, menunjukkan bentuk objek combo box. Text, menyatakan isi / teks dari combo box. Jenis combo box : Bentuk combo box ditentukan oleh nilai pada property Style. Isi property ini dapat berupa csDropDown, csSimple dan csDropDownList. csDropDown Bentuk ini merupakan default. csSimple Bentuk combo box menyerupai editbox. Pilihan dapat dilakukan melalui pilihan scroll mouse ataupun keyboard (up dan down arrow). csDropDownList Bentuk menyerupai csDropDown dengan perbedaan pemakai tidak dapat memasukkan inputan tetapi hanya dapat memilih dari list yang ada. ScrollBar Komponen ini digunakan untuk membuat objek scroll bar (penggulung layar). Beberapa property penting : Kind, menunjukkan bentuk scrollbar. Jika setting sbHorisontal maka scrollbar berupa horisontal scrollbar dan sbvertical untuk scrollbar vertical. Max, nilai maksimum dari scrollbar. Min, nilai minimum dari scrollbar. Position, menunjukkan nilai posisi tombol penggeser. Name, menunjukkan nama dari objek scrollbar. LargeChange, menunjukkan nilai yang digunakan untuk menaikkan atau menurunkan nilai position setiap kali mouse diklik pada penggeser. AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 18

GroupBox Komponen ini digunakan untuk mengelompokkan komponen lain yang sejenis misalnya checkbox, radiobutton, dan lainnya. Beberapa property yang umumnya digunakan : Caption, menyatakan judul yang akan ditampilkan pada bagian atas groupbox. ame, nama dari komponen groupbox; umumnya diawali grb. RadioGroup Komponen ini digunakan untuk mengelompokkan komponen radio button. Beberapa property yang umumnya digunakan adalah : Caption, berisi judul / teks di bagian atas radiogroup. Columns, menentukan jumlah tombol pada radiogroup. Tombol tersusun secara horisontal. ItemIndex, menentukan tombol radiogroup yang dipilih. Nilai 0 menunjukkan tombol radio group pertama yang dipilih; 1 menunjukkan tombol radiogroup kedua yang dipilih, dst. Items, menentukan string pilihan pada masing-masing tombol radiogroup. Name, menyatakan nama dari objek radiogroup, umumnya diawali kata rdg. Pada tab Additional : BitBtn Komponen ini digunakan untuk membuat tombol yang menggabungkan teks dan gambar. Beberapa property yang umumnya digunakan : Caption, menunjukkan teks pada tombol. Kind, menentukan gambar yang akan ditampilkan. Jika akan ditentukan sendiri maka property Kind harus diisi dengan bsCustom. Layout, menentukan posisi gambar terhadap teks pada tombol. (blGlyphLeft : gambar di kiri; blGlyphRight : gambar di kanan; blGlyphTop : gambar di atas; blGlyphBottom : gambar di bawah). Name, nama untuk komponen bitbtn. MaskEdit Komponen ini digunakan untuk memasukkan data dengan memiliki format data tertentu (prevalidation).Beberapa property yang penting adalah : EditMask, berisi pengaturan format teks pada komponen editmask. MaxLength, berisi panjang maksimal karakter yang dapat dimasukkan pada komponen editmask. Name, menyatakan nama untuk komponen editmask. Text, berisi tampilan / teks yang muncul pada komponen ini pada saat run-time. Format pada property EditMask terdiri atas tiga bagian, dengan dipisahkan oleh tanda titik koma (;). Bagian pertama merupakan bagian format teks. Bagian kedua terdiri dari sebuah karakter yang menyatakan karakter-karakter literal pada format teks disimpan pada property teks atau tidak. Karakter 0 menyatakan karakter literal ( misalnya simbol / untuk pemisah tanggal) tidak disimpan pada property teks sedangkan 1 menyatakan bahwa karakter tersebut akan disimpan. Bagian ketiga berupa karakter yang digunakan untuk menggantikan karakter yang tidak dimasukkan pada komponen ini (oleh pemakai), umumnya berupa garis bawah (_) yang menggantikan spasi. Karakter Makna ! Jika karakter ! berada di awal maka spasi di depan yang bersifat opsional diperbolehkan > Mengganti karakter menjadi huruf kapital semuanya. < Mengganti karakter menjadi huruf kecil semuanya. \ Karakter yang terletak sesudah karakter ini akan dianggap sebagai karakter literal. L Menyatakan sebuah huruf (dapat berupa huruf besar atau kecil). | Menyatakan hanya huruf. AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 19 A C 0 atau 9 # : / ; _ Image Komponen ini digunakan untuk menampilkan gambar. Beberapa property yang sering digunakan: Name, berisi nama dari objek image, umumnya diawali kata img. Picture, menunjukkan gambar yang akan ditampilkan. Stretch, menentukan gambar ditampilkan secara utuh pada tempat yang disediakan atau tidak. Jika bernilai True maka gambar ditampilkan secara utuh pada tempat (desain) yang tersedia. Transparent, menentukan gambar bersifat transparan atau tidak. Jika setting True maka latar belakang akan terlihat. Pada tab Win32 : DateTimePicker Komponen ini digunakan untuk membuat kotak daftar berupa tempat memasukkan data tanggal atau waktu. Untuk data tanggal terdapat dua pilihan. Bentuk pertama berupa editbox yang dilengkapi dengan tombol updown. Bentuk kedua berupa combobox. Beberapa property yang digunakan : Date, bertipe data date/tanggal/Tdate. Menyatakan tanggal yang terpilih pada calendar. DateMode, modus pemilihan tanggal. Dapat disetting dengan pilihan : dmCombobox (modus combobox). dmUpDown (editbox + updown). Kind, menentukan komponen yang bertindak sebagai pemilih tanggal atau pemilih waktu. Dapat disetting dengan pilihan : dtkDate (pemilih tanggal). dtkTime (pemilioh waktu). MaxDate, menyatakan batas tanggal minimal yang dapat dipilih. MinDate, menyatakan batas tanggal minimal yang dapat dipilih. Name, menyatakan nama untuk komponen datetimepicker. Time, bertipe data TTime, menyatakan waktu yang dapat dipilih. Pada tab System : Timer Komponen ini digunakan untuk mengaktifkan prosedur, fungsi, atau event dengan suatu batas interval tertentu. Property penting pada timer adalah Interval. Pada tab Samples : SpinEdit Komponen ini digunakan memasukkan input nilai melalui keyboard ataupun melalui spinner di samping editbox, pada dasarnya merupakan perpaduan antara editbox dan updown. Beberapa property yang penting untuk diketahui : Property Increment Keterangan Nilai yang digunakan untuk menaikkan nilai pada komponen ini jika tombol up diklik dan tombol down diklik. MaxValue Nilai tertinggi yang dapat diisikan pada editbox AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom Menyatakan hanya huruf . Menyatakan sebuah sembarang karakter. Menyatakan suatu digit (angka). Menyatakan sebuah karakter atau tanda plus/minus. Memisahkan jam; menit dan detik. Memisahkan tanggal, bulan dan tahun. Memisahkan antar bagian format. Spasi

Pemrograman Delphi Hal : 20 MinValue Name Value Nilai terendah yang dapat diisikan pada editbox Nama untuk komponen ini Nilai pada komponen ini

Pada tab Dialogs : OpenDialogs , digunakan unruk menampilkan kotak dialog standard open. Beberapa property yang penting pada VCL ini : Property Keterangan Filter Mengatur ekstensi file yang akan digunakan sebagai filter pada kotak dialog open. DefaultExt Mengatur ekstensi standard yang akan digunakan sebagai filter pertama kali tiap kali kotak dialog dibuka. InitialDir Mengatur folder awal tempat file yang akan ditampilkan kotak dialog. Title Mengatur judul kotak dialog OpenPictureDialog, digunakan untuk menampilkan kotak dialog open yang umumnya hanya digunakan untuk membuka file gambar (ekstensi file .bmp,.ico,.wmf). Property penting pada openpicturedialog hampir sama dengan property yang ada pada opendialogs. Soal 8 : Disainlah form seperti tampilan di bawah ini ! Setting property pada form : Caption : Program Pengatur Teks. Name : frmTeks. Tambahkan sebuah groupbox pada form kemudian setting property : Name : grbTeks dan Caption : Teks. Tambahkan label di dalam groupbox, kemudian ubah property : Name : LblTeks dan Caption : Delphi. Property Align : alClient; Alignment : taCenter. Tambahkan sebuah radiogroup. Setting property Caption dengan Warna Teks dan property Name dengan rdgwarna. Setting property Items dan isi dengan warna : Hitam, Hijau, Merah dan Biru. Setting property Columns dengan 4. Tambahkan sebuah groupbox. Setting property Caption dengan Jenis Font dan Name dengan grbFont. Tambahkan sebuah combobox di dalam groupbox tersebut. Ubah property Name dengan cboFont dan Text dikosongkan. Setting property Style dengan csSimple.Pada property Items isikan dengan beberapa nama font : Arial, Arial Black, MS Sans Serif, Comic Sans MS, dan Times New Roman. Tambahkan sebuah groupbox. Setting property Caption dengan Karakteristik Teks dan Name dengan grbKarakteristik Tambahkan 3 buah checkbox di dalam groupbox tersebut kemudian ubah masing-masing property captionnnya dengan : Bold, Italic dan Underline. Ubah masing-masing property Name dengan chkbold, chkitalic dan chkunderline. Terakhir, tambahkan groupbox setting property name dengan grbukuran, dan caption : Ukuran Font. Tambahkan sebuah combobox dalam grbukuran kemudian setting property Name dengan cboukuran, text dikosongkan dan style dengan csDropDownList. AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 21 Untuk pengkodeannya adalah sebagai berikut :


unit FormatTeks; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Spin, ExtCtrls; type TfrmTeks = class(TForm) grbTeks: TGroupBox; lbldelphi: TLabel; rdgWarna: TRadioGroup; grbFont: TGroupBox; cboFont: TComboBox; grbKarakteristik: TGroupBox; chkbold: TCheckBox; chkitalic: TCheckBox; chkunderline: TCheckBox; grbukuran: TGroupBox; cboUkuran: TComboBox; procedure rdgWarnaClick(Sender: TObject); procedure cboFontChange(Sender: TObject); procedure chkboldClick(Sender: TObject); procedure chkitalicClick(Sender: TObject); procedure chkunderlineClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure cboUkuranChange(Sender: TObject); procedure efektulisan(bold,underline,italic : boolean); private { Private declarations } public { Public declarations } end; var frmTeks: TfrmTeks; bold,italic,underline : boolean; implementation {$R *.dfm} procedure TfrmTeks.rdgWarnaClick(Sender: TObject); begin with lbldelphi.Font do case rdgwarna.ItemIndex of 0 : color := clblack; 1 : color := clgreen; 2 : color := clred; 3 : color := clblue; end; end; procedure TfrmTeks.cboFontChange(Sender: TObject); begin lblDelphi.Font.Name := cboFont.Text; end;

procedure TfrmTeks.efektulisan; begin with lbldelphi.Font do if bold then Style:=Style+[fsbold]

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 22


else Style:=Style-[fsbold]; with lbldelphi.Font do if underline then Style:=Style+[fsUnderline] else Style:=Style-[fsUnderline]; with lbldelphi.Font do if italic then Style:=Style + [fsitalic] else Style:=style-[fsitalic]; end; procedure TfrmTeks.chkboldClick(Sender: TObject); begin if chkbold.State = cbchecked then bold:=true else bold:=false; efektulisan(bold,underline,italic); end; procedure TfrmTeks.chkitalicClick(Sender: TObject); begin if chkitalic.State = cbchecked then italic:=true else italic := false; efektulisan(bold,underline,italic); end; procedure TfrmTeks.chkunderlineClick(Sender: TObject); begin if chkunderline.State = cbchecked then underline:=true else underline:=false; efektulisan(bold,underline,italic); end; procedure TfrmTeks.FormActivate(Sender: TObject); var i : byte; begin For i:=8 to 72 do cboukuran.Items.Add(inttostr(i)); end;

procedure TfrmTeks.cboUkuranChange(Sender: TObject); begin lbldelphi.Font.Size := StrToInt(cboukuran.text); end; end.

Soal 9 : Disainlah form seperti tampilan di samping ini ! Untuk form setting property : Name : frmMemo. Caption : frmMemo Tambahkan komponen opendialog (dari tab Dialogs). Setting property Name dengan OpenDlgFile. Tambahkan button, ubah caption dengan Buka File dan Name dengan btnbukafile. Tambahkan dua buah button di samping button Buka File kemudian setting property Name masing-masing : btnHapus dan btnSelesai. Sesuaikan captionnya dengan Hapus dan Selesai. Tambahkan sebuah memo dan ubah namenya dengan memoKet. Pada property Lines dikosongkan. Pengkodeannya adalah sebagai berikut :
procedure TfrmMemo.btnbukafileClick(Sender: TObject); var cNamaFile : string; begin opendlgfile.Execute; cNamaFile:=opendlgfile.FileName; if not FileExists(cNamaFile) then MessageDlg('File Tidak Dapat Diakses!',mtinformation,[mbok],0) else MemoKet.Lines.LoadFromFile(cNamaFile);

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 23


end; procedure TfrmMemo.btnselesaiClick(Sender: TObject); begin application.Terminate; end; procedure TfrmMemo.btnhapusClick(Sender: TObject); begin memoket.Lines.Clear; end;

Soal 10 : Disainlah form seperti tampilan di bawah ini ! Setting property pada form : Caption : Contoh Penggunaan Listbox. Tambahkan sebuah objek label sesuaikan captionnya dengan tampilan ( Daftar Kota). Tambahkan dua buah listbox kemudian ubah property Name masing-masing dengan lstKota dan lstTerpilih. Tambahkan label dan editbox. Pada label ganti caption dengan Jumlah data dan Name pada editbox dengan editjumlah. Kosongkan property textnya. Tambahkan 4 buah button sesuaikan property captionnya (Add, Remove, Remove All dan Exit). Setting property Name dengan btnAdd, btnRemove, btnRemoveAll, dan btnexit. Pengkodeannya sebagai berikut :
Procedure TForm1.FormCreate(Sender: TObject); begin lstkota.Items.Add('Pontianak'); lstkota.Items.Add('Jakarta'); lstkota.Items.Add('Semarang'); lstkota.Items.Add('Medan'); lstkota.Items.Add('Makasar'); lstkota.Items.Add('Bandung'); lstkota.ItemIndex:=0; editjumlah.Text := IntToStr(lstkota.Items.Count); end; procedure TForm1.btnaddClick(Sender: TObject); var indeks : byte; begin if lstkota.ItemIndex = -1 then MessageDlg('Pilih Dulu Item Pada Listbox',mtinformation,[mbok],0) else begin indeks:=lstkota.ItemIndex; lstterpilih.Items.Add(lstkota.Items[indeks]); editjumlah.Text := IntToStr(lstkota.Items.Count); end; end; procedure TForm1.btnexitClick(Sender: TObject); begin application.Terminate; end; procedure TForm1.btnremoveClick(Sender: TObject); var indeks : integer; begin

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 24


if lstterpilih.ItemIndex = -1 then MessageDlg('Pilih Dulu Item Pada Listbox',mtinformation,[mbok],0) else begin indeks:=lstterpilih.ItemIndex;lstterpilih.Items.Delete(indeks); editjumlah.Text := IntToStr(lstkota.Items.Count); end; end; procedure TForm1.btnremoveallClick(Sender: TObject); begin lstterpilih.Items.Clear; editjumlah.Text := IntToStr(lstkota.Items.Count); end;

Soal 11 : Buatlah form dengan tampilan berikut ini ! Sesuaikan tampilan komponen label dengan tampilan form. Tambahkan listbox, setting name dengan lstKodePeg dan isikan Items dengan : ADM, FIN, EDP, MRK. Demikian pula untuk listbox golongan (Name : LstGol) dengan Items : I, II, dan III. Sesuaikan komponen yang lain dengan tampilan form. Pengkodean untuk form ini adalah sebagai berikut :

procedure TfrmGaji.btnexitClick(Sender: TObject); begin application.Terminate; end; procedure TfrmGaji.lstkodepegClick(Sender: TObject); begin case lstkodepeg.ItemIndex of 0 : begin editdivisi.Text:='Administrasi'; edittjabatan.Text:='100000'; end; 1 : begin editdivisi.Text:='Keuangan'; edittjabatan.Text:='125000'; end; 2 : begin editdivisi.Text:='Electronic Data Processing'; edittjabatan.Text:='150000'; end; 3 : begin editdivisi.Text:='Pemasaran'; edittjabatan.Text:='125000'; end; end; end; procedure TfrmGaji.lstgolClick(Sender: TObject);

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 25


begin if lstgol.ItemIndex = 0 then editgapok.Text:='750000' else if lstgol.ItemIndex = 1 then editgapok.Text := '900000' else editgapok.Text := '1000000'; end; procedure TfrmGaji.EditjumlahanakChange(Sender: TObject); begin if editjumlahanak.text='' then editjumlahanak.text:='0'; edittanak.Text:=IntToStr(StrToInt(editjumlahanak.Text)*10000); end; procedure TfrmGaji.EditjumlahanakKeyPress(Sender: TObject; var Key: Char); begin if not (key in ['0'..'9',,,#8]) then key:=#0; end; procedure TfrmGaji.btnhitungClick(Sender: TObject); begin edittunj.Text := IntToStr(StrToInt(edittjabatan.Text)+StrToInt(edittanak.Text)); editpajak.Text:=FloatToStr(StrToFloat(editgapok.Text)*0.05); edittotal.Text:=FloatToStr(StrToFloat(editgapok.Text)+StrToFloat(edittunj.Text)StrToFloat(editPajak.Text)); end;

Soal 12 : Disainlah form seperti tampilan di samping ini. Setting property pada form sebagai berikut : Name : frmDemo ; Caption : DemoScrollBar; Color : clSkyBlue. Tambahkan groupbox dan sebuah label di dalamnya. Kosongkan property Caption pada groupbox. Pada label setting captionnya dengan Pemrograman Delphi dan Name dengan lblTeks. Tambahkan sebuah groupbox di bawah kemudian ubah captionnya dengan Huruf; dan Name dengan grbHuruf. Tambahkan 3 buah checkbox ke dalam groupbox.Setting property caption masingmasing checkbox dengan Bold, Italic dan Underline. Setting pula property name masing-masing dengan chkbold, chkitalic, dan chkunderline. Tambahkan sebuah groupbox, setting property name dengan grbsize dan caption dengan Ukuran Huruf. Tambahkan sebuah combobox di dalamnya dan ubah Namenya dengan cbosize dan kosongkan property Textnya. Selanjutnya tambahkan sebuah radiogroup setting property Name dengan rdgwarna. Setting caption dengan Warna dan Items dengan BackColor dan ForeColor. Tambahkan sebuah groupbox kemudian ubah property caption dengan RGB. Tambahkan 3 buah label dan 3 buah scrollbar dalam groupbox RGB ini. Untuk scrollbar setting property Name dengan scbRed, scbGreen dan scbBlue. Setting juga property LargeChange dengan 50. Terakhir, tambahkan sebuah button setting namenya dengan btnganti dan caption dengan Ganti Huruf. Tambahkan sebuah bitbtn, ganti Kind dengan bkClose. Pengkodeannya adalah sebagai berikut :
unit DemoScrollBar; interface

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 26

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls; type TfrmDemo = class(TForm) grbTeks: TGroupBox; lblTeks: TLabel; rdgwarna: TRadioGroup; GroupBox2: TGroupBox; Scbred: TScrollBar; Scbgreen: TScrollBar; Scbblue: TScrollBar; Label1: TLabel; Label2: TLabel; Label3: TLabel; grbhuruf: TGroupBox; chkbold: TCheckBox; chkitalic: TCheckBox; chkunderline: TCheckBox; bitbtnclose: TBitBtn; grbsize: TGroupBox; cbosize: TComboBox; btnganti: TButton; procedure bitbtncloseClick(Sender: TObject); procedure ScbredChange(Sender: TObject); procedure chkboldClick(Sender: TObject); procedure chkitalicClick(Sender: TObject); procedure chkunderlineClick(Sender: TObject); procedure cbosizeChange(Sender: TObject); procedure FormCreate(Sender: TObject); procedure btngantiClick(Sender: TObject); procedure Aturwarna; private { Private declarations } public { Public declarations } end; var frmDemo: TfrmDemo; cTeks : string; implementation {$R *.dfm} procedure TfrmDemo.bitbtncloseClick(Sender: TObject); begin application.Terminate; end; procedure TFrmDemo.Aturwarna; var red,green,blue : integer; begin red:=scbred.position; green:=scbgreen.Position; blue:=scbblue.Position; if rdgwarna.ItemIndex = 0 then grbteks.Color := rgb(red,green,blue) else lblteks.Font.Color := rgb(red,green,blue); end; procedure TfrmDemo.ScbredChange(Sender: TObject); begin

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 27


aturwarna; end; procedure TfrmDemo.chkboldClick(Sender: TObject); begin if chkbold.State = cbchecked then lblteks.font.Style := lblteks.font.style + [fsbold] else lblteks.font.Style := lblteks.font.style - [fsbold]; end; procedure TfrmDemo.chkitalicClick(Sender: TObject); begin if chkitalic.State = cbchecked then lblteks.font.Style := lblteks.font.style + [fsitalic] else lblteks.font.Style := lblteks.font.style - [fsitalic]; end; procedure TfrmDemo.chkunderlineClick(Sender: TObject); begin if chkunderline.State = cbchecked then lblteks.font.Style := lblteks.font.style + [fsunderline] else lblteks.font.Style := lblteks.font.style - [fsunderline]; end; procedure TfrmDemo.cbosizeChange(Sender: TObject); begin lblteks.Font.Size := StrToInt(cbosize.Text); end; procedure TfrmDemo.FormCreate(Sender: TObject); var i:byte; begin For i:=8 to 72 do cbosize.Items.Add(IntToStr(i)); cbosize.ItemIndex := 0; end; procedure TfrmDemo.btngantiClick(Sender: TObject); begin cTeks:=Inputbox('Ubah Teks','Masukkan Teks :',''); lblteks.Caption := cTeks; end; end.

Soal 13 Buatlah form dengan tampilan berikut ini ! Untuk komponen pada form dapat dilihat pada bagian disain form. Ketentuan proses : Selanjutnya untuk pengkodeannya adalah sebagai berikut : Gaji pokok berdasarkan golongan karyawan : 1. Jika golongan = I maka gaji pokok = 800000 2. Jika golongan = II maka gaji pokok = 1500000 3. Jika golongan = III maka gaji pokok = 1000000. Nama bagian dan Tunjangan berdasarkan golongan karyawan : 1. Jika Bagian = FIN maka nama bagian = Keuangan dan Tunjangan = 75000. 2. Jika Bagian = EDP maka nama bagian = Electronic Data Processing dan Tunjangan = 50000. 3. Jika Bagian = PSN maka nama bagian = Personalia dan Tunjangan = 50000. 4. Jika Bagian = PJL maka nama bagian = Penjualan dan Tunjangan = 75000. 5. Jika Bagian = PBL maka nama bagian = Pembelian dan Tunjangan = 50000. Gaji Kotor = Gaji Pokok + Tunjangan. Pajak = 5% * Gaji Kotor. Gaji Bersih = Gaji Kotor Pajak.
unit DataKry; interface

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 28

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, ExtDlgs; type TfrmDataKry = class(TForm) Timer1: TTimer; imgfoto: TImage; OpenPictureDialog1: TOpenPictureDialog; btnfoto: TButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; EditNIK: TEdit; EditNama: TEdit; memoAlamat: TMemo; Label4: TLabel; lstgol: TListBox; Label5: TLabel; editgapok: TEdit; Label6: TLabel; cboBagian: TComboBox; editnamabag: TEdit; edittunj: TEdit; Label7: TLabel; Label8: TLabel; editbruto: TEdit; Label9: TLabel; Editpajak: TEdit; Editnetto: TEdit; Label10: TLabel; btnproses: TButton; btnkosong: TButton; btnkeluar: TButton; procedure Timer1Timer(Sender: TObject); procedure FormActivate(Sender: TObject); procedure lstgolClick(Sender: TObject); procedure cboBagianClick(Sender: TObject); procedure btnfotoClick(Sender: TObject); procedure btnkosongClick(Sender: TObject); procedure btnkeluarClick(Sender: TObject); procedure btnprosesClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmDataKry: TfrmDataKry; cCaption : string; direction : byte; totcounter, counter : integer; implementation {$R *.dfm} procedure TfrmDataKry.Timer1Timer(Sender: TObject); begin frmDataKry.caption := copy(cCaption,1,counter); IF counter>totcounter then direction:=2; IF counter=0 then direction:=1;

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 29


CASE direction of 1 : inc(counter); 2 : begin frmDataKry.Caption := ''; counter:=0 end; end; end; procedure TfrmDataKry.FormActivate(Sender: TObject); begin cCaption := frmDataKry.Caption; counter:=0; totcounter := Length(cCaption); end; procedure TfrmDataKry.lstgolClick(Sender: TObject); begin if lstgol.ItemIndex = 0 then editgapok.Text:='800000' else if lstgol.ItemIndex = 1 then editgapok.Text:='1500000' else editgapok.Text:='1000000'; end; procedure TfrmDataKry.cboBagianClick(Sender: TObject); begin case cboBagian.ItemIndex of 0 : begin editnamabag.Text:='Keuangan'; edittunj.Text:='50000'; end; 1 : begin editnamabag.Text:='Electronic Data Processing'; edittunj.Text:='75000'; end; 2 : begin editnamabag.Text:='Personalia'; edittunj.Text:='50000'; end; 3 : begin editnamabag.Text:='Penjualan'; edittunj.Text:='75000'; end; 4 : begin editnamabag.Text:='Pembelian'; edittunj.Text:='50000'; end; end; end; procedure TfrmDataKry.btnfotoClick(Sender: TObject); begin if openpicturedialog1.Execute then if openpicturedialog1.FileName <> '' then imgfoto.Picture.LoadFromFile(openpicturedialog1.FileName) else imgfoto.Picture := NIL; end; procedure TfrmDataKry.btnkosongClick(Sender: TObject); begin editNik.Text:=''; editNama.Text:=''; memoAlamat.Text :=''; editbruto.Text:=''; editnetto.text:=''; editpajak.Text:=''; edittunj.Text:=''; editnamabag.Text:=''; editgapok.Text:='';

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 30


end; procedure TfrmDataKry.btnkeluarClick(Sender: TObject); begin application.Terminate; end; procedure TfrmDataKry.btnprosesClick(Sender: TObject); begin editbruto.Text:=FloatToStr(StrToFloat(editgapok.Text) + StrToFloat(edittunj.Text)); editpajak.Text:=FloatToStr(0.05*StrToFloat(editbruto.Text)); editnetto.Text:=FloatToStr(StrToFloat(editBruto.text) StrToFloat(editPajak.Text)); Timer List end;

box

Image OpenpictureDialog

Combo box

Tambahan : Buatlah validasi untuk tiap komponen yang diperlukan ! Soal 14 Soal ini merupakan modifikasi dari Soal 2 dimana penggunaan komponen edit diganti dengan komponen maskedit (untuk NIM, Nama, Alamat, Telepon dan Tanggal Lahir). Tambahkan pula komponen openpicturedialog (dari tab Dialogs), image dan sebuah button (Masukkan foto).Sesuaikan property name tiaptiap komponen dengan pengkodean di bawah ini! Pada komponen maskedit sesuaikan property Editmask seperti tampilan tabel berikut ini : Komponen EditMaskNim EditMaskNama EditMaskAlamat EditMaskTelepon EditMaskTglLahir EditMask 99999999;1;_ >L<llllllllllllll;1;_ >L<lllllllllllllllllll;1;_ !\(9999\)000000;1;_ !99/99/0000;1;_ AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 31


procedure TfrmBiodata.btnkeluarClick(Sender: TObject); begin application.Terminate; end; procedure TfrmBiodata.btnfotoClick(Sender: TObject); begin if openpicturedialog1.Execute then if openpicturedialog1.FileName <> '' then imgfoto.Picture.LoadFromFile(openpicturedialog1.FileName) else imgfoto.Picture := NIL; end;

Soal 15 Program berikut merupakan modifikasi penggunaan editmask untuk program sebelumnya (Hitung Grade). Adapun komponen yang diganti adalah untuk komponen nilai (Mid, UA, TT, dan Abs, TotNil, dan Grade) yang semula menggunakan edit digantikan dengan editmask dengan setting property editmask : 999,99. Untuk editmaskGrade disetting A. Adapun pengkodeannya adalah sebagai berikut :
Function HitungNilai(abs,tt,mid,ua : real):real; begin HitungNilai := (abs*0.1) + (tt*0.2) + (mid*0.3) + (ua*0.4); end; procedure TfrmNilai.btnhitungClick(Sender: TObject); begin maskedittotNil.Text := FloatToStr(HitungNilai(StrToFloat(maskeditabs.Text), StrToFloat(maskeditTt.Text),StrToFloat(maskeditMid.Text),StrToFloat(maskeditUa.Text))); if StrToFloat(maskeditTotNil.Text)>=80 then maskeditGrade.Text:='A' else if StrToFloat(maskeditTotNil.Text)>=70 then maskeditGrade.Text:='B' else if StrToFloat(maskeditTotNil.Text)>=60 then maskeditGrade.Text:='C' else if StrToFloat(maskeditTotNil.Text)>=50 then maskeditGrade.Text:='D' else maskeditGrade.Text:='E'; end; procedure TfrmNilai.btnkosongkanClick(Sender: TObject); begin editNim.text:=''; editNama.text:=''; maskeditAbs.text:=''; maskeditMid.text:='';maskeditUa.text:='';maskeditTt.text:=''; maskeditGrade.text:='';maskeditTotNil.text:=''; editKet.text:=''; cbobagian.Itemindex := -1; end; procedure TfrmNilai.FormActivate(Sender: TObject); begin maskeditabs.Text:='000,00'; maskedittt.Text:='000,00'; maskeditmid.Text:='000,00'; maskeditua.Text:='000,00'; maskedittotnil.Text:='000,00'; end; procedure TfrmNilai.btnkeluarClick(Sender: TObject); begin application.Terminate; end;

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 32

BAGIAN V : MENU
Menu pada dasarnya dapat dibedakan atas 2 jenis yaitu : menu pulldown dan menu popup. Menu pulldown pada dasarnya merupakan penggabungan beberapa menu popup hingga membentuk suatu kesatuan (klasifikasi) tugas atau fungsi tertentu. Umumnya definisi pop up menu dijelaskan sebagai hide menu yang akan ditampilkan dengan tombol tertentu (biasanya klik kanan pada mouse). Untuk membuat menu utama dapat dibuat dengan memilih komponen mainmenu kemudian menambahkannya ke form. Membuat Menu 1. Setelah ditambahkan pada form klik ganda pada komponen mainmenu pada form. Cara lain adalah dengan memilih property Items pada object inspector. Kemudian akan ditampilkan menu designer seperti gambar di samping ini : 2. Untuk menambahkan item menu klik pada object inspector kemudian pilih property caption. Isikan dengan &Menu1. 3. Kemudian tambahkan sub item pada menu &Menu1 seperti tampilan berikut ini :

Untuk memberikan bar (garis) maka caption pada item menu diisikan dengan -. Tambahkan satu menu popup dengan caption Menu2 dan item menu sebanyak 5 buah.

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 33 Property Checked, Enabled dan ShortCut Property Checked pada TMenuItem digunakan untuk memberi atau menghilangkan cek sign pada suatu item menu. Jika bernilai true maka item menu tersebut akan ditandai tanda cek dan sebaliknya jika bernilai false maka akan item menu tidak akan diceklis. Property enabled digunakan untuk mengaktifkan atau menonaktifkan suatu item menu. Jika item menu tidak aktif maka item menu tersebut biasanya akan berwarna gray. Property shortcut digunakan untuk menentukan shortcut yang akan digunakan untuk memilih item dalam menu. Untuk menentukan shortcut maka pilih item menu kemudian ubah property shortcut pada object inspector. Tampilan shortcut kemudian akan muncul di sebelah kanan item menu. Membuat Menu Mengapung (Floating Menu) Untuk membuat floating menu tambahkan komponen TPopUpMenu pada form. Kemudian desainlah item menu apa yang akan ditampilkan pada floating menu. Umumnya floating menu berupa menu yang hidden yang akan ditampilkan biasanya dengan klik kanan pada mouse. Berikut ini adalah contoh penggunaan popup menu : Disainlah pop up menu dengan tampilan seperti berikut ini :

Tambahkan komponen shape pada form. Setting property Name untuk komponen TPopUpMenu dengan PopUpWarna. Setting property name untuk form dengan frmPopUpMenu dan Caption dengan Contoh Pop Up Menu, dan setting property PopUpMenu dengan PopUpWarna. Untuk menghubungkan menu pop up dengan form dilakukan dengan memilih object inspector kemudian klik pilihan di sebelah kanan property Pop Up Menu. Event On Context PopUp digunakan untuk mengatur event tertentu pada komponen ketika tombol mouse kanan diklik Dengan mensetting event ini maka menu popup dapat diatur agar terhubung dengan komponen itu sendiri. Pada bagian deklarasi variabel tambahkan sebuah variabel global dengan nama Komponen dan bertipe byte. Nilai 0 pada variabel ini berarti komponen form dan 1 berarti komponen shape itu sendiri. Kemudian klik pada komponen shape dan pilih event On Context Pop Up pada object inspector. Isikan kode program berikut ini : AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 34

procedure TfrmPopUpMenu.Shape1ContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean); begin Komponen := 1; //berarti shape end; Pada masing-masing pilihan item popup menu tambahkan kode program berikut ini : procedure TfrmPopUpMenu.PopUpMerahClick(Sender: TObject); begin case komponen of 0 : color:=clred; 1 : shape1.Brush.Color := clred; end; komponen := 0; end; procedure TfrmPopUpMenu.PopUpHijauClick(Sender: TObject); begin case komponen of 0 : color:=clgreen; 1 : shape1.Brush.Color := clgreen; end; komponen := 0; end; Tampilan hasilnya adalah seperti berikut ini : procedure TfrmPopUpMenu.PopUpBiruClick(Sender: TObject); begin case komponen of 0 : color:=clblue; 1 : shape1.Brush.Color := clblue; end; komponen := 0; end;

Fungsi MessageDlg Adalah fungsi yang digunakan untuk menampilkan kotak dialog pesan pada tengah screen. Kotak dialog ini dapat menampilkan tombol Yes dan No, ataupun tombol yang lain. Deklarasinya adalah sebagai berikut : function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Word; Parameter pertama, digunakan untuk menampilkan pesan dalam bentuk string. Parameter kedua, digunakan untuk menentukan judul kotak dialog dan icon pada kotak dialog. Nilai yang dapat digunakan dalam parameter ini berupa : Nilai mtWarning Keterangan Kotak pesan yang menampilkan simbol peringatan. AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 35 mtError Kotak pesan yang menampilkan tanda kesalahan. mtInformation Kotak pesan yang menyatakan informasi mtConfirmation Kotak pesan yang menyatakan suatu konfirmasi. mtCustom Digunakan untuk menampilkan kotak pesan tanpa icon. Parameter ketiga berupa tombol-tombol yang disertakan pada kotak dialog. Parameter ini berupa tipe himpunan (set) yang dapat berupa : Nilai Keterangan Nilai Keterangan mbYes Tombol Yes mbNo Tombol No mbOk Tombol Ok mbCancel Tombol Cancel mbAbort Tombol Abort mbRetry Tombol Retry mbIgnore Tombol Ignore mbAll Tombol All mbNoToAll Tombol No To All mbYesToAll Tombol Yes To All mbHelp Tombol Help Berhubungan dengan parameter ini, secara default telah disediakan tiga konstanta untuk keperluan ini yaitu : mbYesNoCancel, mbOKCancel, dan mbAbortRetryIgnore. Parameter keempat digunakan untuk menentukan nomor identitas topik Help yang akan ditampilkan jika tombol Help diklik. Secara default diberi nomor 0. Fungsi MessageDlg akan mengembalikan nilai berupa tipe data word. Hasil yang dihasilkan dapat berupa : Nilai Keterangan Nilai Keterangan mrNone Tidak ada yang dipilih mrAbort Tombol abort yang dipilih mrYes Tombol Yes yang dipilih mrOk Tombol Ok yang dipilih mrRetry Tombol Retry yang dipilih mrNo Tombol No yang dipilih mrCancel Tombol Cancel yang dipilih mrIgnore Tombol Ignore yang dipilih mrAll Tombol All yang dipilih Fungsi InputBox, digunakan untuk menampilkan kotak dialog berisi sebuah kotak edit tempat mengisikan teks atau string sebagai input. Deklarasinya adalah sebagai berikut : function InputBox(const ACaption, APrompt, ADefault: string): string; const ACaption merupakan teks yang akan ditulis sebagai judul kotak input pada title bar. APrompt adalah teks yang ditulis untuk menerangkan data input pada editbox yang nantinya akan dimasukkan. ADefault adalah nilai awal yang akan muncul pada editbox sebagai standard inputbox.

BAGIAN VI : PEMROGRAMAN DATABASE DENGAN DELPHI


Komponen Database Dalam Delphi IDE, komponen database diklasifikasikan dalam dua page pada component pallete yaitu : Page Data Access dan Page Data Controls. Komponen Data Access termasuk komponen non visual, merupakan komponen yang secara langsung berhubungan dengan database (file secara fisik). Komponen yang ada pada page Data Access di Component Pallete yang akan digunakan dalam aplikasi database ini adalah : TDataSource, sebagai penghubung antara data access components dengan data aware visual control TTable, sebagai datasource yang mengakses record dari table TQuery, sebagai datasource yang mengakses record dari table berdasarkan perintah SQL query. AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 36 Komponen Data Control adalah komponen visual yang juga merupakan komponen data aware (visual control). Beberapa komponen yang termasuk data control antara lain : TDBGrid, TDBNavigator, TDBText, TDBEdit, TDBMemo, TDBImage, TDBListbox, TDBComboBox, TDBCheckbox, TDBRadioGroup, TDBLookupListbox, TDBLookupComboBox, TDBCtrlGrid. Cara Kerja Komponen Database 1. Tempatkan sebuah Dataset (TTable atau TQuery). Setting property Database dan property TableName. Untuk mengaktifkan table setting property Active menjadi true. 2. Tempatkan sebuah Datasource. Isi property DataSet dengan nama komponen yang dibuat pada langkah 1. 3. Untuk menampilkan data yang dibutuhkan dibutuhkan komponen visual seperti Edit, DBEdit, dan lainnya. Setting property DataSource dengan nama komponen yang disebutkan pada langkah 2. Pilih field dengan mengubah propery Field.
B D E

Database

Dataset

DataSource

Data Control

Gambar Alur Kerja Komponen Database

TTable
Komponen ini merupakan komponen dasar dalam pemrograman database yang merupakan turunan dari TDataset. Beberapa property TTable yang penting adalah : DatabaseName, adalah nama dari database yang digunakan. TableName, adalah nama tabel yang digunakan dalam form atau aplikasi. IndexFieldNames, digunakan untuk menentukan index field yang digunakan dalam aplikasi. Yang disetting pada property ini adalah nama field. Jika property ini dikosongkan maka record akan diurutkan menurut index utama (primary key). Jika property ini terisi maka property IndexName akan otomatis dikosongkan. IndexName, berfungsi identik dengan IndexFieldNames. Yang disetting pada property ini adalah Nama index . Active, berfungsi menyimpan informasi terbuka (aktif) tidaknya sebuah table. Fungsi property ini identik dengan penggunaan method Open : Contoh : table1.active := True {sama dengan table1.open;} ReadOnly. Jika diset True maka berarti record dalam table tidak dapat dilakukan proses read atau write dan hanya dapat diread. Filtered. Jika property ini bernilai True maka berarti table dalam keadaan terfilter berdasarkan kondisi filterisasi pada property Filter. Filter, adalah property tempat menyimpan kondisi (syarat) filterisasi. Penggunaan filterisasi record dengan Filter ini hanya dapat digunakan untuk menyatakan kondisi yang dinyatakan dengan satu baris string sedangkan jika terdapat kondisi lebih dari satu baris maka harus digunakan event OnFilterRecord. Untuk melakukan pencarian data yang terdapat dalam table maka dapat digunakan beberapa method : GotoKey, FindKey, Locate. Untuk mengakses field dapat dilakukan dengan beberapa cara : 1. Namatable[namafield] => Cth : table1[Category]; 2. Namatable.fieldbyName(namafield).value => Cth : table1.fieldbyName(Category).value; 3. Namatable.fieldvalues[namafield] => Cth : table1.fieldvalues[Category]; 4. Namatable.field[nourutindeks].asTipeData => Cth : table1.field[0].AsString; 5. Namatable.fieldbyName(namafield).asTipedata Cth : table1.fieldbyName(Category).AsInteger; Manipulasi Record Pada Table AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 37 1. Menyisipkan record, digunakan method Insert. Cth : table1.Insert; Table1[Category] := Ikan Mas; 2. Membatalkan penyisipan record, digunakan method Cancel Cth : Procedure TForm1.Table1BeforePost(DataSet : TDataSet); Begin If Dataset[Length (cm)]<=10 then Begin table1.Cancel; Raise EDatabaseError.create(Panjang ikan < 10); End; End; 3. Mengubah record, digunakan method Edit. Cth : table1.Edit; Table1[Category] := Ikan Mas; Table1.Post; 4. Menghapus Record, digunakan method Delete. Cth : table1.delete; 5. Menambah Record, digunakan method Append. Cth : Table1.Append; Table1[Category] := Ikan Mas; Table1.Post; Navigator Method 1. Untuk pindah ke record terawal digunakan method First. Cth : table1.first; 2. Untuk pindah ke record terakhir digunakan method Last. Cth : table1.last; 3. Untuk pindah ke record sebelumnya digunakan method Prior. Cth : table1.Prior; 4. Untuk pindah ke record berikutnya digunakan method Next. Cth : table1.Next; 5. MoveBy[i], pindah ke record sebanyak inc(i). Pada saat table ditampahkan ke dalam aplikasi, secara default semua field yang ada dalam table tersebut ditambahkan dalam TField. Jika field tertentu tidak akan ditampilkan dalam aplikasi dapat dilakukan dengan cara : Klik kanan pada komponen table kemudian akan muncul Fields Editor. Untuk menambahkan field dari dataset dapat dilakukan dengan klik kanan kemudian memilih Add Field.

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 38 Membuat Field Baru (New Field Persistent). Terdapat 3 jenis field persistent yaitu : DataFields, Calculated Fields, dan LookupFields. Pada field editor klik kanan kemudian pilih New Field. Kemudian akan muncul kotak dialog seperti berikut :

DBNavigator Secara berurutan kegunaan tombol dalam DBNavigator adalah : First Record, record pertama Prior Record, record sebelumnya. Next Record, record berikutnya Last Record, record terakhir. Insert Record, menyisipkan record. Delete Record, menghapus record. Edit Record, mengubah record. Post Record, menyimpan record. Cancel Record, membatalkan perubahan. Refresh Record, mengaktualkan record (membaca ulang record). Property yang paling penting dalam DBNavigator adalah DataSource yang digunakan untuk menghubungkan komponen dengan Dataset. Soal 1

Tambahkan sebuah table dan datasource pada form. Pada table kemudian setting property DatabaseName dengan DBDemos dan TableName dengan Animal.Dbf. Setting pula property Name dengan tblDemos. Pada Datasource setting property Dataset dengan tblDemos dan name dengan dsDemos. Tambahkan DBNavigator pada form kemudian setting property Datasource dengan dsDemos. Tambahkan sebuah DBGrid pada form kemudian setting property Datasource dengan dsDemos. AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 39 Tambahkan sebuah DBImage kemudian setting property Datasource dengan dsDemos dan Datafield dengan BMP. Tambahkan komponen DBEdit kemudian setting property Datasource dengan dsDemos dan Datafield dengan Area. Terakhir tambahkan sebuah bitbutton atur captionnya dengan Exit, Kind dengan bkclose dan berikan code untuk keluar dari aplikasi. Aktifkan table dengan mensetting property Active pada table menjadi True. Soal 2

Tambahkan sebuah table dan datasource pada form. Pada table kemudian setting property DatabaseName dengan DBDemos dan TableName dengan Vendor.db. Setting pula property Name dengan tblVendor. Pada Datasource setting property Dataset dengan tblVendor dan name dengan dsVendor. Tambahkan sebuah DBGrid pada form kemudian setting property Datasource dengan dsVendor. Tambahkan 5 buah button kemudian sesuaikan captionnya dengan tampilan dan namenya dengan code program berikut ini :
procedure TForm1.btnKeluarClick(Sender: TObject); begin application.Terminate; end; procedure TForm1.FormActivate(Sender: TObject); begin tblVendor.Active := true; end; procedure TForm1.btnAwalClick(Sender: TObject); begin tblVendor.First; btnawal.Enabled := false; btnsebelum.Enabled := false; btnterakhir.Enabled := true; btnberikut.Enabled := true; end; procedure TForm1.btnBerikutClick(Sender: TObject); begin if not tblVendor.Eof then begin tblVendor.Next; btnawal.Enabled := true; btnterakhir.Enabled := true; btnsebelum.Enabled := true;

procedure TForm1.FormClose(Sender : TObject); begin tblVendor.Active := false; end; procedure TForm1.btnTerakhirClick(Sender: TObject); begin tblVendor.Last; btnterakhir.Enabled := false; btnberikut.Enabled := false; btnawal.Enabled := true; btnsebelum.Enabled := true; end; btnberikut.Enabled := true end else begin btnberikut.Enabled := false; btnterakhir.Enabled := false; end; end;

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 40


procedure TForm1.btnSebelumClick(Sender: TObject); begin if not tblVendor.Bof then begin tblVendor.Prior; btnawal.Enabled := true; btnterakhir.Enabled := true; btnsebelum.Enabled := true; btnberikut.Enabled := true end else begin btnsebelum .Enabled := false; btnawal.En abled := false; end; end;

Soal 3

Tambahkan sebuah table dan datasource pada form. Pada table kemudian setting property DatabaseName dengan DBDemos dan TableName dengan Employee.db. Setting pula property Name dengan tblEmployee. Pada Datasource setting property Dataset dengan tblEmployee dan name dengan dsEmployee. Tambahkan semua field pada field editor. Tambahkan sebuah DBGrid pada form kemudian setting property Datasource dengan dsEmployee.Tambahkan 4 buah button kemudian sesuaikan captionnya dengan tampilan dan namenya dengan code program berikut ini :
procedure TForm1.btntambahClick(Sender: TObject); begin form2:=TForm2.create(self); with form2 do begin editEmpNo.text:=''; editLast.text:=''; editFirst.text:=''; editPhone.text:=''; editHire.text:=DateToStr(date); editSalary.text:=''; caption:='Menambah Data'; Activecontrol:=editEmpNo; end; form2.ShowModal; if (form2.ModalResult=mrok) then with tblEmployee, form2 do begin append; fieldbyname('EmpNo').Asstring:=editEmpNo.text; fieldbyname('LastName').Asstring:=editLast.text; fieldbyname('FirstName').Asstring:=editFirst.text; fieldbyname('PhoneExt').Asstring:=editPhone.text; fieldbyname('HireDate').Asstring:=editHire.text; fieldbyname('Salary').Asstring:=editSalary.text; post; end; form2.Free; end;

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 41

procedure TForm1.btnkeluarClick(Sender: TObject); begin application.Terminate; end; procedure TForm1.btnubahClick(Sender: TObject); begin form2:=TForm2.create(self); with form2 do begin editEmpNo.text:=tblEmployee.Fields[0].AsString; editLast.text:=tblEmployee.Fields[1].AsString; editFirst.text:=tblEmployee.Fields[2].AsString; editPhone.text:=tblEmployee.Fields[3].AsString; editHire.text:=tblEmployee.Fields[4].AsString; editSalary.text:=tblEmployee.Fields[5].AsString; caption:='Mengubah Data'; Activecontrol:=editEmpNo; end; form2.ShowModal; if (form2.ModalResult=mrok) then with tblEmployee, form2 do begin edit; fieldbyname('EmpNo').Asstring:=editEmpNo.text; fieldbyname('LastName').Asstring:=editLast.text; fieldbyname('FirstName').Asstring:=editFirst.text; fieldbyname('PhoneExt').Asstring:=editPhone.text; fieldbyname('HireDate').Asstring:=editHire.text; fieldbyname('Salary').Asstring:=editSalary.text; post; end; form2.Free; end; procedure TForm1.btnhapusClick(Sender: TObject); begin if MessageDlg('Data Employee ini akan Dihapus ?',mtconfirmation,[mbYes,mbNo],0) = mrYes then tblEmployee.Delete; end;

Untuk form kedua pilih menu File | New | Form. Disainlah form seperti tampilan di atas! Sesuaikan nama komponen edit dengan nama pada code sebagai berikut : editEmpNo, editLast, editFirst, editPhone, editHire, editSalary. Pada saat runtime pertama kali akan ditampilkan kotak dialog yang mengkonfirmasikan bahwa unit pada form kedua perlu disertakan pada form pertama. Untuk melanjutkan jawab dengan Yes maka unit tersebut akan disertakan pada form pemanggil. Database Desktop Contoh berikut akan dibuat tabel dengan struktur tabel sebagai berikut :

Pilih menu Tools | Database Desktop. Dari menu utama Database Desktop pilih menu File | New | Table. Kemudian pilih jenis database yang akan dibuat. Untuk contoh ini gunakan standard Paradox. Kemudian klik Ok. AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 42 Pada jendele Create Paradox isikan field-field yang diperlukan pada field name. Untuk Type dapat dipilih dengan mengklik kanan tombol mouse atau menekan tombol spasi kemudian memilih tipe data yang diperlukan. Untuk size isikan sesuai rancangan tabel dan untuk key (primary) dapat dipilih dengan menekan spasi. Setelah semua field diisi, pilih Save As untuk menyimpan tabel. Membuat Alias Alias database digunakan untuk memberi nama logic sebuah folder yang akan digunakan pada setting property DatabaseName pada komponen TTable. Untuk membuka kotak dialog Alias Manager pilih Menu Tools | Alias Manager dari Database Desktop. Pilih tombol New kemudian isikan Database Alias dengan Library. Isikan path dengan nama folder tempat disimpan table Buku. Kemudian klik tombol Ok.

Query SQL dalam Delphi dibagi dalam dua yaitu Static SQL dan Dynamic SQL. Static SQL adalah perintah SQL yang disetting langsung pada String Editor di property SQL pada komponen TSQL. Dengan kata lain static SQL adalah SQL yang dibuat pada saat design time. Sedangkan dynamic SQL adalah perintah SQL yang dituliskan pada code program atai dibuat pada saat run-time.

QREPORT
Untuk membuat sebuah report diperlukan paling tidak sebuah dataset (TTable atau TQuery). Dan untuk membuat laporan format detail-header dibutuhkan dua buah dataset (TTable atau TQuery) dan sebuah datasource. Band Pada Report QReport membagi report menjadi beberapa band yaitu : Page Header, band yang dicetak di bagian atas setiap kertas. Umumnya ditempatkan judul laporan dan keterangan lainnya. Title, band yang dicetak setelah page header dan dicetak hanya pada halaman pertama saja. Column Header, judul baris yang dicetak. Digunakan untuk menempatkan judul field. Detail Band, digunakan untuk melakukan pencetakan berulang record. Ditempatkan field dari dataset. PageFooter, dicetak di setiap halaman di bagian bawah. Summary, dicetak di bagian terakhir laporan biasanya untuk menempatkan total perhitungan dari laporan tersebut.

1 2 3 4 5 6 7 8 Komponen QReport 1. QuickRep, merupakan form dasar dari setiap laporan yang dibuat. 2. QRBand, merupakan komponen dasar dari semua band yang ada. Komponen ini dapat disetting menjadi band tertentu sesuai kebutuhan : rbTitle, rbColumnHeader, rbDetail, rbPageFooter, rbSummary, dan sebagainya dengan menset property BandType. 3. QRGroup, digunakan untuk mencetak laporan yang dibagi berdasarkan group (kelompok) tertentu. AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 43 4. QRLabel, digunakan untuk mencetak teks di laporan. Teks yang akan dicetak dapat disetting pada property caption. 5. QRDBText, digunakan untuk mencetak field dari dataset, calculated field, field string, field numerik dan date. 6. QRExpr, digunakan untuk mencetak hasil perhitungan rumus dari QReport. Misalnya subtotal, grandtotal, dan sebagainya. Untuk membuat formula dari komponen ini dapat disettting pada property Expression. 7. QRSysData, digunakan untuk mencetak informasi sistem seperti nomor halaman, tanggal dan jam, serta yang lainnya. 8. QRShape, untuk mencetak bentuk-bentuk sederhana seperti kotak, garis, lingkaran pada report. Studi Kasus. Berikut ini ditampilkan sebuah contoh aplikasi sederhana tentang Sistem Penyewaan VCD. Untuk keperluan program ini dibutuhkan 4 buah table dengan nama VCD, Pelanggan, HdSewa dan DtSewa. Untuk table temporer kita buat sebuah table bernama TempSewa. Adapun struktur tiap-tiap table ditunjukkan berikut ini : Table : VCD

Table Pelanggan

Table HdSewa

Table DtSewa

Table TempSewa

Menu Utama Rancangan menu dalam aplikasi ini adalah sebagai berikut : Form Menu utama berisi pilihan sebagai berikut :

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 44 Sub Menu File terdiri dari :

SubMenu Transaksi terdiri dari pilihan Penyewaan CD

SubMenu Laporan terdiri dari :

Dan submenu Utility terdiri dari pilihan Menu :

Selanjutnya beri name untuk form penampung menu di atas dengan frmmenu. Setting pula property WindowState dengan wsMaximized. Pada form tersebut tambahkan objek image (dari tab Additional VCL) kemudian letakkan di form. Setting property picture dengan gambar untuk background dari aplikasi. Untuk code program Menu utama adalah sebagai berikut : procedure Tfrmmenu.Keluar1Click(Sender: TObject); begin application.Terminate; end; procedure Tfrmmenu.Kalkulator1Click(Sender: TObject); begin winexec('c:\windows\system32\calc.exe',SW_SHOW); end; procedure Tfrmmenu.VCD1Click(Sender: TObject); begin frmcd.show; end; procedure Tfrmmenu.About1Click(Sender: TObject); begin application.MessageBox('Program Ini Dibuat Oleh:' + #13 + 'Nama : XXX ' + #13 + 'NPM : 99999999 ' + #13 + 'Kelas : XXX ','ABOUT',MB_ICONINFORMATION); end; procedure Tfrmmenu.Pelanggan1Click(Sender: TObject); begin AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 45 frmpelanggan.show; end; procedure Tfrmmenu.DaftarPenyewa1Click(Sender: TObject); begin frmdafpelanggan.QuickRep1.preview; end; procedure Tfrmmenu.DaftarCD1Click(Sender: TObject); begin frmdafvcd.quickrep1.preview; end; procedure Tfrmmenu.PeminjamanCD1Click(Sender: TObject); begin frmsewa.show; end; procedure Tfrmmenu.LaporanPenyewaanCD1Click(Sender: TObject); begin frmlapsewa.Query1.Open; frmlapsewa.quickrep1.preview; end; end. Hasil tampilan rancangan menu di atas adalah sebagai berikut ini :

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 46 Form VCD

Siapkan komponen pada form seperti tampilan di atas ! Koneksikan komponen datasource dengan table 1 (diberi name : tblVCD). Setting property tableName ke table VCD.db. Tambahkan komponen datasource beri name dengan dsVCD dan datasetnya ke tblVCD. Koneksikan pula komponen DBGrid (datasource = dsVCD). Sesuaikan tampilan bitbtn dan tampilan button seperti tampilan gambar di atas : Listing programnya adalah sebagai berikut : unit VCD; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, DB, DBTables, Grids, DBGrids; type Tfrmcd = class(TForm) Label1: TLabel; tblVCD: TTable; dsVCD: TDataSource; a: TStringField; tblVCDJudul: TStringField; tblVCDHarga: TFloatField; tblVCDJumlah: TFloatField; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; editkodevcd: TEdit; editjudul: TEdit; editharga: TEdit; editjumlah: TEdit; Bitbtnsimpan: TBitBtn; BitBtnbatal: TBitBtn; BitBtnkeluar: TBitBtn; AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 47 btnawal: TButton; btnberikut: TButton; btnsebelum: TButton; btnakhir: TButton; BitbtnTambah: TBitBtn; BitBtnUbah: TBitBtn; BitBtnHapus: TBitBtn; DBGrid1: TDBGrid; Label2: TLabel; procedure FormActivate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure BitBtnkeluarClick(Sender: TObject); procedure btnawalClick(Sender: TObject); procedure btnakhirClick(Sender: TObject); procedure btnberikutClick(Sender: TObject); procedure btnsebelumClick(Sender: TObject); procedure BitbtnTambahClick(Sender: TObject); procedure BitBtnbatalClick(Sender: TObject); procedure edithargaKeyPress(Sender: TObject; var Key: Char); procedure BitbtnsimpanClick(Sender: TObject); procedure BitBtnUbahClick(Sender: TObject); procedure BitBtnHapusClick(Sender: TObject); procedure DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure DBGrid1CellClick(Column: TColumn); procedure editkodevcdExit(Sender: TObject); procedure editjumlahKeyPress(Sender: TObject; var Key: Char); procedure editkodevcdChange(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmcd: Tfrmcd; lada, lProses : boolean; implementation uses Menu; {$R *.dfm} procedure kosong; begin frmcd.editkodevcd.Text := ''; frmcd.editjudul.text := ''; frmcd.editharga.text := '0'; frmcd.editjumlah.text := '0'; end; procedure tampil; begin frmcd.editkodevcd.Text := frmcd.tblVCD['kodevcd']; frmcd.editjudul.text := frmcd.tblvcd['judul']; frmcd.editharga.text := floattostr(frmcd.tblvcd['harga']); AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 48 frmcd.editjumlah.text := inttostr(frmcd.tblvcd['jumlah']); end; procedure aktifkan(x:boolean); begin frmcd.editkodevcd.Enabled := x; frmcd.editjudul.Enabled := x; frmcd.editharga.Enabled := x; frmcd.editjumlah.Enabled := x; end; procedure tombol(x:boolean); begin frmcd.Bitbtnsimpan.Enabled := not x; frmcd.Bitbtnbatal.Enabled := not x; frmcd.BitbtnTambah.Enabled := x; frmcd.BitbtnUbah.Enabled := x; frmcd.BitBtnHapus.Enabled := x; frmcd.BitBtnkeluar.Enabled := x; frmcd.btnawal.Enabled := x; frmcd.btnberikut.Enabled := x; frmcd.btnsebelum.Enabled := x; frmcd.btnakhir.Enabled := x; end; procedure Tfrmcd.editkodevcdExit(Sender: TObject); begin if length(editkodevcd.Text)<5 then begin application.MessageBox('Kode Tidak Lengkap, Harus 5 Digit', 'Validasi VCD',MB_ICONSTOP); editkodevcd.Text := ''; bitbtnbatal.OnClick(sender); end else begin if tblvcd.FindKey([editkodevcd.Text]) then begin application.MessageBox('Kode VCD Ini Telah Ada Dalam Database', 'Validasi VCD',MB_ICONSTOP); editkodevcd.Text := ''; editkodevcd.SetFocus; end else editjudul.SetFocus; end; end; procedure Tfrmcd.FormActivate(Sender: TObject); begin tblvcd.Open; aktifkan(false); tombol(true); if tblvcd.RecordCount > 0 then begin tblvcd.Last; tampil; end; end; AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 49 procedure Tfrmcd.FormClose(Sender: TObject; var Action: TCloseAction); begin tblvcd.Close; lproses:=false; end; procedure Tfrmcd.BitBtnkeluarClick(Sender: TObject); begin frmcd.Close; end; procedure Tfrmcd.btnawalClick(Sender: TObject); begin tblvcd.First; tampil; end; procedure Tfrmcd.btnakhirClick(Sender: TObject); begin tblvcd.last; tampil; end; procedure Tfrmcd.btnberikutClick(Sender: TObject); begin tblvcd.Next; tampil; end; procedure Tfrmcd.btnsebelumClick(Sender: TObject); begin tblvcd.prior; tampil; end; procedure Tfrmcd.BitbtnTambahClick(Sender: TObject); begin lada:=true; lProses:=false; aktifkan(true); Tombol(false); kosong; editkodevcd.SetFocus; end; procedure Tfrmcd.BitBtnbatalClick(Sender: TObject); begin kosong; aktifkan(false); tombol(true); lproses:=false; lada:=false; tblvcd.Last; tampil; end; procedure Tfrmcd.edithargaKeyPress(Sender: TObject; var Key: Char); begin if not ((key>='0') AND (key<='9') or (key=#8)) then key:=#0; end; procedure Tfrmcd.BitbtnsimpanClick(Sender: TObject); begin if (editkodevcd.text='') or (editjudul.Text='') or (editharga.text='0') or (editjumlah.text='0') then application.MessageBox('Isian Tidak Lengkap','Error',MB_ICONSTOP) else begin if not lproses then //tambah data begin AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 50 tblvcd.Append; tblvcd['Kodevcd']:=editkodevcd.Text; tblvcd['Judul']:=editjudul.Text; tblvcd['harga']:=strtofloat(editharga.Text); tblvcd['jumlah']:=strtoint(editjumlah.Text); tblvcd.Post; aktifkan(false); tombol(true); end else begin //edit data tblvcd.edit; tblvcd['Judul']:=editjudul.Text; tblvcd['harga']:=strtofloat(editharga.Text); tblvcd['jumlah']:=strtoint(editjumlah.Text); tblvcd.Post; aktifkan(false); tombol(true); end; if tblvcd.RecordCount > 0 then begin tblvcd.Last; tampil; end; end; lproses:=false; lada:=false; end; procedure Tfrmcd.BitBtnUbahClick(Sender: TObject); begin lada:=true; lProses:=true; aktifkan(true); editkodevcd.Enabled :=false; Tombol(false); editjudul.SetFocus; end; procedure Tfrmcd.BitBtnHapusClick(Sender: TObject); begin If tblvcd.RecordCount > 0 then If application.MessageBox('Data Ini Akan Dihapus?','Hapus Data', MB_ICONQUESTION OR MB_YESNO) = mrYes then tblvcd.Delete; end; procedure Tfrmcd.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if not tblvcd.Eof then tampil; end; procedure Tfrmcd.DBGrid1CellClick(Column: TColumn); begin if not tblvcd.Eof then tampil; end; procedure Tfrmcd.editjumlahKeyPress(Sender: TObject; var Key: Char); begin if not ((key>='0') AND (key<='9') or (key=#8)) then key:=#0; end; AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 51 procedure Tfrmcd.editkodevcdChange(Sender: TObject); begin if lada then if length(editkodevcd.text)=5 then editkodevcd.OnExit(editkodevcd); end; end.

Form Pelanggan

Siap kan komponen pada form seperti tampilan di atas ! Koneksikan komponen datasource dengan table 1 (diberi name : tblPlg). Setting property tableName ke table Pelanggan.db. Tambahkan komponen datasource beri name dengan dsPlg dan datasetnya ke tblPlg. Koneksikan pula komponen DBGrid (datasource = dsPlg). Listing programnya adalah sebagai berikut :
unit Pelanggan; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, DB, DBTables, Grids, DBGrids, Buttons; type Tfrmpelanggan = class(TForm) Label1: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; editkodeplg: TEdit; editnamaplg: TEdit; editalamat: TEdit; edittelp: TEdit; Bitbtnsimpan: TBitBtn;

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 52


BitBtnbatal: TBitBtn; BitBtnkeluar: TBitBtn; btnawal: TButton; btnberikut: TButton; btnsebelum: TButton; btnakhir: TButton; BitbtnTambah: TBitBtn; BitBtnUbah: TBitBtn; BitBtnHapus: TBitBtn; DBGrid1: TDBGrid; tblPlg: TTable; dsPelanggan: TDataSource; tblPlgKodeplg: TStringField; tblPlgNamaPlg: TStringField; tblPlgAlamat: TStringField; tblPlgTelepon: TStringField; tblPlgJk: TStringField; Label2: TLabel; rdgjk: TRadioGroup; procedure FormActivate(Sender: TObject); procedure BitbtnTambahClick(Sender: TObject); procedure BitBtnbatalClick(Sender: TObject); procedure editkodeplgExit(Sender: TObject); procedure BitbtnsimpanClick(Sender: TObject); procedure BitBtnUbahClick(Sender: TObject); procedure BitBtnHapusClick(Sender: TObject); procedure DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure DBGrid1CellClick(Column: TColumn); procedure btnsebelumClick(Sender: TObject); procedure btnakhirClick(Sender: TObject); procedure btnawalClick(Sender: TObject); procedure btnberikutClick(Sender: TObject); procedure editkodeplgChange(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmpelanggan: Tfrmpelanggan; lada, lProses : boolean; implementation uses VCD; {$R *.dfm} procedure kosong; begin frmpelanggan.editkodeplg.Text := ''; frmpelanggan.editnamaplg.text := ''; frmpelanggan.editalamat.text := ''; frmpelanggan.edittelp.text := ''; frmpelanggan.rdgjk.ItemIndex := -1 end; procedure tampil; begin frmpelanggan.editkodeplg.Text := frmpelanggan.tblPlg['kodeplg']; frmpelanggan.editnamaplg.text := frmpelanggan.tblPlg['namaplg']; frmpelanggan.editalamat.text := frmpelanggan.tblplg['Alamat']; frmpelanggan.edittelp.text := frmpelanggan.tblplg['telepon']; if frmpelanggan.tblplg['jk']='1' then frmpelanggan.rdgjk.ItemIndex := 0 else frmpelanggan.rdgjk.ItemIndex := 1;

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 53


end; procedure aktifkan(x:boolean); begin frmpelanggan.editkodeplg.Enabled := x; frmpelanggan.editnamaplg.Enabled := x; frmpelanggan.edittelp.Enabled := x; frmpelanggan.editalamat.Enabled := x; frmpelanggan.rdgjk.Enabled := x; end; procedure tombol(x:boolean); begin frmpelanggan.Bitbtnsimpan.Enabled := not x; frmpelanggan.Bitbtnbatal.Enabled := not x; frmpelanggan.BitbtnTambah.Enabled := x; frmpelanggan.BitbtnUbah.Enabled := x; frmpelanggan.BitBtnHapus.Enabled := x; frmpelanggan.BitBtnkeluar.Enabled := x; frmpelanggan.btnawal.Enabled := x; frmpelanggan.btnberikut.Enabled := x; frmpelanggan.btnsebelum.Enabled := x; frmpelanggan.btnakhir.Enabled := x; end; procedure Tfrmpelanggan.FormActivate(Sender: TObject); begin tblplg.Open; lProses:=false; aktifkan(false); tombol(true); if tblplg.RecordCount > 0 then begin tblplg.Last; tampil; end; end;

procedure Tfrmpelanggan.BitbtnTambahClick(Sender: TObject); begin lProses:=false; aktifkan(true); lada:=true; Tombol(false); kosong; editkodeplg.SetFocus; end; procedure Tfrmpelanggan.BitBtnbatalClick(Sender: TObject); begin kosong; aktifkan(false); tombol(true); lproses:=false; lada:=false; tblplg.Last; tampil; end; procedure Tfrmpelanggan.editkodeplgExit(Sender: TObject); begin if length(editkodeplg.Text)<5 then begin application.MessageBox('Kode Tidak Lengkap, Harus 5 Digit', 'Validasi Pelanggan',MB_ICONSTOP); bitbtnbatal.OnClick(sender); end else begin if tblplg.FindKey([editkodeplg.Text]) then begin application.MessageBox('Kode Pelanggan Ini Telah Ada Dalam Database', 'Validasi Pelanggan',MB_ICONSTOP); editkodeplg.Text := ''; editkodeplg.SetFocus; end else editnamaplg.SetFocus; end;

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 54


end; procedure Tfrmpelanggan.BitbtnsimpanClick(Sender: TObject); begin if (editkodeplg.text='') or (editnamaplg.Text='') or (editalamat.Text='') or (edittelp.text='') then application.MessageBox('Isian Tidak Lengkap','Error',MB_ICONSTOP) else begin if not lproses then //tambah data begin tblplg.Append; tblplg['Kodeplg']:=editkodeplg.Text; tblplg['namaplg']:=editnamaplg.Text; tblplg['alamat']:=editalamat.Text; tblplg['telepon']:=edittelp.Text; if rdgjk.ItemIndex = 0 then tblplg['jk']:=1 else tblplg['jk']:=2; tblplg.Post; aktifkan(false); tombol(true); end else begin //edit data tblplg.edit; tblplg['namaplg']:=editnamaplg.Text; tblplg['alamat']:=editalamat.Text; tblplg['telepon']:=edittelp.Text; if rdgjk.itemindex = 0 then tblplg['jk']:=1 else tblplg['jk']:=2; tblplg.Post; aktifkan(false); tombol(true); end; if tblplg.RecordCount > 0 then begin tblplg.Last; tampil; end; end; lada:=false; lproses:=false; end; procedure Tfrmpelanggan.BitBtnUbahClick(Sender: TObject); begin lProses:=true; aktifkan(true); lada:=true; editkodeplg.Enabled :=false; Tombol(false); editnamaplg.SetFocus; end; procedure Tfrmpelanggan.BitBtnHapusClick(Sender: TObject); begin If tblplg.RecordCount > 0 then If application.MessageBox('Data Ini Akan Dihapus?','Hapus Data', MB_ICONQUESTION OR MB_YESNO) = mrYes then tblplg.Delete; end; procedure Tfrmpelanggan.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if not tblplg.Eof then tampil; end; procedure Tfrmpelanggan.DBGrid1CellClick(Column: TColumn); begin

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 55


if not tblplg.Eof then tampil; end; procedure Tfrmpelanggan.btnsebelumClick(Sender: TObject); begin tblplg.prior; tampil; end; procedure Tfrmpelanggan.btnakhirClick(Sender: TObject); begin tblplg.last; tampil; end; procedure Tfrmpelanggan.btnawalClick(Sender: TObject); begin tblplg.first; tampil; end; procedure Tfrmpelanggan.btnberikutClick(Sender: TObject); begin tblplg.next; tampil; end; procedure Tfrmpelanggan.editkodeplgChange(Sender: TObject); begin if lada then begin if length(editkodeplg.text)=5 then editkodeplg.OnExit(editkodeplg); end; end; end.

Form Penyewaan CD

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 56 Siapkan komponen pada form seperti tampilan di atas ! Tambahkan komponen TTable ( diberi name : tblPlg, tblVCD, tblHdSewa, tblDtSewa, dan tblTemp) dan datasource (dsTemp). Koneksikan masing-masing table dengan menset property TableName dengan masing-masing table). Koneksikan masing-masing datasource dengan masing-masing table. Demikian pula dengan DBGrid yang dikoneksikan dengan dsTemp (Datasource). Pada bagian atas form tambahkan sebuah panel dan sebuah label di dalamnya. Beri name dengan lblBanner, dan pnlBanner. Tambahkan pula sebuah timer di dalamnya, setting property intervalnya dengan 200. Selanjutnya listing programnya adalah sebagai berikut : unit Sewa; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DB, Grids, DBGrids, DBTables, ComCtrls, ExtCtrls; type Tfrmsewa = class(TForm) tblplg: TTable; tbltemp: TTable; tblvcd: TTable; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; editnonota: TEdit; editkodeplg: TEdit; Editnama: TEdit; edittelepon: TEdit; Editkodevcd: TEdit; editjudul: TEdit; editharga: TEdit; editqty: TEdit; Editjumlah: TEdit; tblhdsewa: TTable; tbldtsewa: TTable; tbltempKodevcd: TStringField; tbltempJudul: TStringField; tbltempQty: TFloatField; tbltempHarga: TFloatField; tbltempJumlah: TFloatField; DBGridsewa: TDBGrid; dstemp: TDataSource; btnsimpan: TButton; btnbatal: TButton; btnkeluar: TButton; btnok: TButton; dtptanggal: TDateTimePicker; AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 57 editalamat: TEdit; Label12: TLabel; edittotal: TEdit; Label13: TLabel; Label14: TLabel; editjumlahcd: TEdit; pnlbanner: TPanel; lblbanner: TLabel; tmrbanner: TTimer; procedure FormActivate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure editkodeplgExit(Sender: TObject); procedure btnkeluarClick(Sender: TObject); procedure editkodeplgKeyPress(Sender: TObject; var Key: Char); procedure editkodeplgChange(Sender: TObject); procedure EditkodevcdChange(Sender: TObject); procedure EditkodevcdExit(Sender: TObject); procedure EditkodevcdKeyPress(Sender: TObject; var Key: Char); procedure editqtyChange(Sender: TObject); procedure btnokClick(Sender: TObject); procedure btnbatalClick(Sender: TObject); procedure btnsimpanClick(Sender: TObject); procedure tmrbannerTimer(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmsewa: Tfrmsewa; implementation {$R *.dfm} procedure tambahnonota; var cnonota : string[6]; begin if frmsewa.tblhdsewa.RecordCount = 0 then cnonota:='1' else begin frmsewa.tblhdsewa.Last; cnonota := floattostr((strtofloat(frmsewa.tblhdsewa['nonota'])+1)); end; case length(cnonota) of 1 : cnonota := '00000'+ cnonota; 2 : cnonota := '0000'+ cnonota; 3 : cnonota := '000'+ cnonota; 4 : cnonota := '00'+ cnonota; 5 : cnonota := '0'+ cnonota; end; frmsewa.editnonota.text := cnonota; end; procedure aktifkan(x : boolean); AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 58 begin frmsewa.Editkodevcd.Enabled := x; frmsewa.editkodeplg.enabled := x; frmsewa.editharga.Enabled := x; frmsewa.dtptanggal.Enabled := x; frmsewa.editqty.Enabled := x; end; procedure kosong; begin frmsewa.editkodeplg.Text := ''; frmsewa.editnama.Text := ''; frmsewa.editalamat.text := ''; frmsewa.edittelepon.Text := ''; frmsewa.dtptanggal.Date := date(); frmsewa.Editkodevcd.Text := ''; frmsewa.editjudul.Text := ''; frmsewa.editharga.Text := '0'; frmsewa.editqty.Text := '0'; frmsewa.Editjumlah.Text := '0'; frmsewa.editjumlahcd.Text := '0'; frmsewa.edittotal.text:='0'; end; procedure kosongdetail; begin frmsewa.Editkodevcd.Text := ''; frmsewa.editjudul.Text := ''; frmsewa.editharga.Text := '0'; frmsewa.editqty.Text := '0'; frmsewa.Editjumlah.text := '0'; end; procedure hitungtotal; var ntotal : real; begin frmsewa.editjumlahcd.text:=inttostr(frmsewa.tbltemp.RecordCount); ntotal := 0; if strtoint(frmsewa.editjumlahcd.Text) > 0 then begin frmsewa.tbltemp.first; while not frmsewa.tbltemp.eof do begin ntotal:=ntotal + frmsewa.tbltemp['jumlah']; frmsewa.tbltemp.Next; end; frmsewa.edittotal.text:=floattostr(ntotal); end; end; procedure Tfrmsewa.FormActivate(Sender: TObject); begin tblhdsewa.Open; tbldtsewa.Open; tblplg.Open; tblvcd.Open; tbltemp.Open; kosong; if tbltemp.RecordCount > 0 then begin tbltemp.first; AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 59 while not tbltemp.Eof do tbltemp.Delete; end; tambahnonota; end; procedure Tfrmsewa.FormClose(Sender: TObject; var Action: TCloseAction); begin tblhdsewa.Close; tbldtsewa.Close; tblvcd.Close; tblplg.Close; tbltemp.Close; end; procedure Tfrmsewa.editkodeplgExit(Sender: TObject); begin if editkodeplg.Text <> '' then begin if not tblplg.FindKey([editkodeplg.Text]) then begin application.MessageBox('Kode Pelanggan Ini Belum Terdaftar', 'Validasi Pelanggan',MB_ICONSTOP); editkodeplg.Text := ''; editnama.Text := ''; editalamat.Text := ''; edittelepon.Text := ''; editkodeplg.Setfocus; end else begin editnama.Text := tblplg['Namaplg']; editalamat.Text := tblplg['Alamat']; edittelepon.Text := tblplg['telepon']; editkodevcd.Setfocus; end; end; end; procedure Tfrmsewa.btnkeluarClick(Sender: TObject); begin frmsewa.close; end; procedure Tfrmsewa.editkodeplgKeyPress(Sender: TObject; var Key: Char); begin if key = #13 then editkodeplg.OnExit(sender); end; procedure Tfrmsewa.editkodeplgChange(Sender: TObject); begin if length(editkodeplg.Text)=5 then editkodeplg.OnExit(sender); end; procedure Tfrmsewa.EditkodevcdChange(Sender: TObject); begin if length(editkodevcd.Text)=5 then editkodevcd.onExit(sender); end; procedure Tfrmsewa.EditkodevcdExit(Sender: TObject); AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 60 begin if editkodevcd.Text <> '' then begin if not tblvcd.FindKey([editkodevcd.Text]) then begin application.MessageBox('VCD Ini Belum Terdaftar', 'Validasi VCD',MB_ICONSTOP); editkodevcd.Text := ''; editjudul.Text := ''; editharga.Text := ''; editkodevcd.Setfocus; end else if tblvcd['jumlah']=0 then begin application.MessageBox('Stok Kosong','Sewa VCD',MB_ICONSTOP); editkodevcd.Text := ''; editkodevcd.setfocus; end else begin editjudul.Text := tblvcd['Judul']; editharga.Text := floattostr(tblvcd['harga']); editqty.Text := '1'; editjumlah.text := floattostr(strtofloat(editqty.Text) * strtofloat(editharga.Text)); editqty.Setfocus; end; end; end; procedure Tfrmsewa.EditkodevcdKeyPress(Sender: TObject; var Key: Char); begin if key = #13 then editkodevcd.OnExit(sender); end; procedure Tfrmsewa.editqtyChange(Sender: TObject); begin editjumlah.text := floattostr(strtofloat(editqty.Text) * strtofloat(editharga.Text)); end; procedure Tfrmsewa.btnokClick(Sender: TObject); begin tbltemp.Append; tbltemp['kodevcd']:=editkodevcd.Text; tbltemp['judul']:=editjudul.text; tbltemp['qty']:=editqty.Text; tbltemp['harga']:=editharga.Text; tbltemp['jumlah']:=editjumlah.Text; tbltemp.Post; hitungtotal;kosongdetail; editkodevcd.setfocus; end; procedure Tfrmsewa.btnbatalClick(Sender: TObject); begin kosong; aktifkan(false); AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 61 if tbltemp.RecordCount > 0 then begin tbltemp.First; while not tbltemp.Eof do tbltemp.Delete; end; tambahnonota; end; procedure Tfrmsewa.btnsimpanClick(Sender: TObject); begin if tbltemp.RecordCount > 0 then begin //simpan ke table Hdsewa tblhdsewa.Append; tblhdsewa['nonota']:=editnonota.Text; tblhdsewa['tanggal']:=dtptanggal.Date; tblhdsewa['kodeplg']:=editkodeplg.Text; tblhdsewa['total']:=strtofloat(edittotal.text); tblhdsewa['jumsewa']:=strtoint(editjumlahcd.Text); tblhdsewa.Post; //simpan ke table Dtsewa tbltemp.First; while not tbltemp.Eof do begin tbldtsewa.Append; tbldtsewa['nonota']:=editnonota.Text; tbldtsewa['kodevcd']:=tbltemp['kodevcd']; tbldtsewa['qty']:=tbltemp['qty']; tbldtsewa.Post; //Update jumlah vcd if tblvcd.FindKey([tbltemp['kodevcd']]) then begin tblvcd.Edit; tblvcd['jumlah']:=tblvcd['jumlah'] - tbltemp['qty']; tblvcd.Post; end; tbltemp.Next; end; end; if tbltemp.RecordCount > 0 then begin tbltemp.First; while not tbltemp.Eof do tbltemp.Delete; tbltemp.Next; end; kosong; tambahnonota; end; procedure Tfrmsewa.tmrbannerTimer(Sender: TObject); begin if lblbanner.Left <= pnlbanner.Left then AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 62 lblbanner.Left := pnlbanner.width else lblbanner.Left := lblbanner.Left - 10; end; end. Report Daftar CD Layout dari Daftar CD adalah sebagai berikut :

Tambakan komponen TTable setting property TableName dengan VCD.db dan name dengan tblVCD. Tambahkan komponen QuickRep pada form kemudian setting property dataset dengan TblVCD Tambahkan komponen QRBand. QRBand1 ditujukan untuk judul. Ubah property BandTypenya dengan rbTitle. Tambahkan QRLabel pada QRBand1 ini kemudian ubah captionnya dengan RENTAL VCD EXPRESS dan dibawahnya DAFTAR VCD Pada QRBand2 setting property BandTypenya dengan rbColumnHeader. Tambahkan 5 buah QRLabel di dalamnya sesuaikan captionnya dengan tampilan. Pada QRBand3 setting property BandTypenya dengan rdDetail. Tambahkan komponen QRDBText (4 buah). Sesuaikan masing-masing dataset dengan TblVCD dan Datafield dengan masing-masing field (KodeVcd, Judul, Harga dan Jumlah). Untuk penomoran berikan komponen QRSysData. Atur settingan property Data ke qrsDetailNo. Selanjutnya untuk menjalankan aplikasi report ini klik kanan di Reportnya kemudian pilih Preview.

Contoh tampilannya ditunjukkan berikut ini :

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 63

Daftar Pelanggan Dengan cara yang relatif sama tampilan daftar pelanggan adalah sebagai berikut :

Tambakan komponen TTable setting property TableName dengan Pelanggan.db dan name dengan tblPlg. Tambahkan komponen QuickRep pada form kemudian setting property dataset dengan TblPlg. Tambahkan komponen QRBand. QRBand1 ditujukan untuk judul. Ubah property BandTypenya dengan rbTitle. Tambahkan QRLabel pada QRBand1 ini kemudian ubah captionnya dengan RENTAL VCD EXPRESS dan dibawahnya DAFTAR PELANGGAN Pada QRBand2 setting property BandTypenya dengan rbColumnHeader. Tambahkan 5 buah QRLabel di dalamnya sesuaikan captionnya dengan tampilan. Pada QRBand3 setting property BandTypenya dengan rdDetail. Tambahkan komponen QRDBText (4 buah). Sesuaikan masing-masing dataset dengan TblPlg dan Datafield dengan masing-masing field (KodePlg, NamaPlg, Alamat, Telepon). Untuk penomoran berikan komponen QRSysData. Atur settingan property Data ke qrsDetailNo. Untuk mencetak Jenis kelamin Pria dan Wanita tambahkan komponen QRExpression. Setting property expressionnya sebagai berikut ini :

Selanjutnya preview tampilan. Contoh tampilannya berikut ini : AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 64

Laporan Penyewaan CD

Pilih File | New | Form pada menu kemudian tambahkan objek pada form : Tambahkan Tquery. Kemudian ubah property SQL dengan: Select a.Tanggal, a.NoNota, c.NamaPlg, d. Judul, b. Qty, d. Harga, d.Harga*b.Qty As Jumlah from HdSewa a, Dtsewa b, Pelanggan c, VCD d where (a.NoNota = b.NoNota) AND (a.KodePlg = c.KodePlg) AND (b.KodeVCD = d.KodeVCD) Aktifkan query dengan mengubah property Active menjadi True. Tambahkan objek QuickRep pada form, kemudian ubah property Dataset dengan Query1. Pada object inspector klik ganda property bands sehingga muncul sub property bands. Setting true untuk sub property HasDetail, HasPageHeader, dan HasSummary. Tambahkan komponen QRGroup dari component pallete. Komponen ini berfungsi sebagai Group Header dan ditempatkan di atas Band Detail. Tambahkan komponen QRLabel pada band PageHeader. Ubah property Caption dengan RENTAL VCD EXPRESS dan Laporan Penyewaan VCD. Ubah font menjadi 16 dan style.fsBold menjadi true. Atur posisi label di tengah-tengah desain. Tambahkan komponen QRLabel dan QRDBText pada band GroupHeader. Ubah caption pada QRLabel dengan Tanggal :. Pada QRDBText ubah property Dataset dengan Query1 dan property Dataset dengan Tanggal. Untuk mengelompokkan data berdasarkan tanggal pinjam maka setting property Expression dengan : Query1.Tanggal AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom

Pemrograman Delphi Hal : 65 Tambahkan komponen QRShape pada band Group Header untuk membuat frame judul kolom. Ubah property Shape dengan qrsTopandBottom. Tambahkan enam (6) buah QRLabel di dalam QRShape, ubah masing-masing captionnya dengan : Nota, Nama Penyewa, Judul CD, Qty, Harga dan Jumlah. Pada Band Detail tambahkan lima (5) buah komponen QRDBText, kemudian ubah property Dataset kesemua QRDBText dengan Query1 dan masing-masing property DataField dengan NoNota, NamaPlg, Judul, Qty, dan Harga. Tambahkan QRExpr pada Band Detail ubah property Expression sebagai berikut :

Tambahkan komponen QRband kemudian atur settingan bandtypenya ke rbGroupFooter. Pada band QRGroup setting property Footer band kemudian setting ke QRband1 (qrband untuk groupfooter). Pada band groupfooter tambahkan QRLabel (TOTAL PENYEWAAN) dan QRExpr seperti tampilan di band detail. Setting property Reset After Print menjadi True. Pada band Summary tambahkan hal yang sama untuk mencari jumlah keseluruhan penyewaan. Pada band Summary tambahkan QRLabel, setting captionnya dengan : Dicetak : dan Halaman : Tambahkan dua (2) buah QRSysData, ubah property Data dengan qrsDateTime dan qrsPageNumber. Setting property frame.DrawTop dengan true untuk membuat garis pada atas band Summary.

Contoh tampilannya seperti berikut ini :

AMIK WD PTK 2nd Edition Des 2007 Antonius, S.Kom