Banyak sekali yang dapat diungkapkan dari Delphi, tetapi pada modul ini, yang
akan dibahas adalah : IDE, Mendesain Sebuah Form, Konsep Event Drivent,
Variable, Constanta, Type Record, Statement Percabangan, Statement
Perulangan, Konsep DataBase, Pemrograman Database dan Pembuatan
Laporan.
Penyajian modul ini adalah mini konsep dan banyak latihan, karena modul ini
merupakan modul praktek dan merupakan pelengkap dari materi perkuliahan
pemrograman visual.
Pengantar
Daftar Isi
Modul I : Cara Bekerja Delphi
Modul II : Integrated Developent Environment
Modul III : Mendesain Sebuah Form
Modul IV : Konsep Event Driven
Modul V : Variable, Konstanta dan Type Record
Modul VI : Struktur Dasar Selection
Modul VII : Struktur Dasar Loop
Modul VIII : Bekerja Dengan Banyak Form
Modul IX : Pemrograman Basis Data (Beck End)
Modul X : Pemrograman Basis Data (Front End)
Modul XI : Structure Query Laguage
Modul XII : Report
Saat anda menambahkan Components pada Form1 dan merubah nilai properti,
Delphi akan membuat (pseudo) code (dalam Unit1.dfm) untuk mendefinikan
apa yang anda lakukan. Secara normal, ANDA TIDAK DIHARAPKAN
MENGUBAHNYA Unit1.dfm File; Anda hanya bekerja pada Form1 secara Visual.
Ini yang dinamakan bahasa pemrograman Visual (Visual Programming)
Delphi meminta, Apa yang dilakukan pertama kali ? .dpr file memberikan
sbb :
2) *.pas adalah unit-unit (pascal code file), bisa terdiri satu atau banyak file
3) *.dfm adalah file definisi Form (special pseudo code file), bisa terdiri satu
atau banyak file
Tampilan utama interface Delphi terdiri dari beberapa bagian yang kesemuanya
merupakan bagian yang saling mendukung, tempilan tersebut disebut dengan
IDE. IDE dalam Delphi adalah sebagai berikut :
Componen
Palete
Form
Design
Code
Editor
Menu bar
Speed
Toolbar
Object
Inspector
Class atau
type data
Nama Object
yang sedang
aaktif
Cetakan yang
akan ditampilkan
diform
object inspector adalah suatu bagian dari IDE untukmengatur properties dari
suatu object dalam moda design time. Item yang ditunjuk adalah item-item
yang sering diubah. Dalam object inspector terdapat dua bagian, yaitu :
properties kegunaannya untuk mengatur properties dari suatu object. Dan
event adalah suatu kejadian yang dapat dikenakan terhadap object: bagian
event adalah seperti berikut:
Nama
Object
Edit : digunakan untuk alat input data dan juga dapat digunakan untuk
menampilkan data di layar
Masih banyak lagi komponen yang dapat digunakan oleh mahasiswa untuk lebih
memperdalam bahasa pemrograman Delphi. Untuk hal itu silahkan belajar
sendiri dengan komponen tersebut.
Form adalah tempat dimana komponen tetempelkan, dan form adalah alat
antarmuka antara sistem dan pemakai. Ada beberapa cara untuk
mendesainsebuah form:
1. a. pilih salah satu komponen dari kompunen palete sehhingga
komponen tersebut seperti dipijit
Merapikan Komponen
Pengaturan letak komponen terkadang sangat sulit agar supaya terlihat rapi, jika
dilakukan secara manual. Untuk keperluan perapian tersebut Delphi
menyediakan sarana yang mengenai:
1. ukuran kompnen
2. spasi antara komponen
3. perapian komponen
4. dan lain-lain
Parameter
Nama Event
Nama Object
Form1.Caption=’Latihan Satu’;
Jika program dijalankan, pada saat tombol button dilkik, judul form berubah
menjadi ‘Latihan Satu’.
Program yang terbentuk dalam pemrograman Delphi terdiri dari project dan
unit. Yang kita oleh adalah unit, dan project merupakan kumpulan unit-unit
seperti :
program Project1;
uses Nama Program
{$R *.RES}
begin
Application.Initialize;
Bagian utama
Application.CreateForm(TForm1, Form1);
Application.Run;
unit Unit1;
Nama Unit
interface
uses
Digunakan untuk
Windows, Messages, SysUtils, Classes, Graphics, memanggil
munit klain yang
Controls, Forms, Dialogs, StdCtrls; diperlukan
type
Class form
TForm1 = class(TForm)
Button1: TButton;
Object yang ditempel pada form
procedure Button1Click(Sender: TObject);
private Prototype prosedur
{ Private declarations }
Untuk deklarasi
public variable,prosedur lokal
{ Public declarations }
end; Untuk deklarasi
variable,prosedur public
var
Untuk deklarasi variable
Form1: TForm1;
implementation
{$R *.DFM}
Letak pendeklarasian tergantung pada sifat dari variable tersebut, jika bersifat
global, variable dideklarasikan dibaeah type dan jika bersifat lokal, variable
dideklarasikan dalam prosedur atau fungus sebelum begin.
Program yang baik adalah program yang jika dibaca oleh orang lain, maka orang
tersebut mengerti alur dari program tersebut. Salah satu cirri program yang baik
adalah tidak ada angka didalamnya. Permasalahannya, misalnya ada suatu
rumus yang memerlukan suatu angka sebagai elemen dari rumus tersebut dan
angka tersebut sering digunakan.
Untuk menangani hal tersebut, maka angka tersebut diberi nama, dan nama
tersebut bersifat tetap selama program berjalan. Nama seperti diatas disebut
Delphi telah menyediakan type data standard seperti intger, real dan lain-lain,
tetapi kadang-kadang pemrogram membutuhkan suatu type data ciptaannya
sendiri untuk mendukung programnya. Pada dasarnya setiap terjadi penciptaan
form, Delphi menciptakan type dara form yang merupakaan turunan dari class
TForm. Yang didalam type form tersebut terdiri dari object yang ditempelkan
pada form tersebut, sepertu label, edit, button dan lain-lain.
Diluar itu pemrogram dapat menciptakan type data sendiri misalnya tipe record
atau tipe data yang lain. Sintak mendeklarasikan type adalah:
type
nama_type = record
deklarasi variable;
end;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
private
{ Private declarations }
public
{ Public declarations }
end;
type
TPoint = record
X : Single;
Y: Single;
end;
dengan deklarasi type tersebut kita telah mempunyai tipe data yang baru,
dengan demikian kita dapat mendeklarasikan variable terhadap type date
tersebut.
Contoh:
Ada tiga bahasan penting dalam pemrograman. Yang merupakan dasar dari
penguasaan pemrograman itu sendiri. Materi yang akan dibahas pada bagian ini
adalah :
1. Pernyataan sequensial
2. Pernyataan percabangan
3. Pernyataan perulangan
Pernyataan sequensial
Program adalah seatu kumpulan pernyataan yang akan dieksekusi secara
terurut dari pernyataan yang pertama sampai pernyataan yang terakhir.
Pernyataan sequensial adalah pernyataan setandard artinya pernyataan yang
akan dieksekusi secara berturut-turut.
Contoh:
X:=2;
Y:=8;
Z:=X*Y;
Write(Z);
Pernyataan IF
IF…Then.
Sintaknya adalah
If Kondisi then
Pernyataan jika kondisi memenuhi;
Jika pernyataan lebih dari satu baris, maka harus diawali dengan Begin dan
diekhiri dengan End.
Contoh :
Begin
Hasil := (x+5)*y;
Y := y-10;
End;
Dengan pernyataan If tersebut maka pernyataan diantara Begin dan End hanya
akan dieksekusi jika x>90, dan jika x<=90 maka eksekusi berikutnya adalah pada
pernyataan setelah end.
IF … Then … Else
Sintaknya adalah
If kondisi then
Pernyataan jika kondisi memenuhi
Else
Pernyataan jika kondisi tidak memenuhi;
Jika pernyataan lebih dari satu baris, maka harus diawali dengan Begin dan
diekhiri dengan End.
Pernyataan setelah then tidak boleh diakhiri dengan titik koma.
Contoh:
Pernyataan If juga hanya menampung dua kondisi yaitu benar atau salah, jika
ada suatu kondisi yang meiliki banyak kemungkinan, pernyataan IF dapat
menanganinya dalam bentuk If bersarang atau If dalam If.
Sintaknya adalah :
If kondisi then
If kondisi then
Pernyataan benar
Else
Pernyataan salah2
Else
Pernyataa salah1;
Atau
If kondisi then
Pernyataan benar1
Else
If kondisi then
Else
If kondisi then
Pernyataan benar3
Else
Pernyataan salah;
Pernyataan Case
Pernyataan Case adalah untuk menyelseaikan kemungkinan yang lebih dari dua,
misalnya konversi bulan dalansatu tahun (1 adalah januari, 2 adalah pebruari
danseterusnya).
Sintaknya adalah ;
Case kondisi of
Case Kondisi1:
Pernyataan1;
Case kondisi2 :
Pernyataan2;
else
pernyataan jika salah;
Contoh
read (I);
case I of
1..5: Caption := 'Low';
6..9: Caption := 'High';
0, 10..99: Caption := 'Out of range';
else
Caption := '';
end;
FOR…DO
Sintaknya adalah :
Contoh:
Hasil=0;
For I:=1 to 10 do
Hasil:=hasil+I;
While … Do
Berbeda dengan For … Do, jumlah perulangan pada while tidah diketahui.
Eksekusi akan keluar dari perulanga jika suatu kondisi tidak terpenuhi. Jadi
While Kondisi Do
Pernyataan yang diulang;
Contoh:
Awal:=1;
Counter:=Awal;
While Counter<=Akhir do
Begin
Hasil:=Hasil+Awal;
Counter:=Counter+1;
End;
Repeat
Hal-hal yang perlu diperhatikan dalam program dengan banyak form, adalah
sebagai berikut:
1. pengaktifan form lain dari suatu form.
2. penutupan form saat tidak diperlukan lagi.
Form2
Component Properties Value
Label1 Caption BilA
Label2 Caption BilB
Bitbtn1 Kind bkOK
Bitbtn Kind bkNo
Form3
Component Properties Value
Label1 Caption BilA
Label2 Caption BilB
Bitbtn1 Kind bkOK
Bitbtn Kind bkNo
Form4
Component Properties Value
Label1 Caption BilA
Label2 Caption BilB
Bitbtn1 Kind bkOK
Bitbtn Kind bkNo
Form5
Component Properties Value
Radiogroup1 Caption Olahraga
Items Lari
Catur
Renang
Bitbtn1 Kind bkOK
Bitbtn Kind bkNo
unit Unitutama;
if (form2.modalresult=mrok) then
begin
with form2 do
begin
bila:=strtoint(edit1.text);
bilb:=strtoint(edit2.text);
end;
edhjml.text:=inttostr(bila+bilb);
end
else
edhjml.text:='0';
if (form3.modalresult=mrok) then
begin
with form3 do
begin
bila:=strtoint(edit1.text);
bilb:=strtoint(edit2.text);
end;
edhkali.text:=inttostr(bila*bilb);
end
else
edhkali.text:='0';
form3.free;
end;
if (form4.modalresult=mrok) then
begin
with form4 do
begin
bila:=strtoint(edit1.text);
bilb:=strtoint(edit2.text);
end;
edhkurang.text:=inttostr(bila-bilb);
end
else
edhkurang.text:='0';
form4.free;
end;
if (form5.modalresult=mrok) then
begin
with form5 do
begin
if rblari.checked=true then
str:='Baik untuk menguji nafas'
else
if rbcatur.checked=true then
str:='Baik untuk mengasah otak'
else
str:='Baik untuk menyelamatkan
diri dari banjir';
end;
lbhasil.Caption:=str;
end
else
lbhasil.Caption:='';
form5.free;
end;
Kalau bericara peorograman data base, kita dapat memisahkannya menjadi dua
bagian, yaitu : pemrogramam Back End atau pemrograman basis datanya,
seperti membuat table, membuat query, membuat relasi dan sebagainya. dan
pemrograman Front End yaitu pemrograman yang menyediakan antarmuka
sistem database dengan pemakai. delphi menyediakan pemrograman kedua-
keduanya. pada bab ini akan bibahas tentang pemrograman Back End-nya,
sedangkan pemrograman Front End akan dibahas pada bab selanjutnya.
Untuk membuat database sendiri dibutuhkan aplikasi lain diluar Delphi, tetapi
database standar Delphi adalah paradox yang secara otomatis disertakan pada
saat menginstal Delphi. Paradox dapat diaktifkan dengan dua cara:
2
Item yang tidak usah diubah
Klik tombol OK
2. Pilih menu File> New> Table
3. Pilih Paradox 7 dan klik tombol OK, makan jendela pengisian struktur
table muncul seperi dibawah ini
a. isi field nama dengan atribut suatu table misalnya “NIM”, “NAMA”
dan lain-lain, pindahkan kursor pada kolom type, kemudian tekan
space bar, maka akan muncul daftar type dan Anda tinggal memilih
salah satu diantaranya.
b. Pada kolom size disi jika type datanya Alpha jika selain Alpha size
terisi secara automatis.
3
c. Kolom key digunakan untuk atribut yang dijadikan kunci, caranya
tekan tombol space bar.
langkah kerja diatas adalah untuk membuat struktur satu tabel, jika dalam
database tersebut lebih dari satu tabel, secara normalisasi tabel-tabel tersebut
dapat direlasikan dengan tabel yang lain untuk kepentingan t\integritas data.
untuk dapat menmerelasikan dua tabel, pada tabel anak (sisi N) harus ada kunci
tamu sebagai atribut penghubung dengan tabel induk (sisi 1). cara merelasikan
dua tabel adalah:
1. buka struktur tabel anak dengan cara
a. Klik menu Tools, pilih Utility, pilih Restructure, maka tampil
jendela:
4
b. Pada ComboBox Table Properties, pilih Referential Integrity, klik
tombol Define jika belum ada atau klik tombol Modify jika akan
mengedit relasi yang telah ada.
5
d. pilih kunci tamu pada table induk, kemudian klik tombol anak
panah ->, pilih table induk dan klik tombol anak panah <-.
e. Kilik tombol OK, untuk menyimpan relasi tersebut.
f. untuk mengisi atau mengedit data tabel, tampilan jendela table
adalah
g. untuk menambah, mengedit atau mengapus data, tabel
yangterbuka harus dalam modus Edit, dengan cara tekan tombol
F9.
6
MODUL X
PEMROGRAMAN DATA BASE (FORNT END)
Delphi menyediakan dua cara untuk membuat program basis data. cara
pertama adalah cara konvensional, yaitu dengan menggunakan komponen
TTable. cara ini ini biasanya untuk pemrograman basis data pada komputer
stand Alone. cara kedua dengan SQL (Structured Query Language) dan biasanya
digunakan untuk pemrograman klien/server. SQL akan dibahas pada bab
selanjutnya.
Hubungan file data base dengan Delphi dalam pemrograman data abse adalah
Dibutuhkan suatu mesin yang menjadi penghubung antara file database dengan
program yang dibuat Delphi. Delphi menyediakan mesin konverter tersebut
yang dikenal dengan BDE.
Dalam pemrograman Fornt End ini dibutuhkan dua katagori komponen untuk
dapat membuat program database, yaitu:
1. Data Access yang terdiri dari;
a. DataSource
7
b. Table
c. Query
d. StoredProc
e. Database
f. DLL
2. Data Control yang terdiri dari :
a. DBGrid
b. DBNavigator
c. DBText
d. DBEdit
e. DBMemo
f. DBImage
g. DBListBox
h. DBComboBox
i. DLL
Untuk membuat aplikasi data base yang sederhana, yang perlu disiapkan adalah
komponen Ttable yang akan menghubungkan program Anda dengan file data
base yang ada di hard disk. Ada tiga properties yang penting dari Ttable yang
perlu diisi, yaitu:
1. DataBaseName, menujuk tempat dimana file database disimpan,
biasanya menjunjuk alias dari path database tersebut.
8
2. TableName, berisi nama-nama table yang ada pada direktori yang
ditunjuk.
3. Active, diisi true jika table tersebut ingin dibuka(active) dan diisi false jika
teble tersebut tetap tertutup (Close).
Setelah Ttable terhubung dengan database, telpelkan TdataSource, untuk
menghubungkan Ttable dengan komponen yang menjadi antarmuka database
dengan user. Properties yang harus diisi dalam TdataSource adalah DataSet,
yaitu diisi dengan nama Ttable yang yang diinginkan. Setelah itu, tempelkan
komponen yang akan dijadikan antarmuka antara database dengan user, seperti
DBEdit, DBGrid dan lain-lain. Properties yang harus diisi dari komponen
interfacing itu adalah:
1. DataField, diisi dengan atribut dari suatu table
2. DataSource, diisi dengan nama TdataSource
9
9. Mengakses Field:
Var s: string;
S:= Table.Fields[0].AsString;, untuk field yang tipe datanya string
Atau
S:= Table.FieldByName[‘Name’].AsString;
10. Mengisi Field
Table.Fields[0].asString:=’Gurame’;
Atau
Table.FieldByName[‘Nama’].AsString:=’Gurame’;
11. Mengisi Table
Mengisi tabel dengan record baru dapat dilakukan dengan dua cara:
1. dengan perintah Insert, menyisipkan record pada posisi record
aktif
2. dengan perintah Append, menambah record pada posisi akhir
record
12. Menghapus record, dengan prosedur DELETE
13. Mengedit Record, dengan prosedur EDIT
14. Menyimpan record, dengan prosedur POST
15. Mencari data
Mencari data atau record dalam tabel dapat dilakukan dengan perintah:
1. FindKey, mencari dengan record dengan key, yaitu menggunakan
index. Jikan tablel terindex berdasarkan nomor, anda dapat mencari
record dengan nomor ‘123’:
Table.FindKey(123);
10
2. FindNearest, hampir sama dengan FindKey, tetapi FindNearest
mencari record yang mirip.
Table.FindNearest([‘Agus’]), untuk mencari semua record yang
bernama Agus.
3. SetKey..GotoKey, hampir sama dengan findKey:
Table.SetKey;
Table.Fields[0].AsInteger:=123;
Table.GotoKey;
4. SetKey..GotoNearest, hampir sama dengan FindNearest
Table.SetKey;
Table.Fields[0].AsString:=’Agus’;
Table.GotoNearest;
5. ApplayRange
Pencarian dengan ApplyRange akan membatasi record yang
ditampilkan sesuai dengan criteria. Dengan perintah ini Anda harus
menentukan dahulu batasan record yang akan ditampilkan dengan
menggunakan SetRangeStart dan SetRangeEnd.
Table.SetRangeStart;
Table.Fields[0].AsInteger:=100;
Table.SetRangeEnd;
Table.Fields[0].AsInteger:=2000;
Table.ApplyRange;
6. CancelRange
Perintah ini digunakan untuk membatalkan perintah ApplyRange.
11
Contoh Program Database Sederhana
Form Utama
12
Keterangan :
Tnegara adalah Nama Ttable dengan :
DatabaseName : DBDEmos
TableName : Country.db
DSNegara adalah Nama DataSource dengan DataSet : Tnegara
unit Unitdbs;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, StdCtrls, Grids, DBGrids, Db, DBTables;
13
type
TFormlatihdatabase = class(TForm)
DSNegara: TDataSource;
TNegara: TTable;
DBGrid1: TDBGrid;
BtTambah: TButton;
BtHapus: TButton;
BtEdit: TButton;
BitBtn1: TBitBtn;
procedure BtTambahClick(Sender: TObject);
procedure BtEditClick(Sender: TObject);
procedure BtHapusClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Formlatihdatabase: TFormlatihdatabase;
implementation
uses Unittmb;
14
{$R *.DFM}
end;
formtambahdata.showmodal;
if (formtambahdata.modalresult=mrOK) then
with TNegara,FormTambahData do
begin
append;
fieldbyname('Name').asstring:=ednama.text;
fieldbyname('capital').asstring:=edibukota.text;
fieldbyname('continent').asstring:=edbenua.text;
fieldbyname('area').asstring:=edluas.text;
15
fieldbyname('population').asstring:=edjumlah.text;
post;
end;
formtambahdata.free;
end;
16
fieldbyname('capital').asstring:=edibukota.text;
fieldbyname('continent').asstring:=edbenua.text;
fieldbyname('area').asstring:=edluas.text;
fieldbyname('population').asstring:=edjumlah.text;
post;
end;
formtambahdata.free;
end;
17
MODUL XI
STRUCTURED QUERY LANGUAGE (SQL)
18
Klausa WHERE digunakan untuk memilih record yang akan
ditampilkan
Contoh:
Select * From Country where name like ‘A%’ untuk
menampilkan record yang namanya diawali dengan huruf ‘A’
B. ORDER BY
Klausa ORDER BY digunakan untuk mengurutkan table berdasarkan
salah satu field, baik terurut menaik (ascending) maupun terurut
menurun (descending).
Contoh:
Select * from country order by capital
Select * from country order by capital Desc
C. GROUP BY dan HAVING
Klausa GROUP BY digunakan untuk mengelompokkan record menurut
field tertentu.
Contoh:
Select continent from country group by continent.
Klausa HAVING mempunyai kegunaan mirip dengan WHERE tetapi
klausa ini digunakan untuk memberi syarat pada klausa GROUP BY.
2. INSERT
19
Perintah ini digunakan untuk menambah data atau record pada table.
Syntak:
INSERT INTO Table ( Field-Field)
Values(Data)
Contoh:
INSERT INTO COUNTRY (Name, Capital, Continent, Area,
Population)
Values (“Indonesia”,”Jakarta”,”Asia”,”5200000,215000000)
Untuk mengexekusi perintah sql dalam delphi digunakan perintah
ExecSQL.
3. DELETE
Menghapus data dengan DELETE tidak berbeda jauh dengan perintah
INSERT.
Syntak:
DELETE FROM Table WHERE Field = Data
Contoh:
DELETE FROM Country WHERE Name = ‘INDONESIA’
4. UPDATE
Perintah UPDATE digunakan untuk mengganti nilai field dari sebuah
record.
Syntak:
UPDATE Table SET Field = data WHERE Field = Data
20
Contoh:
UPDATE Country SET Population = 23000000 WHERE NAME = “INDONESIA”
Query Berparameter
Contoh:
Parameter nama pada perintah ini dapat diganti dengan string lain. Ada dua
cara untuk mengisi parameter Nama.
22
Contoh Program:
Kode program:
unit Unitsql1;
interface
uses
23
type
TForm1 = class(TForm)
DataSource1: TDataSource;
Query1: TQuery;
DBGrid1: TDBGrid;
Edit1: TEdit;
Button1: TButton;
BitBtn1: TBitBtn;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
24
{$R *.DFM}
begin
query1.close;
query1.SQL.Clear;
query1.sql.Add(edit1.text);
query1.open;
end;
end.
25
MODUL XII
REPORT
Report/laporan merupakan bentuk print out dari data. Data yang dimaksud
dapat berupa data keseluruhan dari suatu tabel atau data yang diperoleh dari
suatu query pencarian. Berikut ini adalah pembahasan bagaimana membuat
report dari suatu tabel maupun dari query.
Dalam Delphi komponen report ada beberapa seperti rave report yang
merpakan bawaan Delphi 7, quick report yang merupakan bawaan Delphi
sebelumnya, tetapi dalam Delphi pun dapat diinstalkan quicreport dari CD-nya.
Atau dapat menggunakan report dari supplier pihak ketiga seperti fast report
dan sebagainya.
Hal-hal yang perlu diperhatikan dalam pembuatan report adalah:
1. basis data sebagai data yang akan ditampilkan dalam report tersebut
2. perancangan report untuk antarmukanya
3. koneksi ke aplikasi.
Contoh
27
Report tersebut akan muncul setelah tombol CETAK REPORT ditekan.
Untuk membuat program tersebut, langkah-langkah yang harus dilakukan
adalah :
1. Langkah pertama adalah membuat desain tampilan aplikasi.
2. Tambahkan komponen button dan ubah propertiesnya sebagai berikut
Properti Value
Name Button1
Caption Cetak Report
QUICKREPORT
Properties Value
28
Name Quickreport2
Page Papersize A4
Page Orientation Portrait
Dataset Form1.Table1
Keterangan:
Properties di atas mengatur report dengan ketentuan ukuran kertas
adalah A4 dan tegak. Sedangkan data yang akan dicetak diambil dari
tabel MHS (dalam hal ini mengacu pada komponen TABLE1 pada FORM1)
QRBAND
Properties Value
Name Qrband1
Bandtype rbTitle
Keterangan:
QRBAND jenis rbTITLE digunakan untuk meletakkan judul report. Jenis
band ini terletak di bagian atas dari report.
Properties Value
Name QRBand2
Bandtype rBColumnheader
Frame Drawbootom True
Frame Drawleft True
Frame Drawright True
Frame DrawTop True
Color clRed
Keterangan:
Jenis band ini digunakan untuk meletakkan judul kolom dari tabel data
29
Properties Value
Name QRBand3
Bandtype rbDetail
Frame Drawbootom True
Frame Drawleft True
Frame Drawright True
Frame DrawTop True
Keterangan:
Band ini digunakan untuk meletakkan data
Properties Value
Name QRBand4
Bandtype rbSummary
Frame Drawbootom True
Frame Drawleft True
Frame Drawright True
Frame DrawTop True
Keterangan:
Band ini digunakan untuk meletakkan beberapa hal terkait dengan
catatan data. Biasanya catatan berupa jumlah total data atau waktu
ketika report dicetak.
Properties Value
Name QRBand5
Bandtype rbPagefooter
Frame Drawbootom True
Frame Drawleft True
Frame Drawright True
Frame DrawTop True
30
Keterangan:
Band jenis ini digunakan untuk menuliskan beberapa hal pada bagian
footer report, misalnya nomor halaman.
QRLABEL
Komponen QRLABEL digunakan untuk menuliskan teks pada report.
Properties Value
Name QRLabel1
Caption DATA MAHASISWA
Keterangan:
Komponen di atas diletakkan di band TITLE. Sedangkan untuk QRLABEL2
s/d QRLABEL7 diletakkan pada band COLUMNHEADER
Properties Value
Name QRLabel2
Caption NO
Properties Value
Name QRLabel3
Caption NIM
Properties Value
Name QRLabel4
Caption NAMA MAHASISWA
Properties Value
Name QRLabel5
Caption TGL LAHIR
31
Properties Value
Name QRLabel6
Caption ALAMAT
Properties Value
Name QRLabel7
Caption ANGKATAN
Properties Value
Name QRLabel9
Caption DICEAK PADA TANGGAL
QRDBTEXT
Komponen QRDBTEXT nantinya digunakan untuk menampilkan data, baik dari
table maupun query. Dalam komponen ini terdapat properti DATASET yang
digunakan untuk mengarahkan sumber data yang diinginkan, dan DATAFIELD
yang digunakan untuk menentukan field mana dari tabel atau query yang
32
datanya akan dicetak. Komponen QRDBTEXT1 s/d QRDBTEXT5 di bawah ini
diletakkan di bagian band DETAIL.
Properties Value
Name QRDBTEXT1
Dataset Form1.table1
DataField NIM
Properties Value
Name QRDBTEXT2
Dataset Form1.table1
DataField NAMAMHS
Properties Value
Name QRDBTEXT3
Dataset Form1.table1
DataField TGLLAHIR
Properties Value
Name QRDBTEXT4
Dataset Form1.table1
DataField ALAMAT
Properties Value
Name QRDBTEXT5
Dataset Form1.table1
DataField ANGKATAN
QRSYSDATA
33
Sedangkan komponen QRSYSDATA bermanfaat untuk menampilkan data-data
otomatis yang dihasilkan oleh sistem, misalnya nomor urut data, tanggal dan
waktu saat itu, nomor halaman, jumlah data total dll.
Properties Value
Name QRSysData1
Data qrsDetailNo
Keterangan:
Properti qrsDETAILNO berarti komponen tersebut digunakan untuk
menampilkan nomor urut data (diletakkan di band DETAIL di bawah
kolom NO).
Properties Value
Name QRSysData2
Data qrsDetailCount
Keterangan:
Properti qrsDETAILCOUNT berarti komponen tersebut digunakan untuk
menampilkan jumlah total data (diletakkan di band SUMMARY).
Properties Value
Name QRSysData3
Data qrsDate
Keterangan:
Properti qrsDATE berarti komponen tersebut digunakan untuk
menampilkan tanggal saat itu (diletakkan di band SUMMARY).
Properties Value
34
Name QRSysData4
Data qrsPageNumber
Keterangan:
Properti qrsPAGENUMBER berarti komponen tersebut digunakan untuk
menampilkan nomor halaman (diletakkan di band PAGE FOOTER).
5. Kemudian tambahkan code berikut ini pada event ONCLICK tombol CETAK
REPORT (BUTTON1) yang ada pada FORM1
QuickReport2.Preview;
35
Tambahkan satu tombol (BUTTION2) untuk CETAK DATA PENCARIAN. Pada
komponen QUERY, tambahkan pula perintah SQL berikut ini pada properti SQL.
SELECT * FROM MHS;
Sedangkan desain reportnya, adalah sebagai berikut :
QUICKREPORT
Properties Value
Name Quickreport2
Page Papersize A4
Page Orientation Portrait
Dataset Form1.Query1
QRBAND
Properties Value
Name Qrband1
Bandtype rbTitle
Properties Value
Name QRBand2
Bandtype rBColumnheader
Frame Drawbootom True
Frame Drawleft True
Frame Drawright True
Frame DrawTop True
36
Color clRed
Properties Value
Name QRBand3
Bandtype rbDetail
Frame Drawbootom True
Frame Drawleft True
Frame Drawright True
Frame DrawTop True
Properties Value
Name QRBand4
Bandtype rbSummary
Frame Drawbootom True
Frame Drawleft True
Frame Drawright True
Frame DrawTop True
Properties Value
Name QRBand5
Bandtype rbPagefooter
Frame Drawbootom True
Frame Drawleft True
Frame Drawright True
Frame DrawTop True
QRLABEL
Komponen QRLABEL digunakan untuk menuliskan teks pada report.
Properties Value
Name QRLabel1
Caption DATA MAHASISWA
37
Properties Value
Name QRLabel2
Caption NO
Properties Value
Name QRLabel3
Caption NIM
Properties Value
Name QRLabel4
Caption NAMA MAHASISWA
Properties Value
Name QRLabel5
Caption TGL LAHIR
Properties Value
Name QRLabel6
Caption ALAMAT
Properties Value
Name QRLabel7
Caption ANGKATAN
Properties Value
Name QRLabel9
38
Caption DICEAK PADA TANGGAL
QRDBTEXT
Komponen QRDBTEXT1 s/d QRDBTEXT5 di bawah ini diletakkan di bagian band
DETAIL.
Properties Value
Name QRDBTEXT1
Dataset Form1.query1
DataField NIM
Properties Value
Name QRDBTEXT2
Dataset Form1.query1
DataField NAMAMHS
Properties Value
Name QRDBTEXT3
Dataset Form1.query1
DataField TGLLAHIR
Properties Value
Name QRDBTEXT4
Dataset Form1.query1
DataField ALAMAT
Properties Value
Name QRDBTEXT5
39
Dataset Form1.query1
DataField ANGKATAN
QRSYSDATA
Properties Value
Name QRSysData1
Data qrsDetailNo
40
Properties Value
Name QRSysData2
Data qrsDetailCount
Properties Value
Name QRSysData3
Data qrsDate
Properties Value
Name QRSysData4
Data qrsPageNumber
42
Latihan Satu
unit Unitsatu;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TFormsatu = class(TForm)
Lebartambah: TButton;
Lebarkurang: TButton;
43
Tinggitambah: TButton;
Tinggikurang: TButton;
procedure LebartambahClick(Sender: TObject);
procedure LebarkurangClick(Sender: TObject);
procedure TinggitambahClick(Sender: TObject);
procedure TinggikurangClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Formsatu: TFormsatu;
implementation
{$R *.DFM}
44
begin
formsatu.Width :=formsatu.Width - 20;
end;
end.
Latihan Dua
45
Source Program
unit Unitdua;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TFormdua = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
chksistem: TCheckBox;
46
chkmin: TCheckBox;
chkmax: TCheckBox;
chkhelp: TCheckBox;
rbnone: TRadioButton;
rbsize: TRadioButton;
rbdialog: TRadioButton;
rbsingle: TRadioButton;
rbsizetoolwin: TRadioButton;
rbtoolwindow: TRadioButton;
procedure chksistemClick(Sender: TObject);
procedure rbnoneClick(Sender: TObject);
procedure rbsizeClick(Sender: TObject);
procedure rbdialogClick(Sender: TObject);
procedure rbsingleClick(Sender: TObject);
procedure rbsizetoolwinClick(Sender: TObject);
procedure rbtoolwindowClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Formdua: TFormdua;
47
implementation
{$R *.DFM}
48
begin
formdua.BorderStyle :=bssizeable;
end;
end.
49
Latihan Tiga
Source Program
unit Unittiga;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
50
type
TForm1 = class(TForm)
rbrenag: TRadioButton;
lbrenang: TLabel;
rbfitnes: TRadioButton;
lbfitness: TLabel;
rbcatur: TRadioButton;
lbcatur: TLabel;
btnulangi: TButton;
btnkeluar: TButton;
procedure btnkeluarClick(Sender: TObject);
procedure rbrenagClick(Sender: TObject);
procedure rbfitnesClick(Sender: TObject);
procedure rbcaturClick(Sender: TObject);
procedure btnulangiClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
51
{$R *.DFM}
end;
end;
52
lbcatur.Caption :='Baik untuk mengasah Otak'
end;
end.
Latihan Empat
53
Source Program
unit Unitempat;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, StdCtrls;
type
TFormempat = class(TForm)
Label1: TLabel;
lbcontoh: TLabel;
54
Label3: TLabel;
edinput: TEdit;
btnproses: TButton;
GroupBox1: TGroupBox;
btnefek: TButton;
rbtebal: TRadioButton;
rbmiring: TRadioButton;
rbgarisbawah: TRadioButton;
GroupBox2: TGroupBox;
btnulangi: TButton;
bbclose: TBitBtn;
procedure bbcloseClick(Sender: TObject);
procedure btnulangiClick(Sender: TObject);
procedure btnprosesClick(Sender: TObject);
procedure btnefekClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Formempat: TFormempat;
implementation
55
{$R *.DFM}
56
procedure TFormempat.btnefekClick(Sender: TObject);
begin
if rbtebal.Checked = true then
lbcontoh.Font.Style :=[fsbold]
else
if rbmiring.Checked = true then
lbcontoh.Font.Style :=[fsitalic]
else
lbcontoh.Font.Style :=[fsunderline];
end;
end.
57
Latihan Lima
Source Program
unit Unitlima;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, Buttons, ExtCtrls, Spin;
58
type
TFormlima = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
Panel1: TPanel;
Panel2: TPanel;
btnulangi: TButton;
bbclose: TBitBtn;
Panel3: TPanel;
btnefek: TButton;
lbcontoh: TLabel;
rbmaroon: TRadioButton;
rbhijau: TRadioButton;
rbnavi: TRadioButton;
rbkuning: TRadioButton;
rbmerah: TRadioButton;
rb12: TRadioButton;
rb14: TRadioButton;
btntambah: TButton;
btnkurang: TButton;
chktebal: TCheckBox;
chkmiring: TCheckBox;
chkgarisbawah: TCheckBox;
59
chkcorettengah: TCheckBox;
edukuran: TEdit;
procedure rbmaroonClick(Sender: TObject);
procedure rbhijauClick(Sender: TObject);
procedure rbnaviClick(Sender: TObject);
procedure rbkuningClick(Sender: TObject);
procedure rbmerahClick(Sender: TObject);
procedure rb12Click(Sender: TObject);
procedure rb14Click(Sender: TObject);
procedure btntambahClick(Sender: TObject);
procedure btnkurangClick(Sender: TObject);
procedure btnefekClick(Sender: TObject);
procedure bbcloseClick(Sender: TObject);
procedure btnulangiClick(Sender: TObject);
procedure edukuranEnter(Sender: TObject);
procedure edukuranKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Formlima: TFormlima;
60
implementation
{$R *.DFM}
61
procedure TFormlima.rbmerahClick(Sender: TObject);
begin
lbcontoh.Font.Color :=clred;
end;
62
else
if lbcontoh.Font.Size=14 then
begin
rb14.Checked :=true;
edukuran.Text :='14';
end
else
begin
rb12.Checked :=false;
rb14.Checked :=false;
edukuran.Text :=inttostr(lbcontoh.Font.size);
end ;
end;
63
rb14.Checked :=true;
edukuran.Text :='14';
end
else
begin
rb12.Checked :=false;
rb14.Checked :=false;
edukuran.Text :=inttostr(lbcontoh.Font.size);
end ;
end;
fs:=[];
if chktebal.Checked =true then
fs:=fs+[fsbold];
if chkmiring.Checked =true then
fs:=fs+[fsitalic];
if chkgarisbawah.Checked =true then
fs:=fs+[fsunderline];
if chkcorettengah.Checked =true then
64
fs:=fs+[fsstrikeout];
lbcontoh.Font.Style :=fs;
end;
65
lbcontoh.Font.Size :=8;
end;
66
end;
end.
Latihan Enam
67
Source Program
unit Unitenam;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, StdCtrls, ExtCtrls;
type
TFormenam = class(TForm)
Panel1: TPanel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Panel3: TPanel;
Label5: TLabel;
edbil1: TEdit;
edbil2: TEdit;
edbil3: TEdit;
edbil4: TEdit;
edhasil: TEdit;
Panel4: TPanel;
68
RG: TRadioGroup;
Button1: TButton;
Panel2: TPanel;
Button2: TButton;
BitBtn1: TBitBtn;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Formenam: TFormenam;
implementation
{$R *.DFM}
69
begin
bil1:=strtoint(edbil1.text);
bil2:=strtoint(edbil2.text);
bil3:=strtoint(edbil3.text);
bil4:=strtoint(edbil4.text);
if rg.ItemIndex =0 then
begin
jumlah:=bil1+bil2+bil3+bil4;
edhasil.text:=inttostr(jumlah);
end
else
if rg.ItemIndex =1 then
begin
kurang:=bil1-bil2-bil3-bil4;
edhasil.text:=inttostr(kurang);
end
else
if rg.ItemIndex =2 then
begin
kali:=bil1*bil2*bil3*bil4;
edhasil.text:=inttostr(kali);
end
else
if rg.ItemIndex =3 then
begin
70
bagi:=bil1/bil2;
edhasil.text:=floattostr(bagi);
end
else
if rg.ItemIndex =4 then
begin
pangkat:=1;
for i:=1 to bil2 do
pangkat:=pangkat*bil1;
edhasil.text:=inttostr(pangkat);
end;
end;
71
end.
Latihan Tujuh
72
Source Program
unit Unittujuh;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
List1: TListBox;
List2: TListBox;
Btisisatulist2: TButton;
BtIsiList2semua: TButton;
BtIsisatuList1: TButton;
BtIsiList1Semua: TButton;
Panel1: TPanel;
combo: TComboBox;
BtIsiCombo: TButton;
BtHapusCombo: TButton;
BtUlangi: TButton;
Label1: TLabel;
Label2: TLabel;
73
BBClose: TBitBtn;
procedure BtIsiComboClick(Sender: TObject);
procedure BtHapusComboClick(Sender: TObject);
procedure comboClick(Sender: TObject);
procedure Btisisatulist2Click(Sender: TObject);
procedure BtIsiList2semuaClick(Sender: TObject);
procedure BtIsiList1SemuaClick(Sender: TObject);
procedure BtIsisatuList1Click(Sender: TObject);
procedure BtUlangiClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
74
combo.Items.Add('Inggris');
combo.Items.Add('Francis');
combo.Items.Add('Belanda');
combo.Items.Add('Jerman');
end;
75
for i:=0 to list1.Items.Count -1 do
list2.Items.Add(list1.items.strings[i]);
list1.Clear ;
end;
end;
76
end;
end.
77
Latihan Delapan
Source Program
unit Unitdelapan;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Menus;
78
type
TFormdelapan = class(TForm)
Menu1: TMainMenu;
File1: TMenuItem;
Exit1: TMenuItem;
Perhitungan1: TMenuItem;
SegiTiga1: TMenuItem;
Luas1: TMenuItem;
Keliling1: TMenuItem;
Lingkaran1: TMenuItem;
Luas2: TMenuItem;
Keliling2: TMenuItem;
Popup1: TPopupMenu;
SegiTiga2: TMenuItem;
Keliling3: TMenuItem;
Popup2: TPopupMenu;
Luas3: TMenuItem;
Keliling4: TMenuItem;
Panel1: TPanel;
Panel2: TPanel;
Shape1: TShape;
Shape2: TShape;
Label1: TLabel;
EDJARI: TEdit;
Label2: TLabel;
79
EdLuasLingkaran: TEdit;
EdkelilingLingkaran: TEdit;
EdPanjang: TEdit;
Label3: TLabel;
Label4: TLabel;
EdLebar: TEdit;
Label5: TLabel;
Label6: TLabel;
EdLuasEmpat: TEdit;
EdKelilingEmpat: TEdit;
Label7: TLabel;
Ulangi1: TMenuItem;
procedure Exit1Click(Sender: TObject);
procedure Luas1Click(Sender: TObject);
procedure Keliling1Click(Sender: TObject);
procedure Ulangi1Click(Sender: TObject);
procedure Shape1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Shape2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure SegiTiga2Click(Sender: TObject);
procedure Keliling3Click(Sender: TObject);
procedure Keliling2Click(Sender: TObject);
procedure Luas2Click(Sender: TObject);
80
private
{ Private declarations }
public
{ Public declarations }
end;
var
Formdelapan: TFormdelapan;
implementation
{$R *.DFM}
81
procedure TFormdelapan.Keliling1Click(Sender: TObject);
begin
if (edpanjang.Text ='') or (edlebar.Text ='') then
MessageDlg('Teks Panjang atau Teks Lebar kosong', mtInformation, [mbOk], 0)
else
edkelilingempat.text:=inttostr((2*strtoint(edpanjang.text))
+(2*strtoint(edlebar.text)));
end;
82
begin
if button = mbright then
begin
x:=formdelapan.Left +90;
y:=formdelapan.Top +90;
popup1.Popup(x,y);
end;
end;
83
edluaslingkaran.Text :=floattostr(strtofloat(edjari.text)* strtofloat(edjari.text) *
3.14);
end;
84
edluaslingkaran.Text :=floattostr(strtofloat(edjari.text)* strtofloat(edjari.text) *
3.14);
end;
end.
Latihan Sembilan
85
Source Program
unit Unitsembilan;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, ExtCtrls, StdCtrls, Grids;
type
TFormsembilan = class(TForm)
Grid1: TStringGrid;
Label1: TLabel;
EdInput: TEdit;
BtProses: TButton;
edjmlkol1: TEdit;
edjmlkol2: TEdit;
edjmlkol3: TEdit;
edjmlkol4: TEdit;
Panel1: TPanel;
BtUlangi: TButton;
BBKeluar: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure BtProsesClick(Sender: TObject);
86
procedure BtUlangiClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Formsembilan: TFormsembilan;
implementation
{$R *.DFM}
87
var i,kol1,kol2,kol3,kol4 : integer;
begin
grid1.rowcount:=strtoint(edinput.text)+1;
kol1:=0;
kol2:=0;
kol3:=0;
kol4:=0;
for i:=1 to grid1.RowCount - 1 do
begin
grid1.Cells [0,i] := inttostr(i);
grid1.Cells [1,i] := inttostr(i * 2);
grid1.Cells [2,i] := inttostr(i*3);
grid1.Cells [3,i] := inttostr(i*i);
if i=1 then
grid1.Cells [4,i] := inttostr(i)
else
grid1.Cells [4,i] := inttostr(strtoint(grid1.Cells [4,i-1])+strtoint(grid1.Cells
[0,i]));
kol1:=kol1 + strtoint(grid1.Cells [1,i]);
kol2:=kol2 + strtoint(grid1.Cells [2,i]);
kol3:=kol3 + strtoint(grid1.Cells [3,i]);
kol4:=kol4 + strtoint(grid1.Cells [4,i]);
end;
edjmlkol1.Text :=inttostr(kol1);
88
edjmlkol2.Text :=inttostr(kol2);
edjmlkol3.Text :=inttostr(kol3);
edjmlkol4.Text :=inttostr(kol4);
end;
end.
Latihan Sepuluh
89
90
Source Program
unit Unitsepuluh;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, StdCtrls, ComCtrls, ExtCtrls, Buttons;
type
TFormSepuluh = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Label1: TLabel;
Label2: TLabel;
ednofaktur: TEdit;
Label3: TLabel;
dttanggal: TDateTimePicker;
Label4: TLabel;
cmbnosuplier: TComboBox;
Label5: TLabel;
ednamasuplier: TEdit;
Label6: TLabel;
91
edalamat: TEdit;
Label7: TLabel;
cmbkodebrg: TComboBox;
Label8: TLabel;
ednamabrg: TEdit;
Label9: TLabel;
edharga: TEdit;
Label10: TLabel;
edqty: TEdit;
btproses: TButton;
Grid1: TStringGrid;
Label11: TLabel;
Label12: TLabel;
edtotal: TEdit;
btulangi: TButton;
bbclose: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure bbcloseClick(Sender: TObject);
procedure cmbkodebrgClick(Sender: TObject);
procedure cmbnosuplierClick(Sender: TObject);
procedure btprosesClick(Sender: TObject);
procedure btulangiClick(Sender: TObject);
private
{ Private declarations }
public
92
{ Public declarations }
end;
type
TSuplier = record
nosup:string;
nama:string;
alamat:string;
end;
type
Tbarang =record
kode:string;
nama : string ;
harga : integer;
end;
var
i,hasil:integer;
FormSepuluh: TFormSepuluh;
arsup : array[0..3] of Tsuplier;
arbrg : array[0..3] of Tbarang;
implementation
{$R *.DFM}
93
procedure isisup();
begin
arsup[0].nosup:='S001';
arsup[0].nama:='PT. Jaya Ningrat';
arsup[0].alamat:='Jl. P. Dinonogoro 76';
arsup[1].nosup:='S002';
arsup[1].nama:='PT. Ningrat Jaya';
arsup[1].alamat:='Jl. Purwakarta 7';
arsup[2].nosup:='S003';
arsup[2].nama:='PT. Cakti Abadi';
arsup[2].alamat:='Jl. Tambunan 276';
arsup[3].nosup:='S004';
arsup[3].nama:='PT. Citra Sari';
arsup[3].alamat:='Jl. Blambangan 67';
end;
procedure isibrg();
begin
arbrg[0].kode:='B001';
arbrg[0].nama:='Kursi';
arbrg[0].harga:=10000;
arbrg[1].kode:='B002';
arbrg[1].nama:='Meja';
arbrg[1].harga:=20000;
arbrg[2].kode:='B003';
94
arbrg[2].nama:='Lemari';
arbrg[2].harga:=40000;
arbrg[3].kode:='B004';
arbrg[3].nama:='Sofa';
arbrg[3].harga:=80000;
end;
procedure TFormSepuluh.FormCreate(Sender: TObject);
var j: integer;
begin
grid1.ColWidths [0]:=50;
grid1.ColWidths [1]:=70;
grid1.ColWidths [2]:=150;
grid1.rowcount:=1;
isisup;
isibrg;
dttanggal.DateTime:=date;
i:=1;
hasil:=0;
for j:=0 to 3 do
begin
cmbkodebrg.items.add(arbrg[j].kode);
cmbnosuplier.items.add(arsup[j].nosup);
end;
95
end;
96
grid1.cells[3,i-1]:=edharga.text;
grid1.cells[4,i-1]:=edqty.text;
grid1.cells[5,i-1]:=inttostr(strtoint(edharga.text)*strtoint(edqty.text));
hasil:=hasil+strtoint(grid1.cells[5,i-1]);
i:=i+1;
edtotal.Text :=inttostr(hasil);
end;
97
grid1.Cells[5,0]:='';
edtotal.Text :='';
ednofaktur.SetFocus ;
end;
end.
Latihan Sebelas
Source Program
98
unit Unitsebelas;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, ExtCtrls;
type
TFormsebelas = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
GroupBox1: TGroupBox;
BtProses: TButton;
BtUlangi: TButton;
bbclose: TBitBtn;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
Label1: TLabel;
EdHasil: TEdit;
RbPermutasi: TRadioButton;
RBCombinasi: TRadioButton;
RBPangkat: TRadioButton;
Label2: TLabel;
99
edN: TEdit;
Label3: TLabel;
EdR: TEdit;
Label4: TLabel;
EdDasar: TEdit;
Label5: TLabel;
EdPangkat: TEdit;
procedure BtProsesClick(Sender: TObject);
procedure BtUlangiClick(Sender: TObject);
private
{ Private declarations }
public
{function pangkat(bd : integer; bp : integer):integer;
function faktorial(N : integer):integer; }
{ Public declarations }
end;
var
Formsebelas: TFormsebelas;
implementation
{$R *.DFM}
100
function pangkat(bd : integer; bp : integer):integer;
var
i,hasil : integer;
Begin
hasil:=1;
for i:= 1 to bp do
hasil := hasil * bd;
pangkat :=hasil;
end;
edhasil.text:=floattostr(faktorial(strtoint(edN.text))/faktorial((strtoint(edN.text)-
strtoint(edR.text))))
else
101
if rbCombinasi.Checked =true then
edhasil.Text
:=floattostr(faktorial(strtoint(edN.text))/(faktorial(strtoint(edR.text))*faktorial((s
trtoint(edN.text)-strtoint(edR.text)))))
else
if rbpangkat.Checked =true then
edhasil.Text
:=inttostr(pangkat(strtoint(eddasar.text),strtoint(edpangkat.text)));
end;
end.
102
Latihan Dua Belas
Form About
103
Form Transaksi
104
Source Program
unit DM;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBTables, DB;
type
TDM1 = class(TDataModule)
tblMaster: TTable;
tblMasterSYMBOL: TStringField;
tblMasterCO_NAME: TStringField;
tblMasterEXCHANGE: TStringField;
tblMasterIndustryLongName: TStringField;
tblMasterCUR_PRICE: TFloatField;
tblMasterYRL_HIGH: TFloatField;
tblMasterYRL_LOW: TFloatField;
tblMasterP_E_RATIO: TFloatField;
tblMasterPROJ_GRTH: TFloatField;
tblMasterINDUSTRY: TSmallintField;
105
tblMasterPRICE_CHG: TSmallintField;
tblMasterRATING: TStringField;
tblMasterRANK: TFloatField;
tblMasterOUTLOOK: TSmallintField;
tblMasterRCMNDATION: TStringField;
tblMasterRISK: TStringField;
dsMaster: TDataSource;
tblIndustry: TTable;
tblIndustryIND_CODE: TSmallintField;
tblIndustryIND_NAME: TStringField;
tblIndustryLONG_NAME: TStringField;
dsIndustry: TDataSource;
tblHoldings: TTable;
tblHoldingsACCT_NBR: TFloatField;
tblHoldingsSHARES: TFloatField;
tblHoldingsPUR_PRICE: TFloatField;
tblHoldingsPUR_DATE: TDateField;
tblHoldingsSYMBOL: TStringField;
tblHoldingsPUR_COST: TCurrencyField;
dsHoldings: TDataSource;
procedure tblHoldingsCalcFields(DataSet: TDataSet);
procedure tblHoldingsAfterPost(DataSet: TDataSet);
procedure CalculateTotals(Sender: TObject; Field: TField);
procedure tblHoldingsAfterOpen(DataSet: TDataSet);
private
106
{ Private declarations }
public
{ Public declarations }
end;
var
DM1: TDM1;
implementation
uses CtrlForm;
{$R *.DFM}
107
flDifference: Real; { Holds difference between cost and value }
strFormatSpec: string; { The Display Format specification }
begin
108
{ Calculate the total cost of these holdings. }
tblHoldings.disableControls; { hide this process from the user }
tblHoldings.first;
while not tblHoldings.eof do
begin
flTotalCost := flTotalCost + tblHoldingsPUR_COST.AsFloat;
flTotalShares := flTotalShares + tblHoldingsSHARES.AsFloat;
tblHoldings.next;
end;
tblHoldings.first;
tblHoldings.enableControls; { restore the display of holdings }
strFormatSpec := tblMasterCUR_PRICE.DisplayFormat;
109
{ Update the result displays }
FmCtrlGrid.lTotalCost.Caption :=
FormatFloat( strFormatSpec, flTotalCost );
FmCtrlGrid.lTotalShares.Caption :=
FormatFloat( strFormatSpec, flTotalValue );
FmCtrlGrid.lDifference.Caption :=
FormatFloat( strFormatSpec, flDifference );
110
var
bmCurrent : TBookmark; { Holds the current position }
begin
with tblHoldings do
begin
bmCurrent := getBookmark; { save position }
try
CalculateTotals(nil, nil); { recalc totals }
gotoBookmark(bmCurrent); { restore position }
finally;
freeBookmark(bmCurrent); { free memory }
end;
end;
end;
end.
unit CtrlForm;
111
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBCtrls, StdCtrls, ExtCtrls, Mask, DBTables, DB, Grids, DBGrids, Menus,
DBCGrids;
type
TFmCtrlGrid = class(TForm)
DBCtrlGrid1: TDBCtrlGrid;
DBGrid1: TDBGrid;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Button1: TButton;
Bevel1: TBevel;
Label8: TLabel;
112
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
lPurchase: TLabel;
lTotalCost: TLabel;
lTotalShares: TLabel;
lDifference: TLabel;
DBNavigator1: TDBNavigator;
MainMenu1: TMainMenu;
About1: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure DBGrid1Enter(Sender: TObject);
procedure DBCtrlGrid1Enter(Sender: TObject);
procedure About1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FmCtrlGrid: TFmCtrlGrid;
implementation
113
uses DM, About;
{$R *.DFM}
114
procedure TFmCtrlGrid.About1Click(Sender: TObject);
begin
with TFMAboutBox.Create(nil) do
try
ShowModal;
finally
Free;
end;
end;
end.
115