Pemrograman II Delphi Lanjut
Pemrograman II Delphi Lanjut
BAB I
Delphi adalah sebuah perangkat lunak (bahasa pemrograman) untuk membuat
program / aplikasi komputer berbasis windows. Delphi merupakan bahasa
pemograman berbasis objek, artinya semua komponen yang ada merupakan objek-
objek. Ciri sebuah objek adalah memiliki nama, properti dan method/procedure.
Delphi disebut juga visual programming artinya komponen-komponen yang ada tidak
hanya berupa teks (yang sebenarnya program kecil) tetapi muncul berupa gambar-
gambar.
1.1. Membuat Sebuah Form
Saat anda pertama kali masuk ke Delphi, anda akan diperhadapkan pada sebuah form
kosong yang akan dibuat secara otomatis. Form tersebut diberi nama Form1. Form ini
merupakan tempat bekerja untuk membuat antarmuka pengguna.
Isi dari properti Name harus diawali alpabet dan tidak menggunakan spasi atau tanda baca
Anda sekarang sudah membuat aplikasi form kosong dengan tombol standar window :
Minimize, Maximize, dan Close. Anda dapat mengubah ukuran form dengan menarik
pada bingkai form menggunakan mouse (drag=klik tombol kiri mouse, tahan tombol
4
tersebut lalu geser ke kiri/kanan atau atas/bawah). Anda dapat memindahkan form
dengan meletakkan kursor pada form kemudian
menggesernya (drag).
(message window).
MessageDlg('Msg',mtConfirmation,[mbYes],0);
Mirip ShowMessage tapi dapat lebih dari satu tombol pilihan.
if MessageDlg('Please say YES or NO',mtConfirmation,[mbYes,mbNo],0)=mrYES
then
begin
Label1.Text:='Tekan tombol YES';
end;
TMsgDlgBtn
= mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll, mbHelp
Return values
= mrNone, mrYes, mrNo, mrOk, mrCancel, mrAbort, mrRetry, mrIgnore,
m
rAll
Kondisi-1 Kondisi-2
Aksi-1 Aksi-2
If <kondisi_pencabangan> then
Begin
... {aksi-1}
end
else
Begin
... {aksi-2}
end;
samadengan (=). Dengan demikian bila parameter bernilai tertentu maka dilakukan suatu aksi
terkait, bila bernilai lain maka dilakukan aksi yang lain juga, demikian seterusnya.
Case <Parameter> Of
<nilai_1> : <aksi_1> ;
<nilai_2> : <aksi_2> ;
...
<nilai_n> : <aksi_n> ;
Else <aksi_n+1> ;
End;
4. STRUKTUR PENGULANGAN
Dalam menyelesaikan masalah, terkadang kita harus melaku suatu proses yang
sama lebih dari satu kali. Untuk itu perlu dibuat suatu algoritma pengulangan.
Pascal memberikan tiga alternatif pengulangan, yaitu dengan For, While, atau
Repeat. Masing-masing memiliki karakteristik, yang akan dipelajari pada modul
ini. Ada dua hal yang penting dalam melakukan merancang perintah pengulangan,
yaitu:
Inisialisasi awal.
4.1. FOR – TO - DO
Pada pengulangan dengan For, inisialisasi awal dan kondisi akhir ditentukan
dengan menggunakan suatu variable kendali yang nilainya dibatasi dalam suatu
range tertentu. Sintaks untuk perintah ini adalah:
Begin
… {aksi}
End ;
atau
Begin
… {aksi}
End ;
Perbedaan antara to dan downto adalah pada kondisi nilai awal dan akhir. Pada to:
nilai awal lebih kecil dari nilai akhir, sedangkan pada downto nilai awal lebih
besar dari nilai akhir. Perlu diingat, bahwa variable kendali harus dideklarasikan
8
Hasilnya adalah : 1, 2, 3, 4, 5
Contoh program yang sama jika tanpa perintah pengulangan
procedure TfrmPengulangan.btnPengulanganClick(Sender: TObject);
begin
lbxHasil.Items.Clear;
lbxHasil.Items.Add(inttoStr(1));
lbxHasil.Items.Add(inttoStr(2));
lbxHasil.Items.Add(inttoStr(3));
lbxHasil.Items.Add(inttoStr(4));
lbxHasil.Items.Add(inttoStr(5));
End;
Hasilnya adalah : 1, 2, 3, 4, 5
4.2. WHILE - DO
Pada metoda pengulangan ini aksi hanya akan diproses bila kondisi pengulangan
terpenuhi, bentuk sintaks dari pengulangan ini adalah:
Begin
… {aksi}
End ;
Selama kondisi_pengulangan bernilai true maka aksi akan dilakukan, dan baru
akan berhenti setelah kondisi pengulangan bernilai false. Karena kondisi
pengulangan diperiksa pada bagian awal, maka ada kemungkinan aksi tidak pernah
dilakukan, yaitu bila kondisi pengulangan tidak pernah bernilai true.
Contoh program pengulangan menggunakan While-do
procedure TfrmPengulangan.btnPengulanganClick(Sender: TObject);
var I : integer;
begin
lbxHasil.Items.Clear;
I := 1;
While I<=5 DO
Begin
lbxHasil.Items.Add(inttoStr(i));
I := I + 1;
9
End;
End;
Repeat
… {aksi}
I := 1;
Repeat
lbxHasil.Items.Add(inttoStr(i));
I := I + 1;
Until I > 5;
End;
Latihan-Latihan:
10
Modul 1 :
Modul ini mengenalkan pada mahasiswa untuk menggunakan statemen
IF – then – else dan Case – of, serta penggunaan komponen Radio Button,
menampilkan form lain. Program ini akan menentukan pilihan jenis kelamin
dan pilihan agama yang dianut.
Buat form seperti tampak dibawah ini : beri nama form “Formmasukandata”,
gunakan radiobutton untuk membuat penentuan jenis kelamin, dan pemilihan
agama
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TFormmasukandata = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
RadioGroupagama: TRadioGroup;
RadioGroup1: TRadioGroup;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Formmasukandata: TFormmasukandata;
implementation
uses tampilkan;
{$R *.dfm}
formtampilkan.Editnama.Text:=edit1.Text;
formtampilkan.Editalamat.Text:=edit2.Text;
if FormMasukanData.RadioGroup1.ItemIndex = 0 then
FormTampilkan.Editkelamin.Text := 'Pria'
Else
FormTampilkan.Editkelamin.Text := 'Wanita';
Case RadioGroupAgama.ItemIndex of
0: formTampilkan.editAgama.Text := 'Islam';
1: FormTampilkan.editAgama.Text := 'Kristen';
2: formTampilkan.editAgama.Text := 'Khatolik';
3: FormTampilkan.editAgama.Text := 'Hindu';
else
formTampilkan.editAgama.Text := 'Budha';
end;
FormMasukanData.Visible := false;
FormTampilkan.Visible := True;
end;
procedure TFormmasukandata.Button2Click(Sender: TObject);
begin
close;
end;
end.
13
unit restoran;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
btbaru: TButton;
Button2: TButton;
Button4: TButton;
bthitung: TButton;
Panel2: TPanel;
Label1: TLabel;
Label2: TLabel;
EdnoTransaksi: TEdit;
Sttanggal: TStaticText;
ocmenu: TPageControl;
Panel3: TPanel;
Label3: TLabel;
Label4: TLabel;
Stpajak: TStaticText;
Sttotal: TStaticText;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Label5: TLabel;
Label6: TLabel;
Cmbmakanan: TComboBox;
Cmbminuman: TComboBox;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
lstdaftar: TListBox;
Lstharga: TListBox;
bthapusdaftar: TButton;
Sttbayarbiasa: TStaticText;
rgpaket: TRadioGroup;
Panel4: TPanel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Stmkn1: TStaticText;
Stmkn2: TStaticText;
stminuman: TStaticText;
Sthrgpaket: TStaticText;
Bevel1: TBevel;
17
Bevel2: TBevel;
procedure Button2Click(Sender: TObject);
procedure btbaruClick(Sender: TObject);
procedure bthapusdaftarClick(Sender: TObject);
procedure CmbmakananChange(Sender: TObject);
procedure lstdaftarClick(Sender: TObject);
procedure LsthargaClick(Sender: TObject);
procedure CmbminumanChange(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure rgpaketClick(Sender: TObject);
procedure bthitungClick(Sender: TObject);
procedure hitungbayarbiasa;
procedure ocmenuChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i,n:integer;
jbaru:boolean;
implementation
{$R *.dfm}
begin
z:=lstharga.ItemIndex;
hargaM:=strtofloat(lstharga.Items[z]);
totharga:=strtofloat(sttbayarbiasa.caption);
hasil:=totharga-hargaM;
sttbayarbiasa.caption:=floattostr(hasil);
lstdaftar.deleteselected;
lstharga.deleteselected;
end;
btbaru.Enabled:=true;
ednotransaksi.Text:='';
ednotransaksi.Enabled:=false;
ednotransaksi.Color:=clbtnface;
sttanggal.Caption:='';
rgpaket.Enabled:=false;
stmkn1.Caption:='';
stmkn2.Caption:='';
stminuman.Caption:='';
sthrgpaket.caption:='';
cmbmakanan.Text:='';
cmbminuman.Text:='';
cmbmakanan.Enabled:=false;
cmbminuman.Enabled:=false;
cmbmakanan.color:=clbtnface;
cmbminuman.Color:=clbtnface;
lstdaftar.clear;
lstharga.Clear;
lstdaftar.Enabled:=false;
lstharga.Enabled:=false;
lstdaftar.Color:=clbtnface;
lstharga.Color:=clbtnface;
sttbayarbiasa.caption:='';
bthapusdaftar.Enabled:=false;
bthitung.Enabled:=false;
stpajak.caption:='';
sttotal.caption:='';
end;
procedure TForm1.hitungbayarbiasa;
var harga,jbayar:real;
begin
jbayar:=0;
harga:=0;
for i:=0 to (lstharga.Items.Count-1) do
begin
harga:=strtofloat(lstharga.Items.Strings[i]);
jbayar:=jbayar+harga;
end;
sttbayarbiasa.caption:=floattostr(jbayar);
end;
procedure TForm1.rgpaketClick(Sender: TObject);
var makanan1, makanan2,minuman:string;
hargaP:string;
begin
case rgpaket.ItemIndex of
0:begin
makanan1:='2 kentang goreng';
makanan2:='sayap ayam, paha ayam';
minuman:='softDrink';
hargap:='4500';
end;
1:begin
makanan1:='nasi, kentang goreng';
makanan2:='2 paha ayam';
minuman:='softDrink';
hargap:='5500';
end
else
begin
20
makanan1:='burger ayam';
makanan2:='kentang goreng';
minuman:='es teh';
hargap:='5000';
end;
end;
stmkn1.caption:=makanan1;
stmkn2.caption:=makanan2;
stminuman.Caption:=minuman;
sthrgpaket.caption:=hargaP;
stpajak.caption:='';
sttotal.caption:='';
end;
procedure TForm1.bthitungClick(Sender: TObject);
var tbayar,pajak,total:real;
begin
case ocmenu.activepageindex of
0:tbayar:=strtofloat(sthrgpaket.caption);
1:tbayar:=strtofloat(sttbayarbiasa.caption);
end;
pajak:=(5/100)*tbayar;
total:=tbayar + pajak;
stpajak.caption:=floattostr(pajak);
sttotal.caption:=floattostr(total);
end;
MEMBUAT MENU
CARA MEMBUAT
1. Pada Komponen Standard pilih icon MAIN MENU, dan letakkan pada
form rancangan anda.
2. untuk membuat menu pilihan ; klik 2 x pada icon MAIN MENU
3. ketikkan judul menu dan sub menu dibawahnya.
4. untuk membuat sub menu pada menu yang ada ; klik kanan mouse
anda dan pilih create sub menu. Lakukan untuk hal yang sama
membuat sub-sub menu berikutnya.
5. Jalankan dan lihat hasilnya dengan menekan tombol F9.
6. tambahkan dengan prosedur dibawah ini pada form anda;
7. var
8. y:longint;
9. rect:trect;
10. begin
11. rect.Left := 0;
12. rect.Right:= width;
13. for y:= 0 to 255 do
14. begin
15. canvas.Brush.Color :=tcolor(rgb (50,150,y));
16. rect.top := y * height div 256;
17. rect.bottom := (y + 1) * height div 256;
18. canvas.fillrect(rect);
19. end;
20. end;
21. end.
CARA MEMBUAT
1. Pilih komponen standar, dan klik icon Tedit, dan atur sesuai kemauan.
2. untuk menampilkan tanggal sistem, pilih komponen Win32 dan pilih
ikon DateTime Picker.
3. Untuk membuat combobox pilih komponen standar dan klik
ComboBox.
4. pada properti Item isikan data sesuai kebutuhan.
5. pada sorted, pilih True.
6. buat tombol Simpan dan Keluar.
7. Pada tombol simpan beri kode program sebagi berikut;
8. table1.insert;
9. table1['nodaf']:= edit1.text;
10. table1['nama']:= edit2.text;
11. table1['alamat']:= edit3.text;
12. table1['tml']:= edit7.text;
13. table1['tgl']:= edit6.text;
14. table1['agama']:= COMBOBOX1.TEXT;
15. table1['aslsma']:= edit9.text;
16. table1['jursma']:= edit10.TEXT;
17. table1['nosttb']:= edit12.text;
18. table1['thSTTB']:= COMBOBOX2.TEXT;
19. table1['NILSTTB']:= edit13.text;
20. table1['piljur']:= COMBOBOX3.TEXT;
21.
22. table1.post;
23.
24. EDIT1.Text:='';
25. EDIT2.Text:='';
26. EDIT3.Text:='';
27. {EDIT4.Text:=''; }
28. EDIT6.Text:='';
29. EDIT7.Text:='' ;
23
30. EDIT12.Text:='' ;
31. EDIT13.Text:='' ;
32. COMBOBOX1.TEXT:='';
33. COMBOBOX2.TEXT:='' ;
34. COMBOBOX3.TEXT:='' ;
35. TABLE1.REFRESH;
36. end;
BAB 2
Dasar Database Delphi
Suatu database terdiri beberapa object, diantaranya tabel, view, domain, stored
procedure, dan triger. Obyek-obyek database menyimpan semua informasi mengenai
struktur database dan data.
Istilah-istilah dalam Database diantaranya :
Entitas Adalah suatu objek, yang mana data akan disimpan, diorganisasikan dan
dimanipulasi. Segala informasi, yang ingin kita ketahui adalah Entitas, misalnya
orang, tempat, atau benda. Contoh suatu Entitas misalnya Pelanggan Toko dan data
Inventori Toko.
Attribut Informasi atau data tunggal berkenaan terhadap suatu Entitas. Bila kita
menganggap Inventori Toko sebagai suatu Entitas, maka Keterangan Produk, Harga
Produk, dan Ketersediaan (Stok) Produk adalah Atribut .
Setiap entitas Direpresentasikan sebagai suatu Tabel. Suatu tabel berisi field-field
(kolom-kolom) yang saling berhubungan (field adalah bagian atau potongan
informasi). Contoh: Dalam Tabel Inventori akan berisi field-field (kolom-kolom)
seperti Kode Produk, Keterangan Produk, Ketersediaan Produk, Harga Produk, dan
lain-lain..
Setiap atribut Direpresentasikan sebagai suatu field (kolom). kumpulan dari atribut-
atribut yang saling berhubungan adalah record (baris). Suatu DBMS (Database
Management System) merupakan perantara pemakai dengan database dalam media
penyimpan (storage). contoh DBMS : Interbase, MS SQL Server, MySQL, Oracle,
Access, Paradox dan PostGreSQL. Sebagian besar DBMS digunakan untuk mengolah
database relational sehingga sering disebut sebagai RDBMS.
Tabel Database
Database relational menyimpan semua datanya dalam tabel-tabel. Tabel adalah
sebuah struktur data yang terdiri dari kumpulan baris dan kolom.
Contoh sebuah tabel database :
25
KOMPONEN DATABASE
Dalam pengembangan aplikasi database Delphi diperlukan 3 kelompok komponen
utama, yaitu DATA SET, DATASOURCE, dan DATA-CONTROL. Ketiga
komponen ini saling berkaitan satu sama lainnya.
Komponen Data Access adalah komponen non visual yang secara langsung
berhubungan dengan database (file secara fisik). Komponen data access hanya
melakukan akses dengan database, seperti membuka tabel. menutup tabel.
membuat record baru, menghapus record, membaca record. mengubah record, dan
sebagainya.
Komponen Keguanaan
TDAtaSource Sebagai penghubung antara data access component dengan data-
aware visual control.
Ttable Sebagai data source yang mengakses record dari Tabel
Tquery Sebagai data source yang mengakses record dari tabel berdasarkan
perintah SQL query.
TstoredProc Bertindak sebagai Datasource yang mengakses record berdasarkan
perintah store procedure untuk database server.
Tdatabase Menciptakan client sever connection dengan sebuah database dalam
sebuah session session.
Dll Dll
26
Adalah komponen visual yang juga merupakan komponen data-aware atau disebut
juga visual controls. Dengan komponen ini kita dapat menysusun tampilan untuk
pemakai. Misalnya menampilkan record, menampilkan image, dll.
Komponen Kegunaan
TDBGrid Display dan edit dataset seperti dengan format Tabular.
TDBNavigator Mengontrol kursor (posisi) record seperti Previous
Record, Next Record. First record dll.
TDBText Display sebuah field sebagai sebuah Tabel
TDBEdit Display dan Edit sebuah field dalam edit box.
TDBImage Display dan edit sebuah field image atau binary blok
data.
TDBListBox Display sejumlah pilihan untuk mengisi sebuah field.
TDBRadioGroup. Display sejumlah pilihan dalam bentuk radio button
group.
Yang termasuk dalam komponen Tdataset adalah Ttable, Tquery, dan TstoredProc.
Setiap Dataset berhubungan dengan sebuah komponen DataSource,
sedangkan sebuah DataSource akan berhubungan langsung dengan komponen data
control. Daftar state Dataset
Tabel Penjualan
DATABASE DESKTOP
Database Desktop (DBD) adalah software yang disertakan bersama dengan
Delphi yang dapat digunakan untuk membuat database, biasanya standalone. Format
database yang banyak dibuat oleh DBD adalah Paradox, dan dBase, format Paradox
lebih disukai oleh programmer. Di dalam Delphi, database (berisi tabel-tabel) yang
dibuat dengan Database Desktop, diakses melalui borland Database Engine (BDE),
komponen khusus yang bertanggung jawab terhadap koneksi database.
MENJALANKAN DATABASE DESKTOP
1. Klik menu Start Windows
2. Pilih Programs, pilih Borland Delphi 7
3. Klik Database Desktop.
MEMBUAT TABEL
Setelah DBD dijalankan maka kita bisa langsung membuat tabel, yaitu
dengan cara :
1. Klik Menu File, pilih New, Pilih Table.
2. Setelah muncul tampilan berukut, pilih driver database yang diinginkan. Untuk
latihan pilih Paradox, dan klik OK.
3. Setelah muncul kotak dialog Create Paradox 7 Table, berarti kita siap
merancang struktur tabel.
MEMBUAT ALIAS
1. Klik menu tools | Alias Manager..
2. Tampilan jendela Alias Manager seperti berikut ini :
3. Klik New
4. Pada Kotak Database alias beri nama database alias. Misal Dbku1.
5. Tentukan jenis dirver database pada kotak isian Driver type. Misal
STANDARD.
6. Pada bagian Path isikan nama direktori dimana tabel-tabel database anda
disimpan. Misal D:\Delphi\Data. Atau gunakan tombol BROWSE...
31
MEMASUKKAN DATA.
Setelah membuat struktur database, sekarang saatnya memasukkan data, yaitu dengan
cara :
1. Buka Tabel dengan mengklik menu FILE | OPEN | TABEL..
2. Jendela Open Tabel
3. Pada bagian alias pilih alias yang digunakan untuk menampung tabel yang
telah dibuat.
4. setelah Tabel ditampilkan klik open.
5. untuk memasukkan data pilih toolbar EDIT DATA.
32
BAB 3
Mengakses Database pada
Delphi dengan ADO
Pendahuluan
Bahasa pemrograman Delphi dapat digunakan untuk berbagai
keperluan baik untuk perhitungan matematis, aplikasi perkantoran, aplikasi
multimedia, pembuatan aplikasi pengolah, aplikasi kontrol industri sampai kepada
aplikasi database. Pada materi ini akan dijelaskan bagaimana cara mengakses
database MS Acces dalam Delphi menggunakan Komponen ADO.
Mungkin anda pernah atau bahkan sering mengembangkan program database
dengan Delphi atau Visual Basic. Anda dapat menggunakan database paradox,
dbase maupun MS Acces, dan mungkin anda mengalami masalah dalam distribusi
file yang anda bangun mempunyai ukuran yang sangat besar karena anda harus
menyertakan file database beserta kelengkapannya. Hal ini tentu tidak
menguntungkan terutama jika harus mendistribusikannya lewat email.
Disini akan dibahahas tentang aplikasi database dengan bahasa pemrograman
Delphi. Untuk mengakses database dalam MS Acces, mulai Delphi 5 telah
menyediakan komponen ADO yang akan memudahkan dalam mengelola database
yang akan kita bangun. Dengan ADO pada Delphi distribusi program hanya
membutuhkan file exe dan database-nya (*.mdb) saja. Tentu ini untuk program yang
sederhana. Sehingga anda dapat mendistribusikannya dengan mudah.
• Data Acces dan BDE banyak berperan pada penentuan sumber data seperti
tabel, SQL, query maupun koneksivitasnya. Contoh komponen ini yaitu Table
dan Datasource.
• Data Control lebih menekankan pada pengaturan data yang terpasang pada
aplikasi sepeti DBLabel, DBNavigator, DBGrid, DBImage, DBMemo, DBEdit,
DBCombobox dan lain sebagainya.
35
Contoh database dalam MS. Acces dengan Nama pemasaran yang berisi 4 tabel dengan
nama Dosen, Mahasiswa, Nilai dan T_Kuliah
Buatlah Form dalam Delphi dan berilah komponen-komponen seperti terlihat pada gambar
berikut :
Pilih Microsoft Jet 4.0 OLE DB Provider lalu pilih Next sehingga muncul
tampilan gambar di atas
Pilih Nama Database dengan menekan tombol ... dipojok kanan lalu pilih
database-nya.
Tekan Tombol Test Connection untuk memastikan database sudah benar
37
Setelah anda mengatur properties semua komponen di atas dengan benar maka tampilan
pada mode form Delphi akan berubah sebagai berikut :
Tabel mahasiswa
pada database
pemasaran.mdb
Anda juga dapat menambahkan Report baik dengan Quick Report yang telah
disediakan pada Delphi
6 ke bawah maupun dengan Rave (Delphi 7) yang akan dibahas pada modul
berikutnya. Contoh report yang telah dibuat sbb :
• Buat Aplikasi Baru dari Menu File > New > Application
• Desainlah Form seperti pada tampilan di atas yang berisi 7 Komponen sebagai
berikut :
39
• Setelah semuanya diatur melalui properti dengan benar maka akan tampak pada
gambar seperti di di bawah ini. Gambar dan Nama akan muncul jika database sudah
diisi dengan data jika belum maka tidak akan muncul
• Isilah Kode Program dengan klik dobel pada Tombol Data Baru
sbb Procedure TForm1.Button1Click(Sender: TObject);
begin
form2.show;
ADOtable1.Append;
end;
40
• Isilah Kode Program dengan klik dobel pada Tombol Hapus Data
sbb Procedure TForm1.Button2Click(Sender: TObject);
begin
if messagedlg('Hapus data ?', mtConfirmation,
[mbYes,mbNo],0)=mryes then ADOtable1.delete;
end;
• Isikan Program dengan menekan dobel klik pada Button (Insert) dengan
program sbb : Procedure TForm2.Button1Click(Sender: TObject);
begin
if
openpicturedialog1.execu
te then begin
dbimage1.Picture.LoadFromFile(openpicturedialog1.FileName);
end;
end;
41
• Tombol Navigator < dan > digunakan untuk menggeser data ke bawah dan ke atas.
• Jika Tombol Data Baru ditekan maka muncul tampilan seperti pada gambar di atas.
• Jika pada Form2 ditekan tombol Insert maka akan muncul tampilan untuk memilih
gambar sebagai berikut :
42
BAB 4
MEMBUAT LAPORAN DENGAN RAVE REPORT
Report Authoring Visual Environment (RAVE), merupakan aplikasi pembuatan
laporan secara visual. Komponen-komponen yang digunakan tergabung dalam Rave
Component Palette.
Cara membuat laporan dengan RAVE report :
1. Jalankan Delphi untuk membuat sebuah aplikasi database.
2. Buat database alias dengan nama “Stok” dan table barang dengan struktur
sebagai berikut :
Nama Filed Lebar Type Data
KD_BRG 4 N
NM_BRG 15 A
Jumlah 5 N
Harga 6 N
Total 6 N
3. Letakkan sebuah komponen table, DBGrid di atas form. Komponen ini hanya
untuk menampilkan data pada aplikasi Delphi.
4. Klik control Table1, pilih Stok pada property DataBaseName, Barang.db
untuk property TableName dan True untuk property Active.
5. Hubungkan control Datasource1 ke Table1 melalui property Dataset,
hubungkan pula control DBGrid1 ke DataSource1 melalui property
DataSource.
6. Letakkan sebuah komponen TRvDataSetConnection1 ke atas form dan akan
otomatis bernama RvDataSetConnection1. Pada property DataSet pilih
komponen DataSet yang digunakan, dalam hal ini adalah Table1.
7. Letakkan sebuah komponen TRvProject ke atas form, otomatis bernama
RvProject1.
8. Klik dua kali control RvProject1 untuk menjalankan tool Rave Visual
Designer.
43
9. Dari Jendela Rave report pilih new data object dan pilih database
connection , pilih tombol Next dan pilih BDE, kemudian pilih Finish.
Lanjutkan dengan mengisi DataBase Alias, dan klik tombol OK
10. Pada jendela Rave Visual Designer, pilih menu File | New Data Object untuk
membuka jendela DataConnections. Pilih Direct Data View dan klik tombol
Next. Pada kotak Active klik tombol Finish. Langkah-langkah ini dilakukan
untuk membangun sebuah DataView yang selanjutnya digunakan untuk
menampilkan data pada table barang.db dalam bentuk Report.
11. Perhatikan tampilan jendela Rave Report diatas, sebelah kanan menunjukkan
RaveProject,; yaitu mempunayai 2 cabang Report Library dan Data View
Dictionary. Report Library berisi nama-nama report yang terdapat dalam suatu
proyek. Kita bisa mengganti nama report ini, (defaultnya Report1). Yang
kedua DataView, yaitu berisi data-data yang mewakili filed yang terdapat pada
table Barang.db. Field-field ini yang akan ditampilkan pada laporan. Kita bisa
melakukan perubahan pada field ini.
12. Pada posisi sebelah kiri jendela Rave Report merupakan property-properti
yang dapat diatur seperti pada saat kita mendisain form. Secara fungsi sama
dengan property Object Inspector.
13. Langkah selanjutnya adalah membuat laporan; cara yang paling mudah dengan
memanfaatkan fasilitas Wizard. Yaitu pilih menu TOOLS | Report Wizards |
Simple Table. Kita dapat memilih Tools | Report Wizards | Master/Detail
Report untuk membuat report dari data yang tersimpan pada lebih satu table.
14. Pada Jendela Simple Table, pilih DataView yang akan digunakan, DataView1.
Klik tombol Next.
15. Pilih semua field yang dimunculkan dengan meng-klik tombol All. Kemudian
klik tombol Next.
16. Atur urutan field-field yang akan ditampilkan pada laporan. Klik tombol Next.
17. Atur Layout tampilan report mencakup judul report dan batas kertas (Margin).
Klik Next.
18. Anda dapat mengtaur jenis huruf dan ukurannya. Kemudian Klik Generate.
19. Maka jadilah tampilan laporan yang dibuat dengan Aplikasi RAVE REPORT.
Tampilan laporan tersebut masih kurang bagus, harus diatur kembali posisinya
supaya mendapatkan tampilan laporan sesuai yang diinginkan.
MENCETAK LAPORAN
MENAMPILKAN LAPORAN
Laporan yang sudah dibuat sebelumnya dapat ditampilkan melalui desain form kita.
Yaitu dengan cara memberikan perintah :
RvProject1.Execute;
Contoh :
1. Buat tombol button pada disain form anda, dan beri Caption “Tampil
Laporan”.
2. Berikan komponen RvProject pada form anda.
3. Pada control RvProject1, pada property ProjectFile Klik tanda … dan cari
nama file report yang akan ditangani.
4. Berikan statemen pada tombol “Tampil Laporan” : RvProject1.Execute;
5. Jalankan, tekan F9.
46
10. tempatkan sebuah komponen QRDBText pada band Group Header. Ubah
Property Dataset menjadi quVendor dan property DataField menjadi
vendorNo.
11. tempatkan pula tiga buah komponen QRDBText di band Group Header dan
ubah semua property Dataset menjadi quVendor. Sedangkan property
DataField secara berturut-turut diubah menjadi VendorName, Address dan
City. Sekarang kita telah membuat sebuah report dan hamper jadi. Untuk
melihat hasilnya klik kananan mouse dan pilih Preview. Kemudian lanjutkan
dengan langkah berikut :
12. beri judul pada masing-masing kolom, tempatkan empat buah komponen
QRLabel (bukan QRDBText) tepat di atas masing-masing kolom di band
Group Header. Ubah property Caption secara berurutan yakni Vendor No,
Vendor Name, Address dan City.
13. untuk memberi garis bawah Group Header band pada property Frame ubahlah
DrawBottom menjadi True.
14. untuk membuat group, klik band Group. Band ini memiliki sebuah property
dengan Expression. Fungsi dari rumus ini untuk memeriksa terjadinya
perubahan group dari record saat itu denan record sebelumnya.
15. Untuk membuat rumus, klik ganda pada property tersebut sehingga muncul
kotak dialog Expression Builder. Untuk membuat rumus lakukan langkah
berikut :
• Pilih rumus COPY dari kotak Available Box. Fungsi akan tampil diatas
kotak parameter dan terlihat COPY (Expr)
• Untuk mengisi parameter VendorName, Klik field vendorName di
Field Box. Lanjutkan dengan mengklik tombol ADD yang berada
dikotak DataField lalu klik tombol OK. Sekarang hasilnya menjadi
COPY (quVendor. VendorName, <Expr>)
• Untuk menambah parameter 1 (satu), isi Edit Box Constant dengan 1.
klik tombol ADD yang ada di Constant Box, kemudian klik tombol
OK. Sekarang hasilnya menjadi COPY (quVendor.VendorName,
1,<Expr>.
48
16. agar laporan dapat dipilih pada saat dijalankan kembalilah pada Forkm1. ubah
event Onklik tombol buVendorByGroup dengan prosedur berikut :
begin
qrVendorbyGroup.Preview;
end;
17. letakkan sebuah komponen QRLabel, pada band Group Header ubah property
Name menjadi lbHurufPertama.
18. Ubah property font milik Group Header ini dengan style bold. Jika dijalankan
di Group Header masih menampilkan QRLabel5.
19. untuk mengisi property caption komponen lbhurufPertama, lakukan pada
event OnBeforePrint band Group Header. Klik bandGroup Header, pada
Object Inspector klik ganda event On-BeforePrint, kemudian ubah procedur
seperti berikut :
var printBand : Boolean;
begin
lbhurufpertama.Caption := Copy (quVendor[`VendorName`],
1,1);
end;
Event ini juga bisa untuk melakukan perhitungan yang lain.
20. Jalankan dengan menekan tombol F9.
49
Berikut dibawah ini adalah contoh aplikasi database untuk pengelolaan stok
barang. Yang perlu diperhatikan adalah bagaimana membuat prosedur-prosedur
Tambah Data, Hapus Data, Simpan Data, dan lain-lain, untuk dapat kita gunakan pada
aplikasi program yang lain.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables, ExtCtrls, Buttons, Grids, DBGrids,
ComCtrls, QuickRpt, QRCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
DataSource1: TDataSource;
Table1: TTable;
Panel1: TPanel;
EJudul: TEdit;
Dbgr: TDBGrid;
Panel2: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
EKode: TEdit;
ENama: TEdit;
ESatuan: TEdit;
EJumlah: TEdit;
EHarga: TEdit;
Panel3: TPanel;
Tambah: TBitBtn;
Koreksi: TBitBtn;
Hapus: TBitBtn;
Simpan: TBitBtn;
Batal: TBitBtn;
BitBtn6: TBitBtn;
StatusBar1: TStatusBar;
Prin: TBitBtn;
Preview: TBitBtn;
Cari: TBitBtn;
Urut: TBitBtn;
Panel4: TPanel;
Bold: TBitBtn;
GrBw: TBitBtn;
Miring: TBitBtn;
Awal: TBitBtn;
Mundur: TBitBtn;
Maju: TBitBtn;
Akhir: TBitBtn;
Lapor: TQuickRep;
TitleBand1: TQRBand;
DetailBand1: TQRBand;
D1: TQRDBText;
D2: TQRDBText;
D3: TQRDBText;
D4: TQRDBText;
D5: TQRDBText;
PageHeaderBand1: TQRBand;
J1: TQRLabel;
L1: TQRLabel;
L2: TQRLabel;
L3: TQRLabel;
L4: TQRLabel;
L5: TQRLabel;
QRShape1: TQRShape;
QRShape5: TQRShape;
51
QRShape6: TQRShape;
QRShape7: TQRShape;
QRShape8: TQRShape;
QRShape2: TQRShape;
QRShape3: TQRShape;
QRShape4: TQRShape;
J2: TQRLabel;
Carid: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
cKode: TEdit;
cNama: TEdit;
Gurut: TGroupBox;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtn6Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure Aktiv;
procedure NonAktiv;
procedure Kosong;
procedure Oper;
procedure Tebal;
procedure TMiring;
procedure BrBawah;
procedure TambahClick(Sender: TObject);
procedure EKodeExit(Sender: TObject);
procedure EKodeChange(Sender: TObject);
procedure EKodeKeyPress(Sender: TObject; var Key: Char);
procedure ENamaChange(Sender: TObject);
procedure ENamaExit(Sender: TObject);
procedure ENamaKeyPress(Sender: TObject; var Key: Char);
procedure ESatuanExit(Sender: TObject);
procedure ESatuanChange(Sender: TObject);
procedure ESatuanKeyPress(Sender: TObject; var Key: Char);
procedure EJumlahExit(Sender: TObject);
procedure EJumlahChange(Sender: TObject);
procedure EJumlahKeyPress(Sender: TObject; var Key: Char);
procedure EHargaChange(Sender: TObject);
procedure EHargaExit(Sender: TObject);
procedure EHargaKeyPress(Sender: TObject; var Key: Char);
procedure BatalClick(Sender: TObject);
procedure KoreksiClick(Sender: TObject);
procedure HapusClick(Sender: TObject);
procedure SimpanClick(Sender: TObject);
procedure DbgrCellClick(Column: TColumn);
procedure BoldClick(Sender: TObject);
procedure GrBwClick(Sender: TObject);
procedure MiringClick(Sender: TObject);
procedure AwalClick(Sender: TObject);
procedure MundurClick(Sender: TObject);
procedure MajuClick(Sender: TObject);
procedure AkhirClick(Sender: TObject);
procedure PreviewClick(Sender: TObject);
procedure PrinClick(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure cKodeKeyPress(Sender: TObject; var Key: Char);
procedure cNamaKeyPress(Sender: TObject; var Key: Char);
52
eJumlah.Font.Style:=[];
eHarga.Font.Style:=[];
Dbgr.Font.Style:=[];
End
End;
procedure TForm1.BrBawah;
Begin
if Gr then Begin
GrBw.Font.Color:=clInfoBk;
Miring.Font.Color:=clWindowText;
Bold.Font.Color:=clWindowText;
eKode.Font.Style:=[fsUnderline];
eNama.Font.Style:=[fsUnderline];
eSatuan.Font.Style:=[fsUnderline];
eJumlah.Font.Style:=[fsUnderline];
eHarga.Font.Style:=[fsUnderline];
Dbgr.Font.Style:=[fsUnderline];
End Else
Begin
GrBw.Font.Color:=clWindowText;
eKode.Font.Style:=[];
eNama.Font.Style:=[];
eSatuan.Font.Style:=[];
eJumlah.Font.Style:=[];
eHarga.Font.Style:=[];
Dbgr.Font.Style:=[];
End;
End;
procedure TForm1.Timer1Timer(Sender: TObject);
Var
AA,BB : String;
Begin
St:= '--PEMROGRAMAN DELPHI 07--PEMROGRAMAN DELPHI 07--PEMROGRAMAN
DELPHI 07--';
i:=i+1;
AA:=Copy(St,i,Length(st));
BB:=AA+Copy(St,1,i);
EJudul.Text:=BB ;
If i=1+length(St) then i:=1;
Statusbar1.Panels.Items[0].Text:='Tanggal : '+DAteToStr(Now);
Statusbar1.Font.Size:=8;
Statusbar1.Font.Style:=[fsBold];
Statusbar1.Font.Color:=clYellow;
Statusbar1.Panels.Items[1].Text:='Waktu Sekarang : '+TimeToStr(Now);
Statusbar1.Font.Color:=clYellow;
end;
procedure TForm1.Oper;
Begin
eKode.Text:=Table1.FieldByName('KodeBrg').AsString ;
eNama.Text:=Table1.FieldByName('NamaBrg').AsString;
eSatuan.Text:=Table1.FieldByName('Satuan').AsString;
eJumlah.Text:=Table1.FieldByName('Jumlah').AsString;
eHarga.Text:=Table1.FieldByName('Harga').AsString;
eKode.Color:=clSkyBlue;
eNama.Color:=clSkyBlue;
eSatuan.Color:=clSkyBlue;
eHarga.Color:=clSkyBlue;
eJumlah.Color:=clSkyBlue;
End;
54
eSatuan.Color:=clSkyBlue;
eHarga.Color:=clSkyBlue;
eJumlah.Color:=clSkyBlue;
end;
procedure TForm1.TambahClick(Sender: TObject);
begin
Aktiv;
Kosong;
Awal.Enabled :=False;
Mundur.Enabled :=False; Prosedur tambahklik ini digunakan untuk tambah data
Maju.Enabled :=False; baru. Prosedur pertama mengekseskusi prosedur
Akhir.Enabled :=False; AKTIV, prosedur tersebut digunakan untuk
Dbgr.Enabled:=False; mengaktifkan komponen-koponen input data. (seperti
Baru:=true; Tedit Kode, Nama, Satuan, Jumlah, Harga). Kemudian
Bold.Enabled:=False; prosedur mengeksekusi prosedur KOSONG, Prosedur
GrBw.Enabled :=False; ini digunakan untuk mengosongkan atau membersihkan
Miring.Enabled :=False; komponen input data yang sebelumnya telah terisi data,
Tambah.Enabled :=False; sehingga tampilan input menjadi kosong/siap diisi data
Koreksi.Enabled :=False; kembali. Listing berikutnya digunakan untuk
Hapus.Enabled :=False; menonaktifkan prosedur Awal s/d Urut, selain prosedur
Simpan.Enabled :=False; Batal saja yang diaktifkan. (sehingga tampilan tombol
Batal.Enabled :=True; menjadi tenggeleam/tidak tampak).
Prin.Enabled :=False;
Preview.Enabled :=False;
Cari.Enabled :=False;
Urut.Enabled :=False;
Table1.IndexFieldNames:='KodeBrg';
ActiveControl:=eKode;
end;
procedure TForm1.EKodeExit(Sender: TObject);
begin
IF Baru then
Begin
If Table1.FindKey([eKode.Text]) then
Begin
Application.MessageBox('Maaf.. Data Yang Anda Masukan Sudah Terdaftar','Informasi');
eKode.SetFocus;
End;
eKode.Color:=clSkyBlue;
End Else
Begin
If Not Table1.FindKey([eKode.Text]) then
Begin
Application.MessageBox('Maaf.. Data Yang Anda Masukan Belum Terdaftar','Informasi');
BatalClick(Sender);
End;
Oper;
eKode.Color:=clSkyBlue;
end;
end;
procedure TForm1.EKodeChange(Sender: TObject);
begin
eKode.Color:=clWhite;
end;
procedure TForm1.EKodeKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
eNama.SetFocus;
end;
procedure TForm1.ENamaChange(Sender: TObject);
56
begin
eNama.Color:=clWhite;
end;
procedure TForm1.ENamaExit(Sender: TObject);
begin
eNama.Color:=clSkyBlue;
end;
procedure TForm1.ENamaKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
eSatuan.SetFocus;
end;
procedure TForm1.ESatuanExit(Sender: TObject);
begin
eSatuan.Color:=clSkyBlue;
end;
procedure TForm1.ESatuanChange(Sender: TObject);
begin
eSatuan.Color:=clWhite;
end;
procedure TForm1.ESatuanKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#13 then
eJumlah.SetFocus;
end;
procedure TForm1.EJumlahExit(Sender: TObject);
Var Mj : Integer;
begin
Try
Mj:=StrToInt(eJumlah.Text);
eJumlah.Color:=clSkyBlue;
Except
Application.MessageBox('Maaf.. Pemasukan Data Jumlah Tidak Valid','Informasi');
eJumlah.SetFocus;
End;
end;
procedure TForm1.EJumlahChange(Sender: TObject);
begin
eJumlah.Color:=clWhite;
end;
procedure TForm1.EJumlahKeyPress(Sender: TObject; var Key: Char);
begin
If Key=#13 then
eHarga.SetFocus;
end;
procedure TForm1.EHargaChange(Sender: TObject);
begin
eHarga.Color:=clWhite;
end;
procedure TForm1.EHargaExit(Sender: TObject);
Var Ass : Integer;
begin
Try
Ass:=StrToInt(eHarga.Text);
eHarga.Color:=clSkyBlue;
Except
Application.MessageBox('Maaf.. Pemasukan Data Harga Tidak Valid','Informasi');
eHarga.SetFocus;
End;
end;
57
Preview.Enabled :=False;
Cari.Enabled :=False;
Urut.Enabled :=False;
ActiveControl:=eKode;
end;
procedure TForm1.HapusClick(Sender: TObject);
begin
Table1.IndexFieldNames:='KodeBrg';
If Not Table1.FindKey([eKode.Text]) then
Begin
Application.MessageBox('Pilih Data Yang Akan Dihapus pada Table','Informasi');
End Else
Begin
If (Application.MessageBox('Apakah Data Benar-Benar di Hapus..?','Peringatan',MB_YESNO or
MB_ICONQUESTION)=IDYES) then
Begin
Table1.Delete;
Table1.Refresh;
End;
end;
End;
procedure TForm1.SimpanClick(Sender: TObject);
begin
If Baru then
Table1.Append
Else
Table1.Edit;
Table1.FieldByName('KodeBrg').AsString:=eKode.Text;
Table1.FieldByName('NamaBrg').AsString:=eNama.Text ;
Table1.FieldByName('Satuan').AsString:=eSatuan.Text ;
Table1.FieldByName('Harga').AsString:=eHarga.Text ;
Table1.FieldByName('Jumlah').AsString:=eJumlah.Text ;
Table1.Post;
BatalClick(Sender);
end;
procedure TForm1.DbgrCellClick(Column: TColumn);
begin
Table1.IndexFieldNames:='KodeBrg';
oper;
end;
procedure TForm1.BoldClick(Sender: TObject);
begin
Tb:=not Tb;
Gr:=not Gr;
Mr:=not Mr;
Tebal;
end;
procedure TForm1.GrBwClick(Sender: TObject);
begin
Tb:=not Tb;
Gr:=not Gr;
Mr:=not Mr;
BrBawah;
end;
procedure TForm1.MiringClick(Sender: TObject);
begin
Tb:=not Tb;
Gr:=not Gr;
Mr:=not Mr;
TMiring ;
59
end;
procedure TForm1.AwalClick(Sender: TObject);
begin
Table1.First;
end;
procedure TForm1.MundurClick(Sender: TObject);
begin
Table1.Prior;
end;
procedure TForm1.MajuClick(Sender: TObject);
begin
Table1.Next;
end;
procedure TForm1.AkhirClick(Sender: TObject);
begin
Table1.Last;
end;
procedure TForm1.PreviewClick(Sender: TObject);
begin
lAPOR.Preview;
end;
procedure TForm1.PrinClick(Sender: TObject);
begin
Form1.Hide;
Form2.Show;
end;
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
Table1.IndexFieldNames:='KodeBrg';
cKode.Visible:=True;
cNama.Visible:=False;
cKode.SetFocus;
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
Table1.IndexFieldNames:='NamaBrg';
cKode.Visible:=FAlse;
cNama.Visible:=True;
cNama.SetFocus;
end;
procedure TForm1.cKodeKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then Begin
if Not Table1.FindKey([cKode.Text]) then
Application.MessageBox('Kode Barang Belum Terdaftar','Informasi');
Carid.Visible:=false;
Cari.SetFocus;
End;
end;
procedure TForm1.cNamaKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then Begin
if Not Table1.FindKey([cNama.Text]) then Begin
Application.MessageBox('Kode Barang Belum Terdaftar','Informasi');
Carid.Visible:=false;
Cari.SetFocus;
End;
End;
End;
procedure TForm1.CariClick(Sender: TObject);
60
begin
Carid.Visible:=True;
cKode.Text:='';
cNama.Text:='';
cKode.Visible:=False;
cNama.Visible :=False;
end;
procedure TForm1.UrutClick(Sender: TObject);
begin
GUrut.Visible:=true;
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
Table1.IndexFieldNames:='KodeBrg';
gUrut.Visible:=False;
end;
end;
end.