Download - Modul Delphi

Transcript
Page 1: Modul Delphi

Pemrograman Delphi – Hal : 1

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

Pendahuluan

Delphi merupakan bahasa pemrograman yang berbasis pada bahasa pemrogramanPascal. Bahasa Pascal sendiri muncul pada tahun 1971 oleh ilmuwan Swiss Niklaus Wirth, yangnamanya diambil dari ahli matematika Perancis Blaise Pascal (1623-1662). Sejak munculnyaPascal kemudian mengalami beberapa kali pengembangan diantaranya Turbo Pascal keluaranBorland International Incorporation tahun 1983. Turbo Pascal ini memiliki perbedaan denganPascal standard, diantaranya dalam hal pengolahan string, penambahan beberapa prosedur danfungsi, dan sebagainya. Turbo Pascal ini awalnya Under DOS namun dalam perkembangannyaBorland juga mengeluarkan Turbo Pascal Under Windows yakni Turbo Pascal For Windows.Pada tahun 1992, Borland International memergerkan Turbo Pascal For DOS dan Turbo PascalFor Windows yang dikenal dengan nama Borland Pascal Versi 7.0. Seiring perkembangansistem operasi Windows dan pemrograman berbasis visual, pada tahun 1995 kemudian Borlandmengeluarkan Delphi Versi 1 yang kemudian berkembang pada tahun 1996 menjadi Delphi 2.Pada tahun 1997, 1998, dan 1999 Borland International berganti nama menjadi InpriseCorporation dan menghasilkan penyempurnaan Delphi dalam versi 3, 4, dan 5. Pada versiDelphi 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) DELPHIIDE (Integrated Development Environment) adalah bagian dari Delphi yang ditujukan untukmembuat aplikasi. Melalui IDE inilah pemrograman secara visual mendesain user-interfacedan melakukan pengkodean program. Pada dasarnya IDE Delphi dibagi menjadi 6 bagianutama yaitu : Menu, SpeedBar(Toolbar), Component Pallete, Form Designer, Code Editordan Object Inspector. Gambar berikut ini menunjukkan letak keenam komponen IDEDelphi:

Gambar 1. Bagian dari IDE Delphi

Form Designer

Object Inspector

Code Editor

Speed BarMenu

ComponentPallete

Page 2: Modul Delphi

Pemrograman Delphi – Hal : 2

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

Menu, berisi sejumlah pilihan (File, Edit, Search, dan sebagainya) digunakan untuk melakukanproses terhadap file program (membuka, menyimpan), mengkompilasi dan sebagainya.Speed Bar / Toolbar, digunakan sebagai tombol eksekusi pengganti beberapa item menu yanglazim digunakan. Misalnya tombol RUN yang menggantikan fungsi Menu RUN | RUN.Component Pallete, berisi kumpulan icon yang mensimbolkan VCL (Visual ComponentLibrary). Pada component pallete terdapat beberapa tab : Standards, Additionals, Win32, danseterusnya. Komponen inilah yang akan digunakan (ditambahkan) ke dalam form dalamimplementasi aplikasi pemrogramannya.Form Designer, merupakan tempat dimana desain dari aplikasi yang akan dihasilkan dilakukandengan meletakkan atau menambahkan komponen-komponen yang ada dalam componentpallete.Code Editor, tempat melakukan pengkodean program dalam sintaks Delphi (Pascal).Object Inspector, digunakan untuk melakukan setting terhadap suatu objek (kontrol) yangditambahkan dari component pallete ke form. Pada object inspector terdapat 2 tab yaitu :Properties dan Events.

Objek (Kontrol) , Properties, Events, MethodsDalam pemrograman berbasis OOP, suatu programdibagi dalam objek. Setiap objek memiliki entityterpisah dengan entity objek lainnya dalamlingkungannya. Setiap objek memiliki sekumpulansifat dan metode yang melakukan fungsi tertentusesuai dengan yang dikodekan terhadap objektersebut.

Setiap objek memiliki 3 hal utama :1. Properties, adalah karakteristik atau sifat dari

suatu objek. Misalnya warna (Font.Color) untukteks (label) adalah hitam, ukurannya (Width) =100, dsb.

2. Method, adalah serangkaian prosedur yangdimiliki oleh suatu objek yang akan dijalankansesuai dengan perintah atau event. Misalnya objek button (tombol) EXIT memiliki metodekeluar dari aplikasi.

3. Event, adalah “kejadian” atau segala sesuatu yang terjadi pada suatu objek. Misalnyamengklik tombol mouse pada suatu button (Event : Click).

Berikut ini ilustrasi singkat tentang objek dengan analogi konkret “objek Mobil” :

OBJEK MOBIL

PROPERTIES : METHODS : Merk : Toyota - Berjalan Maju Warna : Hitam - Berjalan Mundur Tipe : Sedan EVENT : - Berhenti

Pintu dibuka Ditabrak Kehujanan

Pada object inspector terdiri dari beberapa bagian :Kotak objek, berisi nama objek yang ditambahkan pada form.

Nama SubProperty

Nama Property Kotak Objek

TombolProperty

Setting

Page 3: Modul Delphi

Pemrograman Delphi – Hal : 3

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

Tombol daftar objek, berisi tombol daftar nama objek yang telah ditambahkan dalam formyang 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 dariproperty 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 diobject inspector atau dengan memilih dari tombol property yang disediakan (umumnyaberbentuk combo box). Cara pertama ini umumnya digunakan untuk memberi nilai propertyuntuk objek yang sifatnya konstan (tidak berubah) sepanjang berjalannya aplikasi.

2. Mengisi pada saat run-time, mensetting property pada saat berlangsungnya aplikasi denganmelalui pengkodean program. Standard penulisan program untuk mensetting propertydilakukan dengan :Nama_objek.Nama_property.Nama_SubProperty := Setting_property;

Membuat Aplikasi BaruPilih menu File | New | Application atau dengan mengklik pada Speedbar New kemudian PilihApplication.

Menyimpan Project dan FormPilih 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 danTidak Boleh Sama dengan Nama file project (.dpr). Untuk file project umumnya diawalihuruf P misalnya PBiodata.dpr untuk kemudahan dalam identifikasi.Setelah melakukan penyimpanan file unit dan project di atas secara otomatis akan munculbeberapa 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 konfigurasiproject, dan file dengan extention .res adalah file yang berisi resource windows standard (iconaplikasi).

Page 4: Modul Delphi

Pemrograman Delphi – Hal : 4

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

Menjalankan ProgramUntuk menjalankan program dapat dilakukan dengan memilih Menu RUN | RUN atau denganmenggunakan shortcut keyboard F9 atau dengan menggunakan speedbar 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 | ProgramReset (CTRL + F2).

Mengedit ProjectUntuk membuka aplikasi gunakan menu File | Open Project (CTRL + F11). Kemudian pilihfolder untuk membuka project yang akan diubah. Simpan kembali perubahan setelah prosespengeditan selesai dilakukan.

Soal 1.Desainlah form dengan tampilan sebagai berikutini:1. Ubah property Caption pada form dengan Soal

1 dan property Name pada form denganfrmSoal1. Ubah property Position denganpoScreenCenter.

2. Tambahkan komponen editbox pada form.Setting property Name dengan editTeks danproperty Text dikosongkan.

3. Tambahkan groupbox pertama, setting propertyname dengan grbWarna dan ubah propertycaption dengan Warna Background.

4. Pada groupbox tersebut tambahkan tiga buahtombol (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 propertycaption dengan Tampilan Teks.

6. Pada groupbox tersebut tambahkan tiga buah tombol (button) dan ubah masing-masingpropertynya 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 denganbkClose.

Selanjutnya untuk event untuk masing-masing komponen tersebut adalah :

Procedure TfrmSoal1.btnbiruClick(Sender:TObject);

beginfrmSoal1.color := clblue;

end;

procedure TfrmSoal1.btnhijauClick(Sender:TObject);beginfrmSoal1.color := clgreen;

end;

procedure TfrmSoal1.btnnormalClick(Sender: TObject);beginfrmSoal1.Color := clBtnFace;

end;

RUN

PAUSE

Page 5: Modul Delphi

Pemrograman Delphi – Hal : 5

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

procedure TfrmSoal1.btnteksnormalClick(Sender:TObject);begineditteks.Text := '';

end;

procedure TfrmSoal1.btndelphiClick(Sender:TObject);begineditteks.Text := 'Delphi';

end;

procedure TfrmSoal1.btnProgramClick(Sender:TObject);begineditteks.Text := 'Pemrograman';

end;

procedure TfrmSoal1.bitbtnkeluarClick(Sender:TObject);beginapplication.Terminate;

end;

Soal 2Buatlah form dengan tampilan seperti di bawah ini !

1. Ubah property Name pada form dengan frmBiodata. Ubah pula caption dengan BiodataMahasiswa 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 propertyEditBox (pertama) Text ‘’

Name editNIMEditBox (kedua) Text ‘’

Name editNamaMemo Lines Dikosongkan (0 lines)

Name memoAlamatEditBox (ketiga) Text ‘’

Name editTeleponCombobox Text ‘’

Name cboJenisKelaminItems Tambahkan laki-laki & perempuan

DateTimePicker (tab Win32) Name dtpTglLahirRadioButton (satu) Caption Manajemen

Name rdbManajemenRadioButton (dua) Caption Akuntansi

DateTimePicker

Memo

Combobox

Radiobutton

Groupbox

Listbox

Checkbox

Page 6: Modul Delphi

Pemrograman Delphi – Hal : 6

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

Name rdbAkuntansiRadioButton (tiga) Caption Informatika

Name rdbInformatikaListbox Items D1, D3, S1

Name lstProgStudiGroupbox Caption ‘’

Name grbHobbyCheckbox (satu) Caption Membaca

Name chkMembacaCheckbox (dua) Caption Olahraga

Name ChkolahragaCheckbox (tiga) Caption Kesenian

Name chkKesenianCheckbox (empat) Caption Lain – lain

Name ChklainButton Caption &Keluar

Name Btnkeluar4. Pada button keluar berikan kode untuk keluar dari aplikasi :

procedure TfrmBiodata.btnkeluarClick(Sender: TObject);beginapplication.Terminate;

end;

BAGIAN II : TIPE DATA & OPERATOR

KomentarCara 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.

VariabelAturan 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 Data1. Tipe Bilangan Bulat (Integer)Tipe Data Range Ukuran MemoryByte 0 s/d 255 1 byteWord 0 s/d 65535 2 byteShortInt -128 s/d 127 1 byteSmallInt -32768 s/d 32767 2 byteInteger -2147483648 s/d 2147483647 4 byteCardinal 0 s/d 2147483647 4 byteLongInt -2147483648 s/d 2147483647 4 byte2. Tipe KarakterTipe Data Ukuran Memory Karakter yang dapat disimpanANSIChar 1 byte Satu karakter ANSI

Page 7: Modul Delphi

Pemrograman Delphi – Hal : 7

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

WideChar 2 byte Satu karakter UnicodeChar 1 byte Identik dengan ANSI Char3. Tipe Boolean

4. Tipe String, yang umumnya digunakanberupa ShortString dengan panjang karakter255 karakter dan elemen yang dapatdisimpan berupa ANSIChar.

5. Tipe RealTipe Data Range Ukuran MemoryReal ±2,9x10-39 s/d 1,7x1038 6 byteSingle ±1,5x10-45 s/d 3,4x1038 4 byteDouble ±5,0x10-324 s/d 1,7x10308 8 byteExtended ±3,6x10-4951 s/d 1,1x104392 10 byteComp -263+1 s/d 263-1 64 bit integerCurrency -922337203685477.5808 s/d 922337203685477.5807 64 bit integer

Konstanta, adalah suatu nilai yang tetap (konstan) selama eksesuksi suatu program. Konstantadapat 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 arrayyang sama dengan indeks(subscript) yang berbeda-beda. Cara mendeklarasikan array pada Delphiadalah :Var Nama_var_array : Array [batas_awal .. batas_akhir] of Tipe_data_arrayArray dapat berbentuk satu dimensi (baris, kolom) ataupun multi dimensi (2x2).

Macam – Macam Operator1. 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 operasipembagian 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 Delphimeliputi :

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. Unitadalah bagian program yang berisi rutin (procedure atau function). Setiap unit akan disimpan dalamfile berekstensi .PAS. Suatu unit mempunyai struktur sebagai berikut :unit namaunit;

Tipe Data Range Ukuran MemoryBoolean Berukuran 1 byte 1 byteByteBool Berukuran byte 1 byteBool Berukuran word 2 byteWordbool Berukuran word 2 byteLongbool Berukuran double 4 byte

Page 8: Modul Delphi

Pemrograman Delphi – Hal : 8

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

interfaceuses { Daftar unit yang digunakan }{ Bagian interface ada di bagian ini }implementationuses { 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 labelsebanyak 7 buah. Atur masing-masingcaptionnya dengan tampilan di samping ini.Tambahkan sebuah groupbox sebelum membuat3 label tersebut (tampilan konversi).Untuk tiga buah label yang akan diisikan nilaiuntuk hasil konversi celcius berikan nama sbb:Label pertama, atur name dengan lblfahrenheit,untuk label kedua setting name denganlblreamur, dan label ketiga dengan lblkelvin.Ketiga label tersebut dikosongkan captionnya.Selanjutnya tambahkan sebuah button berikancaptionnya dengan Konversi dan name denganbtnkonversi. Terakhir tambahkan sebuah

bitbutton, beri name bitbtnclose dan atur property Kind dengan bkclose. Pada form setting positiondengan poScreenCenter dan atur caption dengan Konversi Suhu serta setting name denganfrmKonversiSuhu. Selanjutnya untuk kode pemrograman yang diperlukan adalah pada tombolkonversi dan close sbb :

procedure TfrmKonversiSuhu.BitBtncloseClick(Sender: TObject);beginapplication.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

Label (3 buah)

Page 9: Modul Delphi

Pemrograman Delphi – Hal : 9

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

4. Tambahkan komponen spinedit (daritab Sample). Setting propertyminvalue = 0 dan maxvalue = 32767.Setting pula Name dengan speQty.

5. Terakhir, tambahkan 3 buah buttondengan caption seperti pada form.Beri nama masing-masingbtnprocess, btnclear, btnexit.

Selanjutnya untuk pengkodean masing-masing objek sebagai berikut ini :procedure Tfrmpenjualan.btnexitClick(Sender: TObject);beginapplication.Terminate;

end;

procedure Tfrmpenjualan.btnprocessClick(Sender: TObject);var qty,harsat : integer;

jumlah,pajak,total : currency;beginThousandSeparator:='.';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);begineditkode.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

Nama Komponen Property Nilai setting propertyEdit 1 Name EditkodeEdit 2 Name EditNamaEdit 3 Name EditHarsatEdit 4 Name EditJumlah

Enabled FalseEdit 5 Name EditPajak

Enabled FalseEdit 6 Name EditTotal

Enabled False

Page 10: Modul Delphi

Pemrograman Delphi – Hal : 10

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

If .. Then .. ElseBentuk umum ini dapat dijabarkan sebagai berikut :If kondisi thenBegin

{pernyataan yang dijalankan jika kondisi terpenuhi};End

ElseBegin

{pernyataan yang dijalankan jika kondisi tidak terpenuhi};End;

2. Pernyataan CaseBentuk 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 .. DowntoBentuk 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 DoBegin

{ 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 denganmembentuk subroutine (sub program) yang kemudian akan diintegrasikan (dicall) dari mainprogramnya atau subroutine lain yang memanggil subroutine yang bersangkutan. Perbedaanmendasar dengan bahasa pemrograman yang berbasis visual konsep pemograman terstruktur initetap dipertahankan dengan penambahan pada konsep event oriented (objek berdasarkan pada eventtertentu). Perbedaan antara procedure dan function adalah function selalu mengembalikan nilai keprocedure yang memanggilnya (return value) sedangkan procedure tidak mengembalikan nilai.Deklarasi Procedure :Procedure nama_procedure(parameter1,parameter2,...);Begin

{pernyataan}

Page 11: Modul Delphi

Pemrograman Delphi – Hal : 11

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

End;Deklarasi Function :Function nama_function(parameter1,parameter2,...) : tipedata_retval;Begin

{pernyataan}End;

Untuk memanggil suatu procedure atau function dapat dilakukan dengan memanggil / menyebutkannama procedure atau function yang bersangkutan. Khususnya untuk function yang memiliki retvalmaka digunakan suatu variabel bertipe data sama dengan retvalnya untuk menampung hasil retvaldari 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 akanberpengaruh pada function atau procedure itu sendiri tanpa mengubah nilai dari pemanggilnya.

Parameter acuan (reference / variabel), pada parameter ini nilai yang dipassing pada parameteraktual akan berpengaruh pada function atau procedure itu sendiri dan akan mengubah nilai daripemanggilnya. Parameter ini dibuat dengan menambahkan reserved word var pada awalparameter acuan.

Soal 5Setting property untuk form dengan : Name : frmPenjualan; Position : poScreenCenter; Color :clGray.

Tambahkan checkbox Discountdengan name ChkDiscount danRadioGroup PersenDiscount sepertitampilan di samping. Editbox disamping persentase menunjukkannilai nominal dari discount.

Pengkodean untuk tiap-tiap objek adalah sebagai berikut :procedure Tfrmpenjualan.btnexitClick(Sender: TObject);beginapplication.Terminate;

end;

function cekisian(teks : string):boolean;beginif teks = '' then cekisian:=True else cekisian:=False;

end;

procedure Tfrmpenjualan.btnprocessClick(Sender: TObject);var qty,harsat : integer;

jumlah,pajak,total,discount : currency;beginThousandSeparator:='.';if not (cekisian(editkode.Text)) and

not (cekisian(editnama.Text)) andnot (cekisian(editharsat.Text)) andnot (cekisian(inttostr(spebanyak.Value))) then

begin

Page 12: Modul Delphi

Pemrograman Delphi – Hal : 12

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

qty := spebanyak.Value;harsat := StrToInt(editharsat.Text);jumlah := qty * harsat;editjumlah.Text := CurrToStrF(jumlah,ffNumber,0);

if chkdiscount.Checked thenbegincase rdgdiscount.ItemIndex of0 : discount := 0.05 * jumlah;1 : discount := 0.1 * jumlah;2 : discount := 0.2 * jumlah;

end;end

elsediscount:=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);

endelsebeginmessageDlg('Isian Belum Lengkap',mtInformation,[mbok],0);editkode.SetFocus;

end;end;procedure Tfrmpenjualan.btnclearClick(Sender: TObject);begineditkode.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 thenrdgdiscount.Enabled := true

elserdgdiscount.Enabled := false;

end;

procedure Tfrmpenjualan.editharsatKeyPress(Sender: TObject; var Key: Char);beginif not (key in ['0'..'9',’,’,#8]) then key:=#0;

end;

Soal 6Disainlah form dengan tampilan berikutini :Setting property pada form denganmengubah Name : frmJlhKarakter;Caption : Menghitung Jumlah Karakter,Color : clBtnShadow, dan Position :poDesktopCenter.Tambahkan komponen label ubahcaptionnya dengan tampilan teks sepertipada gambar di bawah.Tambahkan komponen editbox, aturName dengan editteks, dan kosongkanproperty Text.

Page 13: Modul Delphi

Pemrograman Delphi – Hal : 13

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

Tambahkan komponen groupbox dan label (10 buah) pada groupbox tersebut. Untuk label yangberfungsi sebagai keterangan atur property caption seperti pada gambar. Sedangkan untuk 5 labelyang 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 aturcaption dengan tampilan &Proses dan &Keluar.

Untuk pengkodeannya adalah sebagai berikut :

procedure TfrmJlhLKarakter.BitBtn1Keluar(Sender: TObject);beginapplication.Terminate;end;

procedure TfrmJlhLKarakter.bitbtnProsesClick(Sender: TObject);var nVokal,nKonsonan,nHuruf,nSpasi,nAngka : integer;

uji : string;i : byte;

beginnVokal:=0; nKonsonan:=0; nAngka:=0;nHuruf:=Length(editteks.Text);For i:=1 to nHuruf dobeginuji := 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 7Disainlah form dengan tampilan berikut ini :Atur property pada form :Name : frmNilaiCaption : Menghitung NilaiPosition : poScreenCenterTambahkan 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 :

Komponen terakhir yang ditambahkan adalah button sebanyak 3 buah atur caption dengan :&Hitung, K-&osongkan dan &Keluar; property Name dengan btnHitung, btnKosong, btnKeluar.

Nama Komponen Property Nilai setting propertyEditBox (1) Name editNimEditBox (2) Name editNamaEditBox (3) Name editAbsEditBox (4) Name editTtEditBox (5) Name editMidEditBox (6) Name editUaEditBox (7) Name editTotNil

Enabled FalseEditBox (8) Name editGrade

Enabled FalseEditBox (9) Name editKet

Enabled False

Page 14: Modul Delphi

Pemrograman Delphi – Hal : 14

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

Selanjutnya untuk pengkodeannya dapat dilakukan sebagai berikut ini :

procedure TfrmNilai.editNimKeyPress(Sender: TObject; var Key: Char);beginif not (key in ['0'..'9',’,’#8]) then key:=#0;

end;

function Overnilai(nilai : Real):boolean;beginif nilai > 100 then Overnilai:=True else Overnilai:=False;

end;

procedure TfrmNilai.EditAbsChange(Sender: TObject);beginif editabs.Text = '' then editabs.text:='0'else if Overnilai(StrToFloat(editabs.Text)) thenbeginMessageDlg('Range Masukan 0-100!',mtInformation,[mbok],0);editabs.text:='';editabs.SetFocusend;

end;

procedure TfrmNilai.EditTtChange(Sender: TObject);beginif editTt.Text = '' then editTt.text:='0'else if Overnilai(StrToFloat(editTt.Text)) thenbeginMessageDlg('Range Masukan 0-100!',mtInformation,[mbok],0);editTt.text:='';editTt.SetFocusend;

end;

procedure TfrmNilai.EditMidChange(Sender: TObject);beginif editMid.Text = '' then editMid.text:='0'else if Overnilai(StrToFloat(editMid.Text)) thenbeginMessageDlg('Range Masukan 0-100!',mtInformation,[mbok],0);editMid.text:='';editMid.SetFocusend;

end;

procedure TfrmNilai.EditUaChange(Sender: TObject);beginif editUa.Text = '' then editUa.text:='0'else if Overnilai(StrToFloat(editUa.Text)) thenbeginMessageDlg('Range Masukan 0-100!',mtInformation,[mbok],0);editUa.text:='';

Page 15: Modul Delphi

Pemrograman Delphi – Hal : 15

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

editUa.SetFocusend;

end;

procedure TfrmNilai.btnkeluarClick(Sender: TObject);beginapplication.Terminate;

end;

procedure TfrmNilai.btnkosongkanClick(Sender: TObject);begineditNim.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);beginedittotNil.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 dapatdimasukkan, caranya dengan menggunakan validasi pada editAbs (sharing). Pada event keypress ketigakomponen 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 umumnyasering digunakan dalam aplikasi. Tidak semua komponen akan dibahas tetapi yang sifatnya umumdigunakan. VCL merupakan pustaka berisi kumpulan komponen visual dan non visual yang dapatdigunakan untuk membangun aplikasi Delphi.Sebelum membahas komponen VCL secara khusus berikut ini adalah komponen dasar yang wajibdiketahui 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.

Page 16: Modul Delphi

Pemrograman Delphi – Hal : 16

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

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 denganteknik click & drag dimana objek yang akan digunakan dipilih dulu dengan cara diklik kemudiangerakkan (drag) mouse di bagian form. Berikut ini adalah beberapa VCL yang sering digunakanberikut property penting pada VCL tersebut.

Pada tab Standard :

MainMenuKomponene ini digunakan untuk mendesain dan membuat menu bar pada form.

PopUpMenuKomponen ini digunakan untuk membuat menu popup yang umumnya digunakan saat melakukanklik kanan pada mouse.

LabelUmumnya digunakan untuk menampilkan keterangan dalam bentuk teks pada form. Property yangumumnya 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.

EditboxEdit 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).

MemoKomponen 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)

ButtonKomponen ini digunakan untuk membuat tombol yang akan melakukan event atau proses tertentusaat 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 keluardengan hotkey ALT + K

Name, menunjukkan nama dari objek button, umumnya diawali kata btn.

Page 17: Modul Delphi

Pemrograman Delphi – Hal : 17

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

CheckboxKomponen 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.

RadiobuttonKomponen ini digunakan untuk memilih satu pilihan tertentu yang sekelompok atau daftar pilihanyang 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.

ListboxKomponen ini digunakan untuk membuat sejumlah daftar pilihan yang kemudian dapat dipilih satuatau 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.

ComboboxKomponen ini pada dasarnya merupakan perpaduan antara listbox dan komponen editbox, dengantujuan yang sama memilih dari sejumlah pilihan yang ada dalam daftar pilihan dengan tambahandata dapat dimasukkan pada combo box tersebut. Beberapa property yang umumnya digunakanadalah : 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 berupacsDropDown, csSimple dan csDropDownList. csDropDown

Bentuk ini merupakan default. csSimple

Bentuk combo box menyerupai editbox. Pilihan dapat dilakukan melalui pilihan scroll mouseataupun keyboard (up dan down arrow).

csDropDownListBentuk menyerupai csDropDown dengan perbedaan pemakai tidak dapat memasukkan inputantetapi hanya dapat memilih dari list yang ada.

ScrollBarKomponen ini digunakan untuk membuat objek scroll bar (penggulung layar). Beberapa propertypenting : 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.

Page 18: Modul Delphi

Pemrograman Delphi – Hal : 18

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

GroupBoxKomponen 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.

RadioGroupKomponen ini digunakan untuk mengelompokkan komponen radio button. Beberapa property yangumumnya 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 :

BitBtnKomponen 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 dibawah).

Name, nama untuk komponen bitbtn.

MaskEditKomponen ini digunakan untuk memasukkan data dengan memiliki format data tertentu (pre-validation).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 1menyatakan bahwa karakter tersebut akan disimpan.

Bagian ketiga berupa karakter yang digunakan untuk menggantikan karakter yang tidakdimasukkan pada komponen ini (oleh pemakai), umumnya berupa garis bawah (_) yangmenggantikan 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.

Page 19: Modul Delphi

Pemrograman Delphi – Hal : 19

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

A Menyatakan hanya huruf .C Menyatakan sebuah sembarang karakter.0 atau 9 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

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 :

DateTimePickerKomponen ini digunakan untuk membuat kotak daftar berupa tempat memasukkan data tanggalatau waktu. Untuk data tanggal terdapat dua pilihan. Bentuk pertama berupa editbox yangdilengkapi dengan tombol updown. Bentuk kedua berupa combobox. Beberapa property yangdigunakan : 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. Dapatdisetting 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 :

TimerKomponen ini digunakan untuk mengaktifkan prosedur, fungsi, atau event dengan suatu batasinterval tertentu. Property penting pada timer adalah Interval.Pada tab Samples :

SpinEditKomponen ini digunakan memasukkan input nilai melalui keyboard ataupun melalui spinner disamping editbox, pada dasarnya merupakan perpaduan antara editbox dan updown. Beberapaproperty yang penting untuk diketahui :

Property KeteranganIncrement 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

Page 20: Modul Delphi

Pemrograman Delphi – Hal : 20

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

MinValue Nilai terendah yang dapat diisikan pada editboxName Nama untuk komponen iniValue Nilai pada komponen ini

Pada tab Dialogs :

OpenDialogs , digunakan unruk menampilkan kotak dialog standard open. Beberapa property yangpenting pada VCL ini :

OpenPictureDialog, digunakan untuk menampilkan kotak dialog open yang umumnya hanyadigunakan untuk membuka file gambar (ekstensi file .bmp,.ico,.wmf). Property penting padaopenpicturedialog 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 denganWarna Teks dan property Namedengan rdgwarna. Settingproperty Items dan isi denganwarna : Hitam, Hijau, Merahdan Biru. Setting propertyColumns dengan 4.Tambahkan sebuah groupbox.Setting property Caption denganJenis Font dan Name dengangrbFont. Tambahkan sebuahcombobox di dalam groupboxtersebut. Ubah property Namedengan cboFont dan Textdikosongkan. Setting propertyStyle dengan csSimple.Padaproperty Items isikan denganbeberapa 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 Namedengan grbKarakteristik Tambahkan 3 buah checkbox di dalam groupbox tersebut kemudian ubahmasing-masing property captionnnya dengan : Bold, Italic dan Underline. Ubah masing-masingproperty Name dengan chkbold, chkitalic dan chkunderline.Terakhir, tambahkan groupbox setting property name dengan grbukuran, dan caption : UkuranFont. Tambahkan sebuah combobox dalam grbukuran kemudian setting property Name dengancboukuran, text dikosongkan dan style dengan csDropDownList.

Property KeteranganFilter 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

Page 21: Modul Delphi

Pemrograman Delphi – Hal : 21

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

Untuk pengkodeannya adalah sebagai berikut :unit FormatTeks;

interface

usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Spin, ExtCtrls;

typeTfrmTeks = 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;

varfrmTeks: TfrmTeks;bold,italic,underline : boolean;

implementation

{$R *.dfm}procedure TfrmTeks.rdgWarnaClick(Sender: TObject);beginwith lbldelphi.Font docase rdgwarna.ItemIndex of0 : 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;beginwith lbldelphi.Font doif bold then Style:=Style+[fsbold]

Page 22: Modul Delphi

Pemrograman Delphi – Hal : 22

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

else Style:=Style-[fsbold];

with lbldelphi.Font doif underline then Style:=Style+[fsUnderline]else Style:=Style-[fsUnderline];

with lbldelphi.Font doif italic then Style:=Style + [fsitalic]else Style:=style-[fsitalic];

end;

procedure TfrmTeks.chkboldClick(Sender:TObject);beginif chkbold.State = cbchecked then bold:=trueelse bold:=false;efektulisan(bold,underline,italic);

end;

procedure TfrmTeks.chkitalicClick(Sender:TObject);beginif chkitalic.State = cbchecked then italic:=trueelse italic := false;efektulisan(bold,underline,italic);

end;

procedure TfrmTeks.chkunderlineClick(Sender:TObject);beginif chkunderline.State = cbchecked then

underline:=trueelse underline:=false;efektulisan(bold,underline,italic);

end;

procedure TfrmTeks.FormActivate(Sender:TObject);var i : byte;beginFor i:=8 to 72 docboukuran.Items.Add(inttostr(i));

end;

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

end;end.

Soal 9 :Disainlah form seperti tampilan disamping ini !Untuk form setting property :Name : frmMemo. Caption :frmMemoTambahkan komponen opendialog(dari tab Dialogs). Setting propertyName dengan OpenDlgFile.Tambahkan button, ubah captiondengan Buka File dan Name denganbtnbukafile.Tambahkan dua buah button disamping button Buka File kemudiansetting property Name masing-masing: btnHapus dan btnSelesai. Sesuaikancaptionnya 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);

Page 23: Modul Delphi

Pemrograman Delphi – Hal : 23

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

end;

procedure TfrmMemo.btnselesaiClick(Sender: TObject);beginapplication.Terminate;

end;

procedure TfrmMemo.btnhapusClick(Sender: TObject);beginmemoket.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 listboxkemudian ubah property Namemasing-masing dengan lstKotadan lstTerpilih.Tambahkan label dan editbox.Pada label ganti caption denganJumlah data dan Name padaeditbox dengan editjumlah.Kosongkan property textnya.Tambahkan 4 buah buttonsesuaikan property captionnya(Add, Remove, Remove Alldan Exit). Setting propertyName dengan btnAdd,btnRemove, btnRemoveAll,dan btnexit.Pengkodeannya sebagai berikut :

Procedure TForm1.FormCreate(Sender: TObject);beginlstkota.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;beginif lstkota.ItemIndex = -1 then

MessageDlg('Pilih Dulu Item Pada Listbox',mtinformation,[mbok],0)elsebeginindeks:=lstkota.ItemIndex;lstterpilih.Items.Add(lstkota.Items[indeks]);editjumlah.Text := IntToStr(lstkota.Items.Count);end;

end;

procedure TForm1.btnexitClick(Sender: TObject);beginapplication.Terminate;

end;

procedure TForm1.btnremoveClick(Sender: TObject);var indeks : integer;begin

Page 24: Modul Delphi

Pemrograman Delphi – Hal : 24

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

if lstterpilih.ItemIndex = -1 thenMessageDlg('Pilih Dulu Item Pada Listbox',mtinformation,[mbok],0)

elsebeginindeks:=lstterpilih.ItemIndex;lstterpilih.Items.Delete(indeks);editjumlah.Text := IntToStr(lstkota.Items.Count);end;

end;

procedure TForm1.btnremoveallClick(Sender: TObject);beginlstterpilih.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 namedengan lstKodePeg dan isikan Items dengan : ADM, FIN, EDP, MRK. Demikian pula untuk listboxgolongan (Name : LstGol) dengan Items : I, II, dan III.

Sesuaikan komponen yanglain dengan tampilan form.Pengkodean untuk form iniadalah sebagai berikut :

procedure TfrmGaji.btnexitClick(Sender: TObject);beginapplication.Terminate;

end;

procedure TfrmGaji.lstkodepegClick(Sender: TObject);begin

case lstkodepeg.ItemIndex of0 : begin

editdivisi.Text:='Administrasi';edittjabatan.Text:='100000';end;

1 : begineditdivisi.Text:='Keuangan';edittjabatan.Text:='125000';end;

2 : begineditdivisi.Text:='Electronic Data Processing';edittjabatan.Text:='150000';end;

3 : begineditdivisi.Text:='Pemasaran';edittjabatan.Text:='125000';end;

end;end;

procedure TfrmGaji.lstgolClick(Sender: TObject);

Page 25: Modul Delphi

Pemrograman Delphi – Hal : 25

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

beginif 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);beginif editjumlahanak.text='' then editjumlahanak.text:='0';edittanak.Text:=IntToStr(StrToInt(editjumlahanak.Text)*10000);

end;

procedure TfrmGaji.EditjumlahanakKeyPress(Sender: TObject; var Key: Char);beginif not (key in ['0'..'9',’,’,#8]) then key:=#0;

end;

procedure TfrmGaji.btnhitungClick(Sender: TObject);beginedittunj.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 captionnyadengan Pemrograman Delphidan Name dengan lblTeks.Tambahkan sebuah groupboxdi bawah kemudian ubahcaptionnya dengan Huruf; danName dengan grbHuruf.Tambahkan 3 buah checkboxke dalam groupbox.Settingproperty caption masing-masing checkbox denganBold, Italic dan Underline.Setting pula property namemasing-masing denganchkbold, chkitalic, danchkunderline.

Tambahkan sebuah groupbox, setting property name dengan grbsize dan caption dengan UkuranHuruf. Tambahkan sebuah combobox di dalamnya dan ubah Namenya dengan cbosize dankosongkan property Textnya.Selanjutnya tambahkan sebuah radiogroup setting property Name dengan rdgwarna. Setting captiondengan 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 settingproperty Name dengan scbRed, scbGreen dan scbBlue. Setting juga property LargeChange dengan50.Terakhir, tambahkan sebuah button setting namenya dengan btnganti dan caption dengan GantiHuruf. Tambahkan sebuah bitbtn, ganti Kind dengan bkClose.Pengkodeannya adalah sebagai berikut :unit DemoScrollBar;

interface

Page 26: Modul Delphi

Pemrograman Delphi – Hal : 26

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

usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Buttons, ExtCtrls;

typeTfrmDemo = 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;

varfrmDemo: TfrmDemo;cTeks : string;

implementation

{$R *.dfm}

procedure TfrmDemo.bitbtncloseClick(Sender: TObject);beginapplication.Terminate;

end;

procedure TFrmDemo.Aturwarna;var red,green,blue : integer;beginred:=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

Page 27: Modul Delphi

Pemrograman Delphi – Hal : 27

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

aturwarna;end;

procedure TfrmDemo.chkboldClick(Sender: TObject);beginif 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);beginif 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);beginif 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);beginlblteks.Font.Size := StrToInt(cbosize.Text);

end;

procedure TfrmDemo.FormCreate(Sender: TObject);var i:byte;beginFor i:=8 to 72 docbosize.Items.Add(IntToStr(i));

cbosize.ItemIndex := 0;end;

procedure TfrmDemo.btngantiClick(Sender: TObject);begincTeks:=Inputbox('Ubah Teks','Masukkan Teks :','');lblteks.Caption := cTeks;

end;end.

Soal 13Buatlah 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 = 8000002. Jika golongan = II maka gaji pokok = 15000003. 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

Page 28: Modul Delphi

Pemrograman Delphi – Hal : 28

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

usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, ExtCtrls, StdCtrls, ExtDlgs;

typeTfrmDataKry = 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;

varfrmDataKry: TfrmDataKry;cCaption : string;direction : byte;totcounter, counter : integer;

implementation

{$R *.dfm}

procedure TfrmDataKry.Timer1Timer(Sender: TObject);beginfrmDataKry.caption := copy(cCaption,1,counter);IF counter>totcounter thendirection:=2;

IF counter=0 thendirection:=1;

Page 29: Modul Delphi

Pemrograman Delphi – Hal : 29

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

CASE direction of1 : inc(counter);2 : begin

frmDataKry.Caption := '';counter:=0end;

end;end;

procedure TfrmDataKry.FormActivate(Sender: TObject);begincCaption := frmDataKry.Caption; counter:=0;totcounter := Length(cCaption);end;

procedure TfrmDataKry.lstgolClick(Sender: TObject);beginif 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);begincase cboBagian.ItemIndex of0 : 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);beginif openpicturedialog1.Execute thenif openpicturedialog1.FileName <> '' then

imgfoto.Picture.LoadFromFile(openpicturedialog1.FileName)else

imgfoto.Picture := NIL;end;

procedure TfrmDataKry.btnkosongClick(Sender: TObject);begineditNik.Text:=''; editNama.Text:='';memoAlamat.Text :=''; editbruto.Text:='';editnetto.text:=''; editpajak.Text:='';edittunj.Text:=''; editnamabag.Text:='';editgapok.Text:='';

Page 30: Modul Delphi

Pemrograman Delphi – Hal : 30

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

end;

procedure TfrmDataKry.btnkeluarClick(Sender: TObject);beginapplication.Terminate;end;

procedure TfrmDataKry.btnprosesClick(Sender: TObject);begineditbruto.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));end;

Tambahan : Buatlah validasi untuk tiap komponen yang diperlukan !

Soal 14Soal ini merupakan modifikasi dariSoal 2 dimana penggunaan komponenedit diganti dengan komponenmaskedit (untuk NIM, Nama,Alamat, Telepon dan TanggalLahir).Tambahkan pula komponenopenpicturedialog (dari tab Dialogs),image dan sebuah button (Masukkanfoto).Sesuaikan property name tiap-tiap komponen dengan pengkodeandi bawah ini!Pada komponen maskedit sesuaikanproperty Editmask seperti tampilantabel berikut ini :

Komponen EditMaskEditMaskNim 99999999;1;_EditMaskNama >L<llllllllllllll;1;_EditMaskAlamat >L<lllllllllllllllllll;1;_EditMaskTelepon !\(9999\)000000;1;_EditMaskTglLahir !99/99/0000;1;_

Timer List box

Combo box

OpenpictureDialog

Image

Page 31: Modul Delphi

Pemrograman Delphi – Hal : 31

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

procedure TfrmBiodata.btnkeluarClick(Sender: TObject);beginapplication.Terminate;

end;

procedure TfrmBiodata.btnfotoClick(Sender: TObject);beginif openpicturedialog1.Execute thenif openpicturedialog1.FileName <> '' then

imgfoto.Picture.LoadFromFile(openpicturedialog1.FileName)else

imgfoto.Picture := NIL;end;

Soal 15Program berikut merupakan modifikasi penggunaan editmask untuk program sebelumnya (HitungGrade). Adapun komponen yang diganti adalah untuk komponen nilai (Mid, UA, TT, dan Abs,TotNil, dan Grade) yang semula menggunakan edit digantikan dengan editmask dengan settingproperty 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);beginmaskedittotNil.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);begineditNim.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);beginmaskeditabs.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);beginapplication.Terminate;

end;

Page 32: Modul Delphi

Pemrograman Delphi – Hal : 32

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

BAGIAN V : MENUMenu pada dasarnya dapat dibedakan atas 2 jenis yaitu : menu pulldown dan menu popup. Menupulldown pada dasarnya merupakan penggabungan beberapa menu popup hingga membentuk suatukesatuan (klasifikasi) tugas atau fungsi tertentu. Umumnya definisi pop up menu dijelaskan sebagaihide menu yang akan ditampilkan dengan tombol tertentu (biasanya klik kanan pada mouse).Untuk membuat menu utama dapat dibuat dengan memilih komponen mainmenu kemudianmenambahkannya ke form.Membuat Menu

1. Setelah ditambahkan pada formklik ganda pada komponenmainmenu pada form. Cara lainadalah dengan memilih propertyItems pada object inspector.Kemudian akan ditampilkan menudesigner seperti gambar disamping ini :

2. Untuk menambahkan item menuklik pada object inspectorkemudian 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 captionMenu2 dan item menu sebanyak 5 buah.

Page 33: Modul Delphi

Pemrograman Delphi – Hal : 33

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

Property Checked,Enabled dan ShortCutProperty Checked padaTMenuItem digunakanuntuk memberi ataumenghilangkan cek signpada suatu item menu. Jikabernilai true maka itemmenu tersebut akan ditandaitanda cek dan sebaliknyajika bernilai false maka akanitem menu tidak akandiceklis.

Property enabled digunakan untuk mengaktifkan atau menonaktifkan suatu item menu. Jika itemmenu tidak aktif maka item menu tersebut biasanya akan berwarna gray.

Property shortcut digunakan untuk menentukan shortcut yang akan digunakan untuk memilih itemdalam menu. Untuk menentukan shortcut maka pilih item menu kemudian ubah property shortcutpada 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. Kemudiandesainlah item menu apa yang akan ditampilkan pada floating menu. Umumnya floating menuberupa 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 UpMenu, dan setting property PopUpMenu dengan PopUpWarna.Untuk menghubungkan menu pop up dengan form dilakukan dengan memilih object inspectorkemudian klik pilihan di sebelah kanan property Pop Up Menu.

Event On Context PopUp digunakan untuk mengatur event tertentu pada komponen ketika tombolmouse kanan diklik Dengan mensetting event ini maka menu popup dapat diatur agar terhubungdengan komponen itu sendiri.

Pada bagian deklarasi variabel tambahkan sebuah variabel global dengan nama Komponen danbertipe byte. Nilai 0 pada variabel ini berarti komponen form dan 1 berarti komponen shape itusendiri.

Kemudian klik pada komponen shape dan pilih event On Context Pop Up pada object inspector.Isikan kode program berikut ini :

Page 34: Modul Delphi

Pemrograman Delphi – Hal : 34

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

procedure TfrmPopUpMenu.Shape1ContextPopup(Sender: TObject;MousePos: TPoint; var Handled: Boolean);

beginKomponen := 1; //berarti shape

end;

Pada masing-masing pilihan item popup menu tambahkan kode program berikut ini :procedure TfrmPopUpMenu.PopUpMerahClick(Sender: TObject);begincase komponen of0 : color:=clred;1 : shape1.Brush.Color := clred;end;komponen := 0;

end;

procedureTfrmPopUpMenu.PopUpHijauClick(Sender:TObject);begincase komponen of0 : color:=clgreen;1 : shape1.Brush.Color := clgreen;end;komponen := 0;

end;

procedureTfrmPopUpMenu.PopUpBiruClick(Sender:TObject);begincase komponen of0 : color:=clblue;1 : shape1.Brush.Color := clblue;end;komponen := 0;

end;

Tampilan hasilnya adalah seperti berikut ini :

Fungsi MessageDlgAdalah fungsi yang digunakan untuk menampilkan kotak dialog pesan pada tengah screen. Kotakdialog 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. Nilaiyang dapat digunakan dalam parameter ini berupa :

Nilai KeteranganmtWarning Kotak pesan yang menampilkan simbol peringatan.

Page 35: Modul Delphi

Pemrograman Delphi – Hal : 35

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

mtError Kotak pesan yang menampilkan tanda kesalahan.mtInformation Kotak pesan yang menyatakan informasimtConfirmation 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 berupatipe himpunan (set) yang dapat berupa :Nilai Keterangan Nilai KeteranganmbYes Tombol Yes mbNo Tombol NombOk Tombol Ok mbCancel Tombol CancelmbAbort Tombol Abort mbRetry Tombol RetrymbIgnore Tombol Ignore mbAll Tombol AllmbNoToAll Tombol No To All mbYesToAll Tombol Yes To AllmbHelp Tombol HelpBerhubungan dengan parameter ini, secara default telah disediakan tiga konstanta untuk keperluanini yaitu : mbYesNoCancel, mbOKCancel, dan mbAbortRetryIgnore.Parameter keempat digunakan untuk menentukan nomor identitas topik Help yang akan ditampilkanjika tombol Help diklik. Secara default diberi nomor 0.Fungsi MessageDlg akan mengembalikan nilai berupa tipe data word. Hasil yang dihasilkan dapatberupa :Nilai Keterangan Nilai KeteranganmrNone Tidak ada yang dipilih mrAbort Tombol abort yang dipilihmrYes Tombol Yes yang dipilih mrOk Tombol Ok yang dipilihmrRetry Tombol Retry yang dipilih mrNo Tombol No yang dipilihmrCancel Tombol Cancel yang dipilih mrIgnore Tombol Ignore yang dipilihmrAll Tombol All yang dipilih

Fungsi InputBox, digunakan untuk menampilkan kotak dialog berisi sebuah kotak edit tempatmengisikan 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. APromptadalah teks yang ditulis untuk menerangkan data input pada editbox yang nantinya akandimasukkan. ADefault adalah nilai awal yang akan muncul pada editbox sebagai standard inputbox.

BAGIAN VI : PEMROGRAMAN DATABASE DENGAN DELPHIKomponen DatabaseDalam Delphi IDE, komponen database diklasifikasikan dalam dua page pada component palleteyaitu : Page Data Access dan Page Data Controls.Komponen Data Access termasuk komponen non visual, merupakan komponen yang secaralangsung berhubungan dengan database (file secara fisik). Komponen yang ada pada page DataAccess 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.

Page 36: Modul Delphi

Pemrograman Delphi – Hal : 36

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

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 Database1. 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 padalangkah 2. Pilih field dengan mengubah propery Field.

Gambar Alur Kerja Komponen Database

TTableKomponen ini merupakan komponen dasar dalam pemrograman database yang merupakan turunandari 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 recordakan diurutkan menurut index utama (primary key). Jika property ini terisi maka propertyIndexName akan otomatis dikosongkan.

IndexName, berfungsi identik dengan IndexFieldNames. Yang disetting pada property iniadalah 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 readatau write dan hanya dapat diread.

Filtered. Jika property ini bernilai True maka berarti table dalam keadaan terfilter berdasarkankondisi filterisasi pada property Filter.

Filter, adalah property tempat menyimpan kondisi (syarat) filterisasi.Penggunaan filterisasi record dengan Filter ini hanya dapat digunakan untuk menyatakankondisi yang dinyatakan dengan satu baris string sedangkan jika terdapat kondisi lebih dari satubaris 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

Database

BDE

Dataset DataSource Data Control

Page 37: Modul Delphi

Pemrograman Delphi – Hal : 37

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

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 thenBegin

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 Method1. 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 tabletersebut ditambahkan dalam TField. Jika field tertentu tidak akan ditampilkan dalam aplikasi dapatdilakukan dengan cara : Klik kanan pada komponen table kemudian akan muncul Fields Editor.Untuk menambahkan field dari dataset dapat dilakukan dengan klik kanan kemudian memilih AddField.

Page 38: Modul Delphi

Pemrograman Delphi – Hal : 38

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

Membuat Field Baru (New Field Persistent).Terdapat 3 jenis field persistent yaitu : DataFields, Calculated Fields, dan LookupFields. Pada fieldeditor 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 untukmenghubungkan komponen dengan Dataset.

Soal 1

Tambahkan sebuah table dan datasource pada form. Pada table kemudian setting propertyDatabaseName dengan DBDemos dan TableName dengan Animal.Dbf. Setting pula property Namedengan tblDemos. Pada Datasource setting property Dataset dengan tblDemos dan name dengandsDemos.

Tambahkan DBNavigator pada form kemudian setting property Datasource dengan dsDemos.Tambahkan sebuah DBGrid pada form kemudian setting property Datasource dengan dsDemos.

Page 39: Modul Delphi

Pemrograman Delphi – Hal : 39

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

Tambahkan sebuah DBImage kemudian setting property Datasource dengan dsDemos dan Datafielddengan BMP. Tambahkan komponen DBEdit kemudian setting property Datasource dengandsDemos dan Datafield dengan Area. Terakhir tambahkan sebuah bitbutton atur captionnya denganExit, 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 propertyDatabaseName dengan DBDemos dan TableName dengan Vendor.db. Setting pula property Namedengan tblVendor. Pada Datasource setting property Dataset dengan tblVendor dan name dengandsVendor.Tambahkan sebuah DBGrid pada form kemudian setting property Datasource dengan dsVendor.Tambahkan 5 buah button kemudian sesuaikan captionnya dengan tampilan dan namenya dengancode program berikut ini :

procedure TForm1.btnKeluarClick(Sender: TObject);beginapplication.Terminate;

end;

procedure TForm1.FormActivate(Sender:TObject);begintblVendor.Active := true;

end;

procedure TForm1.FormClose(Sender : TObject);begintblVendor.Active := false;

end;procedure TForm1.btnAwalClick(Sender:TObject);begintblVendor.First;btnawal.Enabled := false;btnsebelum.Enabled := false;btnterakhir.Enabled := true;btnberikut.Enabled := true;

end;

procedure TForm1.btnTerakhirClick(Sender:TObject);begintblVendor.Last;btnterakhir.Enabled := false;btnberikut.Enabled := false;btnawal.Enabled := true;btnsebelum.Enabled := true;

end;

procedure TForm1.btnBerikutClick(Sender:TObject);beginif not tblVendor.Eof thenbegintblVendor.Next;btnawal.Enabled := true;btnterakhir.Enabled := true;btnsebelum.Enabled := true;

btnberikut.Enabled := trueendelsebeginbtnberikut.Enabled := false;btnterakhir.Enabled := false;

end;end;

Page 40: Modul Delphi

Pemrograman Delphi – Hal : 40

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

procedureTForm1.btnSebelumClick(Sender:TObject);beginif not tblVendor.Bof thenbegintblVendor.Prior;btnawal.Enabled := true;btnterakhir.Enabled := true;btnsebelum.Enabled := true;btnberikut.Enabled := true

end

elsebegin

btnsebelum.Enabled :=false;

btnawal.Enabled :=false;end;

end;

Soal 3

Tambahkan sebuah table dan datasource pada form. Pada table kemudian setting propertyDatabaseName dengan DBDemos dan TableName dengan Employee.db. Setting pula property Namedengan tblEmployee. Pada Datasource setting property Dataset dengan tblEmployee dan name dengandsEmployee. Tambahkan semua field pada field editor.

Tambahkan sebuah DBGrid pada form kemudian setting property Datasource dengandsEmployee.Tambahkan 4 buah button kemudian sesuaikan captionnya dengan tampilan dan namenyadengan code program berikut ini :

procedure TForm1.btntambahClick(Sender: TObject);beginform2:=TForm2.create(self);with form2 dobegineditEmpNo.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 dobegin

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;

Page 41: Modul Delphi

Pemrograman Delphi – Hal : 41

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

procedure TForm1.btnkeluarClick(Sender: TObject);beginapplication.Terminate;

end;

procedure TForm1.btnubahClick(Sender: TObject);beginform2:=TForm2.create(self);with form2 dobegineditEmpNo.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 dobegin

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);beginif MessageDlg('Data Employee ini akan Dihapus ?',mtconfirmation,[mbYes,mbNo],0) = mrYes thentblEmployee.Delete;

end;

Untuk form kedua pilih menu File | New | Form. Disainlah form seperti tampilan di atas! Sesuaikannama 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 padaform kedua perlu disertakan pada form pertama. Untuk melanjutkan jawab dengan Yes maka unittersebut akan disertakan pada form pemanggil.

Database DesktopContoh berikut akan dibuat tabel dengan struktur tabel sebagai berikut :

Pilih menu Tools | Database Desktop. Darimenu utama Database Desktop pilih menuFile | New | Table. Kemudian pilih jenis

database yang akan dibuat. Untuk contoh ini gunakan standard Paradox. Kemudian klik Ok.

Page 42: Modul Delphi

Pemrograman Delphi – Hal : 42

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

Pada jendele Create Paradox isikan field-field yang diperlukan pada field name. Untuk Type dapatdipilih dengan mengklik kanan tombol mouse atau menekan tombol spasi kemudian memilih tipe datayang diperlukan. Untuk size isikan sesuai rancangan tabel dan untuk key (primary) dapat dipilih denganmenekan spasi.Setelah semua field diisi, pilih Save As untuk menyimpan tabel.

Membuat AliasAlias database digunakan untuk memberi namalogic sebuah folder yang akan digunakan padasetting property DatabaseName pada komponenTTable. Untuk membuka kotak dialog AliasManager pilih Menu Tools | Alias Manager dariDatabase Desktop.

Pilih tombol New kemudian isikan Database Aliasdengan Library. Isikan path dengan nama foldertempat disimpan table Buku. Kemudian klik tombolOk.

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

QREPORTUntuk membuat sebuah report diperlukan paling tidak sebuah dataset (TTable atau TQuery). Dan untukmembuat laporan format detail-header dibutuhkan dua buah dataset (TTable atau TQuery) dan sebuahdatasource.

Band Pada ReportQReport 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 8Komponen QReport1. 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.

Page 43: Modul Delphi

Pemrograman Delphi – Hal : 43

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

4. QRLabel, digunakan untuk mencetak teks di laporan. Teks yang akan dicetak dapat disetting padaproperty caption.

5. QRDBText, digunakan untuk mencetak field dari dataset, calculated field, field string, field numerikdan date.

6. QRExpr, digunakan untuk mencetak hasil perhitungan rumus dari QReport. Misalnya subtotal,grandtotal, dan sebagainya. Untuk membuat formula dari komponen ini dapat disettting padaproperty 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. Untukkeperluan 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 tableditunjukkan berikut ini :Table : VCD

Table Pelanggan

Table HdSewa

Table DtSewa

Table TempSewa

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

Page 44: Modul Delphi

Pemrograman Delphi – Hal : 44

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

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 propertyWindowState dengan wsMaximized. Pada form tersebut tambahkan objek image (dari tab AdditionalVCL) kemudian letakkan di form. Setting property picture dengan gambar untuk background dariaplikasi.

Untuk code program Menu utama adalah sebagai berikut :procedure Tfrmmenu.Keluar1Click(Sender: TObject);beginapplication.Terminate;

end;

procedure Tfrmmenu.Kalkulator1Click(Sender: TObject);beginwinexec('c:\windows\system32\calc.exe',SW_SHOW);

end;

procedure Tfrmmenu.VCD1Click(Sender: TObject);beginfrmcd.show;

end;

procedure Tfrmmenu.About1Click(Sender: TObject);beginapplication.MessageBox('Program Ini Dibuat Oleh:' + #13 +'Nama : XXX ' + #13 +'NPM : 99999999 ' + #13 +'Kelas : XXX ','ABOUT',MB_ICONINFORMATION);

end;

procedure Tfrmmenu.Pelanggan1Click(Sender: TObject);begin

Page 45: Modul Delphi

Pemrograman Delphi – Hal : 45

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

frmpelanggan.show;end;

procedure Tfrmmenu.DaftarPenyewa1Click(Sender: TObject);beginfrmdafpelanggan.QuickRep1.preview;

end;

procedure Tfrmmenu.DaftarCD1Click(Sender: TObject);beginfrmdafvcd.quickrep1.preview;

end;

procedure Tfrmmenu.PeminjamanCD1Click(Sender: TObject);beginfrmsewa.show;

end;

procedure Tfrmmenu.LaporanPenyewaanCD1Click(Sender: TObject);beginfrmlapsewa.Query1.Open;frmlapsewa.quickrep1.preview;

end;

end.

Hasil tampilan rancangan menu di atas adalah sebagai berikut ini :

Page 46: Modul Delphi

Pemrograman Delphi – Hal : 46

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

Form VCD

Siapkan komponen pada form seperti tampilan di atas !Koneksikan komponen datasource dengan table 1 (diberi name : tblVCD). Setting property tableNameke table VCD.db. Tambahkan komponen datasource beri name dengan dsVCD dan datasetnya ketblVCD. 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

usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, Buttons, DB, DBTables, Grids, DBGrids;

typeTfrmcd = 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;

Page 47: Modul Delphi

Pemrograman Delphi – Hal : 47

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

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;

varfrmcd: Tfrmcd;lada, lProses : boolean;

implementation

uses Menu;

{$R *.dfm}

procedure kosong;beginfrmcd.editkodevcd.Text := '';frmcd.editjudul.text := '';frmcd.editharga.text := '0';frmcd.editjumlah.text := '0';

end;

procedure tampil;beginfrmcd.editkodevcd.Text := frmcd.tblVCD['kodevcd'];frmcd.editjudul.text := frmcd.tblvcd['judul'];frmcd.editharga.text := floattostr(frmcd.tblvcd['harga']);

Page 48: Modul Delphi

Pemrograman Delphi – Hal : 48

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

frmcd.editjumlah.text := inttostr(frmcd.tblvcd['jumlah']);end;

procedure aktifkan(x:boolean);beginfrmcd.editkodevcd.Enabled := x;frmcd.editjudul.Enabled := x;frmcd.editharga.Enabled := x;frmcd.editjumlah.Enabled := x;

end;

procedure tombol(x:boolean);beginfrmcd.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);beginif length(editkodevcd.Text)<5 thenbegin

application.MessageBox('Kode Tidak Lengkap, Harus 5 Digit','Validasi VCD',MB_ICONSTOP);editkodevcd.Text := '';bitbtnbatal.OnClick(sender);

endelsebeginif tblvcd.FindKey([editkodevcd.Text]) thenbeginapplication.MessageBox('Kode VCD Ini Telah Ada Dalam Database','Validasi VCD',MB_ICONSTOP);editkodevcd.Text := '';editkodevcd.SetFocus;end

elseeditjudul.SetFocus;

end;end;

procedure Tfrmcd.FormActivate(Sender: TObject);begintblvcd.Open; aktifkan(false); tombol(true);if tblvcd.RecordCount > 0 thenbegintblvcd.Last; tampil;end;

end;

Page 49: Modul Delphi

Pemrograman Delphi – Hal : 49

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

procedure Tfrmcd.FormClose(Sender: TObject; var Action: TCloseAction);begintblvcd.Close; lproses:=false;

end;

procedure Tfrmcd.BitBtnkeluarClick(Sender: TObject);beginfrmcd.Close;

end;

procedure Tfrmcd.btnawalClick(Sender: TObject);begintblvcd.First; tampil;

end;

procedure Tfrmcd.btnakhirClick(Sender: TObject);begintblvcd.last; tampil;

end;

procedure Tfrmcd.btnberikutClick(Sender: TObject);begintblvcd.Next; tampil;

end;

procedure Tfrmcd.btnsebelumClick(Sender: TObject);begintblvcd.prior; tampil;

end;

procedure Tfrmcd.BitbtnTambahClick(Sender: TObject);beginlada:=true; lProses:=false; aktifkan(true);Tombol(false); kosong;editkodevcd.SetFocus;

end;

procedure Tfrmcd.BitBtnbatalClick(Sender: TObject);beginkosong; aktifkan(false); tombol(true); lproses:=false; lada:=false;tblvcd.Last; tampil;

end;

procedure Tfrmcd.edithargaKeyPress(Sender: TObject; var Key: Char);beginif not ((key>='0') AND (key<='9') or (key=#8)) then key:=#0;

end;

procedure Tfrmcd.BitbtnsimpanClick(Sender: TObject);beginif (editkodevcd.text='') or (editjudul.Text='') or(editharga.text='0') or (editjumlah.text='0') thenapplication.MessageBox('Isian Tidak Lengkap','Error',MB_ICONSTOP)

elsebeginif not lproses then //tambah databegin

Page 50: Modul Delphi

Pemrograman Delphi – Hal : 50

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

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);endelsebegin //edit datatblvcd.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 thenbegintblvcd.Last; tampil;

end;end;lproses:=false; lada:=false;

end;

procedure Tfrmcd.BitBtnUbahClick(Sender: TObject);beginlada:=true; lProses:=true; aktifkan(true);editkodevcd.Enabled :=false;Tombol(false);editjudul.SetFocus;

end;

procedure Tfrmcd.BitBtnHapusClick(Sender: TObject);beginIf tblvcd.RecordCount > 0 thenIf application.MessageBox('Data Ini Akan Dihapus?','Hapus Data',MB_ICONQUESTION OR MB_YESNO) = mrYes thentblvcd.Delete;

end;

procedure Tfrmcd.DBGrid1KeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);

beginif not tblvcd.Eof then tampil;end;

procedure Tfrmcd.DBGrid1CellClick(Column: TColumn);beginif not tblvcd.Eof then tampil;end;

procedure Tfrmcd.editjumlahKeyPress(Sender: TObject; var Key: Char);beginif not ((key>='0') AND (key<='9') or (key=#8)) then key:=#0;

end;

Page 51: Modul Delphi

Pemrograman Delphi – Hal : 51

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

procedure Tfrmcd.editkodevcdChange(Sender: TObject);beginif lada thenif length(editkodevcd.text)=5 then editkodevcd.OnExit(editkodevcd);

end;

end.

Form Pelanggan

Siapkan komponen pada form seperti tampilan di atas !Koneksikan komponen datasource dengan table 1 (diberi name : tblPlg). Setting property tableNameke table Pelanggan.db. Tambahkan komponen datasource beri name dengan dsPlg dan datasetnyake tblPlg. Koneksikan pula komponen DBGrid (datasource = dsPlg).

Listing programnya adalah sebagai berikut :unit Pelanggan;

interface

usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls, DB, DBTables, Grids, DBGrids, Buttons;

typeTfrmpelanggan = class(TForm)Label1: TLabel;Label3: TLabel;Label4: TLabel;Label5: TLabel;Label6: TLabel;editkodeplg: TEdit;editnamaplg: TEdit;editalamat: TEdit;edittelp: TEdit;Bitbtnsimpan: TBitBtn;

Page 52: Modul Delphi

Pemrograman Delphi – Hal : 52

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

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;

varfrmpelanggan: Tfrmpelanggan;lada, lProses : boolean;

implementation

uses VCD;

{$R *.dfm}procedure kosong;beginfrmpelanggan.editkodeplg.Text := '';frmpelanggan.editnamaplg.text := '';frmpelanggan.editalamat.text := '';frmpelanggan.edittelp.text := '';frmpelanggan.rdgjk.ItemIndex := -1

end;

procedure tampil;beginfrmpelanggan.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' thenfrmpelanggan.rdgjk.ItemIndex := 0

elsefrmpelanggan.rdgjk.ItemIndex := 1;

Page 53: Modul Delphi

Pemrograman Delphi – Hal : 53

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

end;

procedure aktifkan(x:boolean);beginfrmpelanggan.editkodeplg.Enabled := x;frmpelanggan.editnamaplg.Enabled := x;frmpelanggan.edittelp.Enabled := x;frmpelanggan.editalamat.Enabled := x;frmpelanggan.rdgjk.Enabled := x;

end;

procedure tombol(x:boolean);beginfrmpelanggan.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);begintblplg.Open; lProses:=false; aktifkan(false); tombol(true);if tblplg.RecordCount > 0 thenbegintblplg.Last; tampil;end;

end;

procedure Tfrmpelanggan.BitbtnTambahClick(Sender: TObject);beginlProses:=false; aktifkan(true); lada:=true;Tombol(false); kosong;editkodeplg.SetFocus;

end;

procedure Tfrmpelanggan.BitBtnbatalClick(Sender: TObject);beginkosong; aktifkan(false); tombol(true); lproses:=false; lada:=false;tblplg.Last; tampil;

end;

procedure Tfrmpelanggan.editkodeplgExit(Sender: TObject);beginif length(editkodeplg.Text)<5 then

beginapplication.MessageBox('Kode Tidak Lengkap, Harus 5 Digit','Validasi Pelanggan',MB_ICONSTOP);bitbtnbatal.OnClick(sender);

endelsebeginif tblplg.FindKey([editkodeplg.Text]) thenbeginapplication.MessageBox('Kode Pelanggan Ini Telah Ada Dalam Database',

'Validasi Pelanggan',MB_ICONSTOP);editkodeplg.Text := '';editkodeplg.SetFocus;

endelseeditnamaplg.SetFocus;

end;

Page 54: Modul Delphi

Pemrograman Delphi – Hal : 54

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

end;

procedure Tfrmpelanggan.BitbtnsimpanClick(Sender: TObject);beginif (editkodeplg.text='') or (editnamaplg.Text='') or(editalamat.Text='') or (edittelp.text='') thenapplication.MessageBox('Isian Tidak Lengkap','Error',MB_ICONSTOP)

elsebeginif not lproses then //tambah databegintblplg.Append;tblplg['Kodeplg']:=editkodeplg.Text;tblplg['namaplg']:=editnamaplg.Text;tblplg['alamat']:=editalamat.Text;tblplg['telepon']:=edittelp.Text;if rdgjk.ItemIndex = 0 then

tblplg['jk']:=1else

tblplg['jk']:=2;tblplg.Post;aktifkan(false); tombol(true);endelsebegin //edit datatblplg.edit;tblplg['namaplg']:=editnamaplg.Text;tblplg['alamat']:=editalamat.Text;tblplg['telepon']:=edittelp.Text;if rdgjk.itemindex = 0 then

tblplg['jk']:=1else

tblplg['jk']:=2;tblplg.Post;aktifkan(false); tombol(true);end;if tblplg.RecordCount > 0 thenbegintblplg.Last; tampil;

end;end;lada:=false; lproses:=false;

end;

procedure Tfrmpelanggan.BitBtnUbahClick(Sender: TObject);beginlProses:=true; aktifkan(true); lada:=true;editkodeplg.Enabled :=false;Tombol(false);editnamaplg.SetFocus;

end;

procedure Tfrmpelanggan.BitBtnHapusClick(Sender: TObject);beginIf tblplg.RecordCount > 0 thenIf application.MessageBox('Data Ini Akan Dihapus?','Hapus Data',MB_ICONQUESTION OR MB_YESNO) = mrYes thentblplg.Delete;

end;

procedure Tfrmpelanggan.DBGrid1KeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);

beginif not tblplg.Eof then tampil;end;

procedure Tfrmpelanggan.DBGrid1CellClick(Column: TColumn);begin

Page 55: Modul Delphi

Pemrograman Delphi – Hal : 55

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

if not tblplg.Eof then tampil;end;

procedure Tfrmpelanggan.btnsebelumClick(Sender: TObject);begintblplg.prior; tampil;

end;

procedure Tfrmpelanggan.btnakhirClick(Sender: TObject);begintblplg.last; tampil;

end;

procedure Tfrmpelanggan.btnawalClick(Sender: TObject);begintblplg.first; tampil;

end;

procedure Tfrmpelanggan.btnberikutClick(Sender: TObject);begintblplg.next; tampil;

end;

procedure Tfrmpelanggan.editkodeplgChange(Sender: TObject);beginif lada thenbeginif length(editkodeplg.text)=5 then editkodeplg.OnExit(editkodeplg);

end;end;

end.

Form Penyewaan CD

Page 56: Modul Delphi

Pemrograman Delphi – Hal : 56

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

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 TableNamedengan 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 denganlblBanner, dan pnlBanner. Tambahkan pula sebuah timer di dalamnya, setting property intervalnyadengan 200.

Selanjutnya listing programnya adalah sebagai berikut :unit Sewa;

interface

usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, DB, Grids, DBGrids, DBTables, ComCtrls, ExtCtrls;

typeTfrmsewa = 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;

Page 57: Modul Delphi

Pemrograman Delphi – Hal : 57

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

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;

varfrmsewa: Tfrmsewa;

implementation

{$R *.dfm}

procedure tambahnonota;var cnonota : string[6];beginif frmsewa.tblhdsewa.RecordCount = 0 then

cnonota:='1'elsebeginfrmsewa.tblhdsewa.Last;cnonota := floattostr((strtofloat(frmsewa.tblhdsewa['nonota'])+1));

end;case length(cnonota) of1 : 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);

Page 58: Modul Delphi

Pemrograman Delphi – Hal : 58

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

beginfrmsewa.Editkodevcd.Enabled := x;frmsewa.editkodeplg.enabled := x;frmsewa.editharga.Enabled := x;frmsewa.dtptanggal.Enabled := x;frmsewa.editqty.Enabled := x;

end;

procedure kosong;beginfrmsewa.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;beginfrmsewa.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 thenbeginfrmsewa.tbltemp.first;while not frmsewa.tbltemp.eof dobeginntotal:=ntotal + frmsewa.tbltemp['jumlah'];frmsewa.tbltemp.Next;

end;frmsewa.edittotal.text:=floattostr(ntotal);

end;end;

procedure Tfrmsewa.FormActivate(Sender: TObject);begintblhdsewa.Open; tbldtsewa.Open; tblplg.Open; tblvcd.Open;tbltemp.Open; kosong;if tbltemp.RecordCount > 0 thenbegintbltemp.first;

Page 59: Modul Delphi

Pemrograman Delphi – Hal : 59

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

while not tbltemp.Eof dotbltemp.Delete;

end;tambahnonota;

end;

procedure Tfrmsewa.FormClose(Sender: TObject; var Action: TCloseAction);begintblhdsewa.Close; tbldtsewa.Close; tblvcd.Close;tblplg.Close; tbltemp.Close;

end;

procedure Tfrmsewa.editkodeplgExit(Sender: TObject);beginif editkodeplg.Text <> '' thenbeginif not tblplg.FindKey([editkodeplg.Text]) thenbeginapplication.MessageBox('Kode Pelanggan Ini Belum Terdaftar','Validasi Pelanggan',MB_ICONSTOP);editkodeplg.Text := '';editnama.Text := '';editalamat.Text := '';edittelepon.Text := '';editkodeplg.Setfocus;endelsebegineditnama.Text := tblplg['Namaplg'];editalamat.Text := tblplg['Alamat'];edittelepon.Text := tblplg['telepon'];editkodevcd.Setfocus;end;

end;end;

procedure Tfrmsewa.btnkeluarClick(Sender: TObject);beginfrmsewa.close;

end;

procedure Tfrmsewa.editkodeplgKeyPress(Sender: TObject; var Key: Char);beginif key = #13 then editkodeplg.OnExit(sender);end;

procedure Tfrmsewa.editkodeplgChange(Sender: TObject);beginif length(editkodeplg.Text)=5 then editkodeplg.OnExit(sender);

end;

procedure Tfrmsewa.EditkodevcdChange(Sender: TObject);beginif length(editkodevcd.Text)=5 then editkodevcd.onExit(sender);

end;

procedure Tfrmsewa.EditkodevcdExit(Sender: TObject);

Page 60: Modul Delphi

Pemrograman Delphi – Hal : 60

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

beginif editkodevcd.Text <> '' thenbeginif not tblvcd.FindKey([editkodevcd.Text]) thenbeginapplication.MessageBox('VCD Ini Belum Terdaftar','Validasi VCD',MB_ICONSTOP);editkodevcd.Text := '';editjudul.Text := '';editharga.Text := '';editkodevcd.Setfocus;endelseif tblvcd['jumlah']=0 thenbeginapplication.MessageBox('Stok Kosong','Sewa VCD',MB_ICONSTOP);editkodevcd.Text := '';editkodevcd.setfocus;endelsebegineditjudul.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);beginif key = #13 then editkodevcd.OnExit(sender);end;

procedure Tfrmsewa.editqtyChange(Sender: TObject);begineditjumlah.text := floattostr(strtofloat(editqty.Text) *strtofloat(editharga.Text));

end;

procedure Tfrmsewa.btnokClick(Sender: TObject);begintbltemp.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);beginkosong; aktifkan(false);

Page 61: Modul Delphi

Pemrograman Delphi – Hal : 61

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

if tbltemp.RecordCount > 0 thenbegintbltemp.First;while not tbltemp.Eof dotbltemp.Delete;

end;tambahnonota;

end;

procedure Tfrmsewa.btnsimpanClick(Sender: TObject);beginif tbltemp.RecordCount > 0 thenbegin//simpan ke table Hdsewatblhdsewa.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 Dtsewatbltemp.First;while not tbltemp.Eof dobegintbldtsewa.Append;tbldtsewa['nonota']:=editnonota.Text;tbldtsewa['kodevcd']:=tbltemp['kodevcd'];tbldtsewa['qty']:=tbltemp['qty'];tbldtsewa.Post;

//Update jumlah vcdif tblvcd.FindKey([tbltemp['kodevcd']]) thenbegintblvcd.Edit;tblvcd['jumlah']:=tblvcd['jumlah'] - tbltemp['qty'];tblvcd.Post;

end;tbltemp.Next;end;

end;

if tbltemp.RecordCount > 0 thenbegintbltemp.First;while not tbltemp.Eof dotbltemp.Delete;tbltemp.Next;

end;kosong;tambahnonota;

end;

procedure Tfrmsewa.tmrbannerTimer(Sender: TObject);beginif lblbanner.Left <= pnlbanner.Left then

Page 62: Modul Delphi

Pemrograman Delphi – Hal : 62

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

lblbanner.Left := pnlbanner.widthelse

lblbanner.Left := lblbanner.Left - 10;end;

end.

ReportDaftar CDLayout 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 TblVCDTambahkan komponen QRBand. QRBand1 ditujukan untuk judul. Ubah property BandTypenya denganrbTitle. 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 QRLabeldi dalamnya sesuaikan captionnya dengan tampilan.Pada QRBand3 setting property BandTypenya dengan rdDetail. Tambahkan komponen QRDBText (4buah). Sesuaikan masing-masing dataset dengan TblVCD dan Datafield dengan masing-masing field(KodeVcd, Judul, Harga dan Jumlah). Untuk penomoran berikan komponen QRSysData. Atur settinganproperty Data ke qrsDetailNo.

Selanjutnya untuk menjalankan aplikasi report ini klik kanan di Reportnya kemudian pilih Preview.

Contoh tampilannya ditunjukkan berikut ini :

Page 63: Modul Delphi

Pemrograman Delphi – Hal : 63

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

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

Tambakan komponen TTable setting property TableName dengan Pelanggan.db dan name dengantblPlg.Tambahkan komponen QuickRep pada form kemudian setting property dataset dengan TblPlg.Tambahkan komponen QRBand. QRBand1 ditujukan untuk judul. Ubah property BandTypenya denganrbTitle. 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 QRLabeldi dalamnya sesuaikan captionnya dengan tampilan.Pada QRBand3 setting property BandTypenya dengan rdDetail. Tambahkan komponen QRDBText (4buah). Sesuaikan masing-masing dataset dengan TblPlg dan Datafield dengan masing-masing field(KodePlg, NamaPlg, Alamat, Telepon). Untuk penomoran berikan komponen QRSysData. Atursettingan property Data ke qrsDetailNo. Untuk mencetak Jenis kelamin Pria dan Wanita tambahkankomponen QRExpression. Setting property expressionnya sebagai berikut ini :

Selanjutnya preview tampilan. Contoh tampilannya berikut ini :

Page 64: Modul Delphi

Pemrograman Delphi – Hal : 64

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

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 Jumlahfrom HdSewa a, Dtsewa b, Pelanggan c, VCD dwhere (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 GroupHeader dan ditempatkan di atas Band Detail.Tambahkan komponen QRLabel pada band PageHeader. Ubah property Caption dengan RENTALVCD EXPRESS dan Laporan Penyewaan VCD. Ubah font menjadi 16 dan style.fsBold menjaditrue. Atur posisi label di tengah-tengah desain.Tambahkan komponen QRLabel dan QRDBText pada band GroupHeader. Ubah caption padaQRLabel dengan Tanggal :. Pada QRDBText ubah property Dataset dengan Query1 dan propertyDataset dengan Tanggal.Untuk mengelompokkan data berdasarkan tanggal pinjam maka setting property Expression dengan :Query1.Tanggal

Page 65: Modul Delphi

Pemrograman Delphi – Hal : 65

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

Tambahkan komponen QRShape pada band Group Header untuk membuat frame judul kolom. Ubahproperty 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 Datasetkesemua QRDBText dengan Query1 dan masing-masing property DataField dengan NoNota,NamaPlg, Judul, Qty, dan Harga. Tambahkan QRExpr pada Band Detail ubah property Expressionsebagai 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 :