You are on page 1of 157

INFORMASI PEMROGRAMAN DELPHI

Informasi Pemrograman Delphi

Delphi adalah salah satu tool memberikan kemudahan

pemrograman visual yang programmer untuk

kepada

membangun perangkat lunak. Borland Delphi didukung oleh supplier pihak ketiga yang menyediakan komponen-komponen yang dibutuhkan oleh para programmer. Delphi merupakan tool pemrograman yang menganut event drivent konsep, dimana programmer dalam membangun program tinggal merespon pada event dari komponen yang di kehendaki. Tetapi juga Delphi menyediakan console, vcl untuk pemrograman terstruktur. Delphi juga memberikan kemudahan dalam mengakses basis data dan pembuatan laporan. 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.

Informasi Pemrograman Delphi

ii

Daftar isi
Pengantar Daftar Isi Modul I : Cara Bekerja Delphi Integrated Developent Environment Mendesain Sebuah Form Konsep Event Driven Variable, Konstanta dan Type Record Struktur Dasar Selection Struktur Dasar Loop : Bekerja Dengan Banyak Form Pemrograman Basis Data (Beck End) Pemrograman Basis Data (Front End) Structure Query Laguage Report Modul II : Modul III : Modul IV : Modul V : Modul VI : Modul VII : Modul VIII Modul IX : Modul X : Modul XI : Modul XII :

Informasi Pemrograman Delphi

iii

MODUL I CARA DELPHI BEKERJA


Apakah Delphi itu?

Delphi (IDE) adalah sebuah Visual Interface antara Anda (the User) dan Komputer anda (yang berjalan diatas Windows ).

Delphi

menterjemahkan

Visual

Components

(Buttons,

Panels,..) yang ada pada Form kedalam sebuah kode-kode komputer (pseudo in Unit1.dfm) yang mendefinisikan bagaimana dibentuknya form dan komponennya termasuk juga propertinya. 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 Ini normal, ANDA TIDAK bahasa DIHARAPKAN pemrograman MENGUBAHNYA Visual (Visual Unit1.dfm File; Anda hanya bekerja pada Form1 secara Visual. yang dinamakan Programming) Saat anda mengkompilasi program, apa yang terjadi? Delphi akan memanggil file .dpr file (file proyek anda) Delphi meminta program yang ada dalam proyek tersebut dan file dpr memberikan sbb :
uses Forms, Unit1 in Unit1.pas {Form1};

Informasi Pemrograman Delphi

Delphi meminta, Apa yang dilakukan pertama kali ? .dpr file memberikan sbb :
begin Application.Initialize; Application.CreateForm(Tform1, Form1); Application.Run; end.

FILE yang ada dalam Delphi: 1) *.dpr adalah file proyek yang dibuat berisi program kecil mendefinisikan Unit yang ada dalam file proyek menginisialisasi data membangun form menjalankan aplikasi
uses Forms, Unit1 in Unit1.pas {Form1}; begin Application.Initialize; Application.CreateForm(Tform1, Form1); Application.Run; end.

untuk :

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

Informasi Pemrograman Delphi

object Form1: Tform1 Left = 200 Top = 108 Width = 696 Height = 480 Caption = Form1 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = MS Sans Serif Font.Style = [] PixelsPerInch = 96 TextHeight = 13 object Button1: Tbutton Left = 176 Top = 116 Width = 75 Height = 25 Caption = Button1 TabOrder = 0 end end

MODUL II

Informasi Pemrograman Delphi

INTEGRATED DEVELOPMENT ENVIRONMENT


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

Kegunaan masing-masing bagian adalah: 1. Menu bar adalah untuk membantu pemrogram dalam menyelesaikan desain sistem (program), segala kebutuhan untuk menunjang pemrograman dapat ditelusuri dari menu bar. Misalnya, menyimpan unit, project dan lain-lain. 2. Speed Toolbar adalah untuk memudahkan pemrogram dalam menyelesaikan programnya, speed menu terdiri dari perintah yang sering digunakan, seperti : menyimpan

Informasi Pemrograman Delphi

project, unit, menjalankan program, mengganti tampilan dari desian form ke kode editor dasn sebaliknya, melihat unit yang ada dalam project dan lain-lain. 3. Componen Palete adalah bagian dari Delphi yang menyediakan kumpulan komponen yang dapat digunakan dalam mendesain form. Componen Palete ini terbagi berdasarkan katagori tersediri, diantaranya: a. Standard yaitu komponen yang sering digunakan, seperti: label, edit, button dan lain-lain. b. Aditional yaitu kmponen yang merupakan tambahan dari katagori standard, komponen dalam katagori ini diantaranya: BitBTn, SpeedButton, MaskEdit, StringGrid dan lain-lain c. Win32 yaitu kumpulan untuk pemrograman 32 bit, komponen dalam katagori ini adalah : TabControl, PageControl, ImageList, ProgressBar, UpDown dan lain-lain d. System, DatAccess, DataControl, Ado dan lain-lain.
4. Object Inspector adalah bagian Delphi yang berisi Properti

dari suatu komponen yang sedang aktif, dan kumpulan Event yang dapat dilakukan terhadap suatu komponen.
5. Form

Design

adalah

tempat

dimana

pemrogram

melakukan aksinya untuk menampilkan interfacing anatar user dan komputer. Pada form inilah komponen-komponen dari Component Palete diletakan. 6. Code Editor adalah sisi belakang dari sebuah sistem. Dia berisi koe-kode program yang berkaitan dengan suatu raksi terhadap event dari suatu komponen.

Informasi Pemrograman Delphi

Object Inspector

Class atau type data Nama Object yang sedang aaktif Cetakan yang akan ditampilkan diform Nama Object yang akan digunakan dalam pemrograman

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:

Informasi Pemrograman Delphi

Nama Class

Salah satu kejadian yang dapat dikenakan pada object tersebut Nama Object

Beberapa komponen yangsering digunakan dalam mata kuliah ini: Label: digunakan sebagai alat Output, biasanya tulisantulisan yang tidak akan diproses lebih lanjut. Edit : digunakan untuk alat input data dan juga dapat digunakan untuk menampilkan data di layar Button : digunakan sebagai tombol perintah misalnya untuk tombol Proses dan lain-lain Checkbox hobby Radiobutton : digunakan sebagai pilihan dimana pilihan tersebut hanya dapat dipilih jenis kelamin satu pilihan saja, misalnya : digunakan sebagai pilihan dimana pilihan

tersebut dapat dipilih lebih dari satu pilihan, misalnya

Informasi Pemrograman Delphi

Listbox : digunakan untuk mendaftar sesuatu yang lebih dari satu, Listbox tidak dapat diinput secara interaksi langsung Combobox: merupakan perpaduang antara edit dan listbox, dengan demikian combobox dapat diisi secara langsung atau dari pilihan daftar yang tersedia Groupbox : digunakan untuk mengelompokan komponen kedalam suatu kotak Radiogroup : digunakan untuk mengelopokan Radiobutton kedalam suatu kotak dan dapat diakses dengan mengunakan index Panel : digunakan sebagai landasar untuk komponen lainnya. Panel digunakan untuk mempercantik tampilan Bitbtn ignore : hampir sama dengan button, tetapi bitbtn dan lain-lain

dapat digunakan untuk keperluan khusus, seperti close,

Main Menu : digunakan untuk membuat menu fulldown PopUp Menu : digunakan untuk membuat popup menu Image : digunakan untuk menamplikan gambar

Informasi Pemrograman Delphi

Datasource : Digunakan untuk koneksi ke table yangtelah ditunjuk oleh komponen tabel Table : digunakan untuk koneksi ke database, biasanya melalui nama alias query : digunakan untuk menyaring informasi dari tabel Database: digunakan untuk koneksi ke database DBGrid ; digunakan untuk menampilkan data dari table dalam bentuk sheet DBNavigator : digunakan untuk menelusuri tabel DBEdit : digunakan untuk menampilkan data dari table.

Masih banyak lagi komponen yang dapat digunakan oleh mahasiswa untuk lebih memperdalam bahasa pemrograman Delphi. Untuk hal itu silahkan belajar sendiri dengan komponen tersebut.

Informasi Pemrograman Delphi

MODUL III MENDESAIN SEBUAH FORM


Dalam pemrograman visual ada pembalikan kaidah

pemrograman jika dibandingkan dengan kaidah pemrograman non-visual. Programmer dapat mendesain output dari suatu program, kemudian merancang yang menjadi input, apa yang menjadi output dan megaimana proses yang terjadi. Untuk keperluan tersebut Delphi menyediakan suatu TOOLS yang disebut Component Palete yang terdiri beberapa katagori. Setiap katagori terdiri dari beberapa komponen (object) yang dapat ditempelkan pada form.

selain Component Palete, Delphi menyediakan Object Inspector, yang berfungsi untuk mendefinisikan nilai atau atribut suatu komponen. Pada awalnya setiap komponen memiliki nilai standard masingmasing, tugas pemrogram adalah apakan nilai standard tersebut akan diganti atau tidak.

Informasi Pemrograman Delphi

10

Nilai standars dari komponen form

Mendesain Sebuah Form 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

Komponent yang dipilih

Informasi Pemrograman Delphi

11

b. bawa pointer mouse pada form dimana komponen tersebut akan diletakan, kemudian klik dan drag tombol mouse kiri membentuk sebuah kotak sebesar ukuran komponen yang diinginkan. c. Pada saat komponen tersebut dipilih, pemrogram dapat mengganti properties dari komponen tersebut pada item yang ingin diubah pada Object Inspector. 2. a. b. Klik ganda tombol mouse kiri pada komponen yang akan ditempelkan Komponen tersebut akan tertempel pada form ditengah-tengah form. c. Pindahkan posisinya sesuai kebutuhan, dan ubahkan propertiesnya sesuai kebutuhan juga.

Komponen yang sedang dipilih

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

Informasi Pemrograman Delphi

12

Merubah ukuran komponen secara general 1. pilih semua komponen yang akan diubah ukurannya dengan syarat hasilnya semua ukuran dari komponenyang dipilih adalah sama. 2. klik kanan pilih size, maka akan muncul kotak dialog sebagai berikut:

3. pilih option yang dikehendaki, apakah akan merubah pajang atau tinggi. 4. option yang tersedia, adalah: a. tidak ada perubahan b. merubah semua ukuran komponen yang terpilih sama dengan ukuran kmponen tang terkecil c. merubah semua ukuran komponen yang terpilih sama dengan ukuran kmponen tang terbesar d. merubah semua ukuran komponen yang terpilih secara manual e. jika option telah dipilih, klik tombol OK

Informasi Pemrograman Delphi

13

Sebelum diubah ukurannya. ukurannya

Setelah diubah

Merubah perapian komponen 1. pilih semua komponen yang akan diubah perapiannya 2. klik kanan pilih align, maka akan muncul kotak dialog sebagai berikut:

3. pilih option yang dikehendaki 4. option yang tersedia, adalah: a. tidak ada perubahan b. rata kiri c. rata tengah d. rata kanan e. jarak antar komponen sama f. tengah-tengan window

Informasi Pemrograman Delphi

14

sebelum dirapi kan

setelah dirapikan

Informasi Pemrograman Delphi

15

MODUL IV KONSEP EVENT DRIVEN


Pemrograman dan memiliki visual kelakuan merupanan (Method). pemrograman Untuk mengolah yang atau

berorientasi pada Object. Setiap Object memiliki karakteristik memanipulasi karakteristik suatu object, pemrogram dapat melakukannya dengan dua cara, yaitu : pertama pada saat mendesain form, object yang ditempelkan pada form tersebut dapat dimanipulasi karakteristiknya melalaui jendela Object Inspector. Ker\dua: pada saat program dijalankan. Manipulasi seperti ini harus menggunakan prosedur. Selain karakteristik object juga memunyai kelakuan (event) artinya kalakuan apa saja yang dapat dikenakan pada object tersebut, misalnya object Button memiliki event onclick, onenter dan lain-lain. Dengan adanya event tersebut, pemrogram tidah haus membuat kode program untuk setiap event. Tetapi hanya event-event yang akan dipakai dalam suatu program sjan yang ditanggapi. Hal tersebut diatas dapat diartikan ada aksi (onclick, onenter) ada reaksi (suatu program yang dibuat oleh pemrogram untuk menanggapi jika salah satu event pada suatu object). Istilah aksi dan reaksi itu dikenal dengan event drivent. Hasil dari event-m drivent adalah sebuah prosedur. Cara membuat suatu event dari object adalah: 1. Pilih object yang akan dibuat event-nya 2. Pilih tabulasi Event pada kotak Object Inspector 3. Klik ganda pada even yang dikehendaki 4. hasilnya adalah :

Informasi Pemrograman Delphi

16

Object Prosedur yang tercipta

Event yang akan ditanggapi

Dalam kode program yang tercipta adalah:

Nama class dari form yang aktive

Parameter Nama Event Nama Object Bagian tubuh dari prosedur tempat pemrogram membuat kode program untuk menanggapi event

Bagian tubuh prosedur, adalah tempat membuat kode program guna menenggapi event dari object tersebut. Delphi dalam hal ini memberikan kemudahan dengan wizard-nya. Pemrogram hanya mengetikan nama object dan titik, maka Delphi akan menampilkan semua properties dan method yang dimiliki oleh object tersebut.

Informasi Pemrograman Delphi

17

Contohnya prosedur didalam gambar tercipta untuk menangapi jika onject button diklik. Dalam tubuh prosedur, ketikan form1 ( akan mengganti judul form dengan tulisan tertentu), kemudian ketikan titik, maka akan muncul wizard seperti terlihap pada gambar. Untuk membuat judul form , properties yang harus diganti adalah Caption. Kecikan c, maka baris active pada wizard akan mengarah pada baris yang huruf awalnya c, pindahkan baris active ke tulisan caption kemudian tekan spacebar pada keyboarxd. Hasilnya adalah: 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 Forms,
Nama Program Bagian uses untuk memanggil unit1

Unit1 in 'Unit1.pas' {Form1}; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1);


Bagian utama

Informasi Pemrograman Delphi

18

Application.Run; end. Sedangkan unit-unit dalam Delphi strukturnya adalah: unit Unit1; interface uses
Nama Unit

Digunakan untuk memanggil Windows, Messages, SysUtils, Classes, Graphics, munit klain yang Controls, Forms, Dialogs, StdCtrls; diperlukan

type TForm1 = class(TForm) Button1: TButton;

Class form

procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

Object yang ditempel pada form Prototype prosedur Untuk deklarasi variable,prosedur lokal Untuk deklarasi variable,prosedur public

var Form1: TForm1; implementation {$R *.DFM}

Untuk deklarasi variable

Informasi Pemrograman Delphi

19

procedure TForm1.Button1Click(Sender: TObject); begin Form1. end; end.


Tubuh dari prosedur

Informasi Pemrograman Delphi

20

MODUL V VARIABLE, CONSTANTA, TYPE RECORD


Pembuatan program kadang memerlukan suatu tempat

sementara untuk menampung suatu nilai untuk perhitungan selanjutnya atausebelum disimpan. Alat penampuny suatu nilai disebut dengan variable. Variable dapat bersifat global artinya dapat dipakai diseluruh program atau dapat bersifat lokal artinya variable tersebut hanya hidup dalam suatu prosedur atau fungsi saja, setelah keluar dari prosedur atau fungsi maka variable tersebut tidak dikenal. Setiap variable memiliki type data, assumsi penulis Mahasiswa telah mengenal berbagai type data pada mata kuliah sebelumnya, sehingga tidak akan dibahas disini. Untuk mendeklarasikan suatu variable, sintaknya adalah: Var nama_variable : type data; 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.

Informasi Pemrograman Delphi

21

Untuk menangani hal tersebut, maka angka tersebut diberi nama, dan nama tersebut bersifat tetap selama program berjalan. Nama seperti diatas disebut dengan konstanta. Jadi konstanta bernilai tetap selama program berjalan. Deklarasi konstanta adalah : Const nama_konstanta := nilai; Seperti variable konstanta dapat bersifat global dan bersefat lokal. 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 tipe = class type Deklarasi object End; Sedangkan deklarasi type record adalah:

Informasi Pemrograman Delphi

22

type nama_type = record deklarasi variable; end;

Informasi Pemrograman Delphi

23

Contoh deklarasi type type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Button1: TButton; private { Private declarations } public { Public declarations } end; Contoh deklarasi type record 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:

Informasi Pemrograman Delphi

24

Var Point: Tpoint; Form1:Tform1;

Informasi Pemrograman Delphi

25

MODUL VI STATEMENT DASAR SELECTION


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); Dari kumpulan pernyataan tersebut, pernyataan X:=2 akan dieksekusi pertama kemudian pernyataan yang ada dibawahnya dan seterusnya sampai pernyataan terakhir yaitu write(Z);.

Informasi Pemrograman Delphi

26

Pernyataan Percabangan dalam suatu program tidak hanya terdapat tetapi pernyataan loncat pada sequensial saja tetapi kadang kala ada pernyataan yang tidak mengeksekusi pernyataan berikutnya pernyataan yang ada pada baris tertentu sesuai dengan kondisi saat itu. Pernyataan yang memungkinkan pelompatan eksekusi disebut pernyataan percabangan. Ada beberapa pernyataan percabangan, diantaranya adalah: pernyataan IF pernyataan Case

Pernyataan IF Pernyataan IF digunakan untuk mencabang urutan eksekusi sesuai kondisi yang ada. Ada beberapa macam pernyataan IF, yaitu: IFThen. 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 :

Informasi Pemrograman Delphi

27

If x>90 then Begin Hasil := (x+5)*y; Y 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 := y-10;

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:

If x > 90 then

Informasi Pemrograman Delphi

28

begin Hasil:=x + y 5; Y:=y-10; End Else begin Hasil:=x y + 5 Y := y-10; End; 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 Pernyataan benar2

Informasi Pemrograman Delphi

29

Else If kondisi then Pernyataan benar3 Else Pernyataan salah; Karena pernyataan If hanya menampung dua kemungkinan, jika ada N kemungkinan maka jumlah if adalah N-1. Pernyataan If tyangterakhir dapat disederhanakan dengan menggunakan pernyataan Case 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; end;

Informasi Pemrograman Delphi

30

Contoh

read (I); case I of 1..5: Caption := 'Low'; 6..9: Caption := 'High'; 0, 10..99: Caption := 'Out of range'; else Caption := ''; end;

Informasi Pemrograman Delphi

31

MODUL VII STETEMENT DASAR LOOP


penyataan perulangan adalah pernyataan yang memungkinkan suatu eksekusi yang berulang pada suatu pernyatan. Ada beberapa pernyataan perulangan adalah sebagai berikut: 1. Penyataan For 2. Pernyataan While 3. Pernyataan Repeat Pemrogram harus jeli memilih pernyataan perulangan ini, kapan harus menggunakan pernyataan For, kapan menggunakan pernyataan While dan kapan menggunakan pernyataan Repeat. Secara garis besar ada dua katagori pernyataan perulangan yaitu perulangan yang yang sudah tentu jumlah perungangannya dan perulangan yang keluar dari perulangan berdasarkan kondisi tertentu. Sehingga jumlah perulangannya tidak diketahui. Perulangan yang jumlah perulangannya sudah tentu adalah : FOR DO dan perulangan yang berdasarkan kondisi adalah While dan Repeat

FORDO

Sintaknya adalah : For Counter:=Awal to Akhir do Pernyataan yang diulang;

Informasi Pemrograman Delphi

32

Perulangan ini bersifat increment adrinya dimulai dari counter yang kecil sampai batas dimana batas akhir lebbih besar dari batas akhir-1. jika ingin melakukan perulangan menurun, maka sintaknya adalah: For Counter:= Awal DownTo Akhir do Pernyataan yang diulang; Dimana Counter adalah variable pencacah Awal adalah batas awal dan akhir adalah batas akhir perulangan, dengan mengetahui batas awal dan atas akhrnya maka jumlah perulangan adalah akhir-awal. Contoh: Hasil=0; For I:=1 to 10 do Hasil:=hasil+I; Program tersebut untuk menghitung

1+2+3+4+5+6+7+8+9+10 yang disimpan pada variable hasil.

While Do

Berbeda dengan For Do, jumlah perulangan pada while tidah diketahui. Eksekusi akan keluar dari perulanga jika suatu kondisi tidak terpenuhi. Jadi pernyataan While akan melakukan perulangan selama keadaan atau kondisi benar.

Informasi Pemrograman Delphi

33

Sintaknya adalah : While Kondisi Do Pernyataan yang diulang; Dengan sintak seperti itu, jumlah minimum perulangan adalah NOL. Pernyataan for jika dikonversi ke While menjadi : counter :=Awal; while counter <= Akhir do begin Pernyataan yang diulang; Counter:=Counter+1; end;

Contoh: Awal:=1; Counter:=Awal; While Counter<=Akhir do Begin Hasil:=Hasil+Awal; Counter:=Counter+1; End;

Repeat

Informasi Pemrograman Delphi

34

Pernyataan Repeat hampir sama dengan pernyataan While tetapi jumlah minimum perulangan adala SATU karena pengujian dalam pernyataan Repeat berada diakhir. Sintak pernyataan Repeat adalah :

Repeat Pernyataan yang diulang; Until kondisi; Perulangan akan terjadi selama kondisi salah.

Informasi Pemrograman Delphi

35

MODUL VIII BEKERJA DENGAN BANYAK FORM


Dalam pembuatan program form atau utama. sistem Untuk di dunia nyata atau

kebanyakan program terdiri dari banyak form sebagai unit dan dikoordinasikan menu File> Form, atau klik tool oleh membuat menambah form ke dalam aplikasi adalah dengan cara pilih

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. Pengaktifan form dapat dilakukan dengan perintah:
1. <nama

form>.show,

perintah

ini

digunakan

untuk

mengaktifkan form, dan hasilnya from yang aktif dapat didesible untuk kebali mengaktifkan form yang ada di belakangnya.
2. <nama

form>.showmodal,

perintah

ini

untuk

mengaktifkan form, dan hasilnya form yang aktif akan selalu on top. Sedangkan untuk menutup sebuah form untuk kembali ke form pemanggil dalat dilakukan dengan perintah: <nama form>.close.

Informasi Pemrograman Delphi

36

Contoh Berikut adalah form-form dalam sebuah project: Form Utama:

Form Penjumlahan

Form Perkalian

Form Pengurangan

Form Operasi string

Komponen dan properties yang diperlukan Form1 Component Properties Label1 Caption Label2 Label3 Label4 Label5 Label6 Button1 Edit1 Caption Caption Caption Caption Caption Name Caption Name Value Contoh Operasi dengan mengunakan banyak form Hasil penjumlahan Hasil Pengurangan Hasil Perkalian Total Hasil Operasi String LblHasil Total Edhjumlah

Informasi Pemrograman Delphi

37

Edit2 Edit3 Edit4 Form2 Component Label1 Label2 Bitbtn1 Bitbtn Form3 Component Label1 Label2 Bitbtn1 Bitbtn Form4 Component Label1 Label2 Bitbtn1 Bitbtn Form5

Name Name Name

EdhKurang EdhKali Edtotal

Properties Caption Caption Kind Kind

Value BilA BilB bkOK bkNo

Properties Caption Caption Kind Kind

Value BilA BilB bkOK bkNo

Properties Caption Caption Kind Kind

Value BilA BilB bkOK bkNo

Component Properties Radiogroup1 Caption Items

Value Olahraga Lari Catur Renang bkOK bkNo

Bitbtn1 Bitbtn

Kind Kind

Kode program untuk membuat aplikasi tersebut adalah:

Informasi Pemrograman Delphi

38

unit Unitutama; procedure TForm1.Exit1Click(Sender: TObject); begin close; end; procedure TForm1.Penjumlahan1Click(Sender: TObject); var bila,bilb : integer; begin form2 :=Tform2.create(self); Form2.showmodal; 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'; form2.free; end;

Informasi Pemrograman Delphi

39

procedure TForm1.Perkalian1Click(Sender: TObject); var bila,bilb : integer; begin form3 :=Tform3.create(self); Form3.showmodal; 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; procedure TForm1.Pengurangan1Click(Sender: TObject); var bila,bilb : integer; begin form4 :=Tform4.create(self); Form4.showmodal; if (form4.modalresult=mrok) then

Informasi Pemrograman Delphi

40

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; procedure TForm1.Button1Click(Sender: TObject); var jml,kurang,kali : integer; begin jml:=strtoint(edhjml.text); kurang:=strtoint(edhkurang.text); kali:=strtoint(edhkali.text); edtotal.Text := inttostr(jml+kurang+kali); end; procedure TForm1.OperasiString1Click(Sender: TObject); var str : string; begin form5 :=Tform5.create(self);

Informasi Pemrograman Delphi

41

Form5.showmodal; 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; end.

Informasi Pemrograman Delphi

42

MODUL IX PEMROGRAMAN DATA BASE ( BACK 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 bibahas sistem database dengan Back pemakai. delphi menyediakan pemrograman kedua-keduanya. pada bab ini akan tentang pemrograman End-nya, sedangkan pemrograman Front End akan dibahas pada bab selanjutnya. Pemrograman Back End 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:
1. Pilih Start> Programs> Borland Delphi 7 > Database

Desktop 2. Pada saat menjalankan Delphi pilih menu Tools> Database Desktop setelah memilih DataBase Desktop. Maka akan muncul jendela paradox seperti berikut:

langkah-langkah mebuat database adalah: 1. Membuat alias untuk tempat table di letakan.

yang harus dilakukan adalah : klik tombol New Database alias diisi dengan nama alias Drive type:pilih salah satu, misalnya standard
2

untuk paradox.

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. d. Item-item sebelah kanan jendela digunakan untuk membuat aturan dari atribut tersebut.
e. Setelah pengisian Atribut selesai, klik tombol Save as...

unruk menyimpan table tersebut.

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: 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. c. Jendela seperti dibawah ini akan muncul.

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.

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 data abse adalah pemrograman

File database (*.DB, *.DBF)

BDE (Borland Database Engine)

Program Anda

Dibutuhkan suatu mesin yang menjadi penghubung antara file database BDE. Dalam pemrograman Fornt End ini dibutuhkan dua katagori komponen untuk dapat membuat program database, yaitu:
7

dengan

program

yang

dibuat

Delphi.

Delphi

menyediakan mesin konverter tersebut yang dikenal dengan

1. Data Access yang terdiri dari; a. DataSource 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 Dasar-Dasar Pemrograman Data Base 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. 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 Table dapat dimanipulasi sesuai dengan kebutuhan user, seperti: 1. Menuju record pertama, dengan prosedur FIRST 2. Menuju record terakhir, dengan prosedur LAST 3. Menuju record berikutnya, dengan prosedur NEXT 4. Menuju record Sebelumnya, dengan prosedur PRIOR 5. Menguji apakah kursor berada pada awal record, dengan prosedur BOF
9

6. Menguji apakah kursor berada pada akhir record, dengan prosedur EOF 7. Menutup Tabel, dengan prosedur Close atau properties active Ttable diset False 8. Membuka Table, dengan prosedur Open atau properties active Ttable diset True 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. 13. 14. Menghapus record, dengan prosedur DELETE Mengedit Record, dengan prosedur EDIT Menyimpan record, dengan prosedur POST
10

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); 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;
11

Table.Fields[0].AsInteger:=100; Table.SetRangeEnd; Table.Fields[0].AsInteger:=2000; Table.ApplyRange; 6. CancelRange Perintah ini digunakan untuk membatalkan perintah ApplyRange.

Contoh Program Database Sederhana

Form Utama

12

Form tambah Data

Keterangan : Tnegara adalah Nama Ttable dengan : DatabaseName : DBDEmos TableName Tnegara Kode Programnya adalah: unit Unitdbs; interface uses
13

: Country.db

DSNegara adalah Nama DataSource dengan DataSet :

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, Grids, DBGrids, Db, DBTables; 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
14

uses Unittmb; {$R *.DFM} procedure TFormlatihdatabase.BtTambahClick(Sender: TObject); begin formtambahdata:=Tformtambahdata.create(self); with formtambahdata do begin ednama.text:=''; edibukota.text:=''; edbenua.text:=''; edluas.text:=''; edjumlah.text:=''; caption :='Menambah data'; activecontrol:=ednama; end; formtambahdata.showmodal; if (formtambahdata.modalresult=mrOK) then with TNegara,FormTambahData do begin append; fieldbyname('Name').asstring:=ednama.text; fieldbyname('capital').asstring:=edibukota.text;
15

fieldbyname('continent').asstring:=edbenua.text; fieldbyname('area').asstring:=edluas.text; fieldbyname('population').asstring:=edjumlah.text; post; end; formtambahdata.free; end; procedure TFormlatihdatabase.BtEditClick(Sender: TObject); begin formtambahdata:=Tformtambahdata.create(self); with TNegara,formtambahdata do begin ednama.text:=fieldbyname('Name').asstring; edibukota.text:=fieldbyname('capital').asstring; edbenua.text:=fieldbyname('continent').asstring; edluas.text:=fieldbyname('area').asstring; edjumlah.text:=fieldbyname('population').asstring; caption :='Mengedit data'; activecontrol:=ednama; end; formtambahdata.showmodal; if (formtambahdata.modalresult=mrOK) then with TNegara,FormTambahData do begin edit;
16

fieldbyname('Name').asstring:=ednama.text; 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; procedure TFormlatihdatabase.BtHapusClick(Sender: TObject); var s: array[0..255] of char; begin strPcopy(S,Format('Anda Yakin Negara %s dihapus??', [TNegara.fields[0].asstring])); if (application.messageBox(S,'Perhatian',MB_YESNO or MB_ICONQUESTION)=IDYES) then TNegara.delete; end; end.

17

MODUL XI STRUCTURED QUERY LANGUAGE (SQL)


SQL adalah bahasa yang digunakan untuk membuat dan memanipulasi beberapa tabel data yang saling berhubunga. Keunggulan SQl adalah memungkinkan Anda untuk memcari dan mengurutkan data tabel yang tidak memiliki index. Perintah dalam SQL sangat banyak, dan pada modul ini nhanya akan dibahas perintah yang seding digunakan. Untuk menggunakan SQL dalam pemrograman Delphi, digunakan komponen QUERY yang ada dalam katagori dataaccess. Perintah dalah SQL adalah: 1. SELECT Perintah ini digunakan untuk menampilkan data atau record berdasarkan criteria tertentu. Format penulisan perintah Select adalah: SELECT [DISTINCT] kolom FROM table [WHERE kondisi_pencarian] [ORDER BY Pengurutan] [GROUP BY Group_list] [HAVING Having_condition] Contoh: Select * from country Select Name,Capital from country where population>8000000 A. WHERE
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 Select * From Country where name like %a untuk menampilkan record yang namanya diakhiri 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.
19

2. INSERT 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

20

Perintah UPDATE digunakan untuk mengganti nilai field dari sebuah record. Syntak: UPDATE Table SET Field = data WHERE Field = Data Contoh: UPDATE Country SET Population = 23000000 WHERE NAME = INDONESIA

Query Berparameter

Untuk meningkatkan fleksibilitas, Delphi mempunyai query yang berparameter. Contoh: Select * From Country Where Name like :Nama Parameter nama pada perintah ini dapat diganti dengan string lain. Ada dua cara untuk mengisi parameter Nama. 1. dengan menggunakan Object Inspector. Pilih properties SQL pada komponen Query isi dengan perintah select seperti diatas. Kemudian isi properties params, isi properties NAME, VALUE, dan TYPE

21

2. dengan menggunakan method parambyname contoh: Query1.ParamByName (NAME).AsString:=C%;

Method Komponen Query

1. Close : digunakan untuk menutup query 2. Open : digunakan untuk mengeksekusi query 3. Prepare : digunakan untuk meningkatkan performan Query 4. SQL a. Add untuk menambah perintah SQL, seperti perintah select b. Clear untuk menghapus perintah yang telah ada

22

Contoh Program:

Kode program:

unit Unitsql1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, Grids, DBGrids, Db, DBTables;
23

type TForm1 = class(TForm) DataSource1: TDataSource; Query1: TQuery; DBGrid1: TDBGrid; Edit1: TEdit; Button1: TButton; BitBtn1: TBitBtn; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;

var Form1: TForm1;

implementation

24

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject); 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. Komponen-komponen Quick Report Untuk membuat report dibutuhkan komponen report, dalam modul ini akan mmakai quick report. Komponen-komponen yang ada dalam quick report adalah:
26

TQRLabel label. TQRDBText TQRExpr TQRSysData

teks statis biasanya digunakan untuk judul atau untuk menampilkan field dari database. untuk menampilkan expresi atau fungsi-fungsi unutk menampilkan informasi judul report, page number, date and time. TQRMemo text multiple lines. seperti TQRLabel, tetapi komponen ini dapat menerima

yang dibutuhkan.

TQRRichText TQRShape TQRImage TQRDBImage Contoh Report dari Tabel

untuk menampilkan teks berformat untuk menampilkan rectangles, circles and horizontal and vertical lines. untuk menampilkan image statis. untuk menampilkan image dari database.

Sebagai contoh, kita akan membuat aplikasi yang dapat mencetak semua data yang ada dalam tabel MHS. Desain tampilan aplikasi tampak sebagai berikut:

27

Sedangkan report dari aplikasi tampak sebagi berikut:

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
28

Properti Name Caption

Value Button1 Cetak Report

3. Selanjutnya adalah membuat report. Caranya dengan

mengklik menu FILE > NEW > APPLICATION > OTHER > REPORT
4. Berikutnya tambahkan beberapa komponen berikut ini

beserta propertiesnya. QUICKREPORT Properties Name Page Page Dataset 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 Name Bandtype Keterangan:
29

Value Quickreport2 Papersize A4 Orientation Portrait Form1.Table1

Value Qrband1 rbTitle

QRBAND jenis rbTITLE digunakan untuk meletakkan judul report. Jenis band ini terletak di bagian atas dari report. Properties Name Bandtype Frame Frame Frame Frame Color Keterangan: Jenis band ini digunakan untuk meletakkan judul kolom dari tabel data Properties Name Bandtype Frame Frame Frame Frame Keterangan: Band ini digunakan untuk meletakkan data Properties Name Bandtype Frame Frame Frame Frame Value QRBand4 rbSummary Drawbootom True Drawleft True Drawright True DrawTop True
30

Value QRBand2 rBColumnheader Drawbootom True Drawleft True Drawright True DrawTop True clRed

Value QRBand3 rbDetail Drawbootom True Drawleft True Drawright True 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 Name Bandtype Frame Frame Frame Frame 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 Name Caption Keterangan: Komponen di atas diletakkan di band TITLE. Sedangkan untuk QRLABEL2 s/d QRLABEL7 diletakkan pada band COLUMNHEADER
31

Value QRBand5 rbPagefooter Drawbootom True Drawleft True Drawright True DrawTop True

Value QRLabel1 DATA MAHASISWA

Properties Name Caption Properties Name Caption Properties Name Caption Properties Name Caption Properties Name Caption Properties Name Caption

Value QRLabel2 NO Value QRLabel3 NIM Value QRLabel4 NAMA MAHASISWA Value QRLabel5 TGL LAHIR Value QRLabel6 ALAMAT Value QRLabel7 ANGKATAN

Untuk QRLABEL8 dan QRLABEL9 diletakkan di band SUMMARY Properties Name Caption Properties Name Value QRLabel8 JUMLAH DATA Value QRLabel9
32

Caption

DICEAK PADA TANGGAL

dan QRLABEL10 diletakkan di band PAGEFOOTER Properties Name Caption Value QRLabel10 HALAMAN

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 datanya akan dicetak. Komponen QRDBTEXT1 s/d QRDBTEXT5 di bawah ini diletakkan di bagian band DETAIL. Properties Name Dataset DataField Properties Name Dataset DataField Properties Name Dataset DataField Value QRDBTEXT1 Form1.table1 NIM Value QRDBTEXT2 Form1.table1 NAMAMHS Value QRDBTEXT3 Form1.table1 TGLLAHIR
33

Properties Name Dataset DataField Properties Name Dataset DataField QRSYSDATA Sedangkan komponen

Value QRDBTEXT4 Form1.table1 ALAMAT Value QRDBTEXT5 Form1.table1 ANGKATAN

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 Name Data Keterangan: Properti digunakan Properties Name Data Keterangan: qrsDETAILNO untuk berarti komponen nomor tersebut urut data menampilkan Value QRSysData1 qrsDetailNo

(diletakkan di band DETAIL di bawah kolom NO). Value QRSysData2 qrsDetailCount

34

Properti

qrsDETAILCOUNT untuk

berarti

komponen jumlah

tersebut data

digunakan

menampilkan

total

(diletakkan di band SUMMARY).

Properties Name Data Keterangan:

Value QRSysData3 qrsDate

Properti qrsDATE berarti komponen tersebut digunakan untuk menampilkan tanggal saat itu (diletakkan di band SUMMARY). Properties Name Data 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; Report dari Query Suatu report juga dapat menampilkan data dari hasil query. Sebagai contoh, kita akan membuat aplikasi pencarian data
35

Value QRSysData4 qrsPageNumber

mahasiswa

(menggunakan

tabel

MHS).

Setelah

proses

pencarian, data hasil pencarian akan ditampilkan ke report untuk dicetak. Tampilannya adalah sebagai berikut:

Sedangkan tampilan hasil reportnya sebagai berikut:

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 Name Value Quickreport2
36

Page Page Dataset QRBAND Properties Name Bandtype Properties Name Bandtype Frame Frame Frame Frame Color

Papersize A4 Orientation Portrait Form1.Query1

Value Qrband1 rbTitle Value QRBand2 rBColumnheader Drawbootom True Drawleft True Drawright True DrawTop True clRed

Properties Name Bandtype Frame Frame Frame Frame

Value QRBand3 rbDetail Drawbootom True Drawleft True Drawright True DrawTop True

Properties Name Bandtype Frame Frame Frame Frame

Value QRBand4 rbSummary Drawbootom True Drawleft True Drawright True DrawTop True
37

Properties Name Bandtype Frame Frame Frame Frame QRLABEL

Value QRBand5 rbPagefooter Drawbootom True Drawleft True Drawright True DrawTop True

Komponen QRLABEL digunakan untuk menuliskan teks pada report. Properties Name Caption Properties Name Caption Properties Name Caption Properties Name Caption Properties Name Caption Properties Value QRLabel1 DATA MAHASISWA Value QRLabel2 NO Value QRLabel3 NIM Value QRLabel4 NAMA MAHASISWA Value QRLabel5 TGL LAHIR Value
38

Name Caption Properties Name Caption

QRLabel6 ALAMAT Value QRLabel7 ANGKATAN

Untuk QRLABEL8 dan QRLABEL9 diletakkan di band SUMMARY Properties Name Caption Properties Name Caption Value QRLabel8 JUMLAH DATA Value QRLabel9 DICEAK PADA TANGGAL

dan QRLABEL10 diletakkan di band PAGEFOOTER Properties Name Caption QRDBTEXT Komponen QRDBTEXT1 s/d QRDBTEXT5 di bawah ini diletakkan di bagian band DETAIL. Properties Name Dataset DataField Properties Name Value QRDBTEXT1 Form1.query1 NIM Value QRDBTEXT2
39

Value QRLabel10 HALAMAN

Dataset DataField Properties Name Dataset DataField Properties Name Dataset DataField Properties Name Dataset DataField QRSYSDATA Properties Name Data

Form1.query1 NAMAMHS Value QRDBTEXT3 Form1.query1 TGLLAHIR Value QRDBTEXT4 Form1.query1 ALAMAT Value QRDBTEXT5 Form1.query1 ANGKATAN

Value QRSysData1 qrsDetailNo

40

Properties Name Data

Value QRSysData2 qrsDetailCount

Properties Name Data Properties Name Data Setelah melakukan desain

Value QRSysData3 qrsDate Value QRSysData4 qrsPageNumber report, selanjutnya tambahkan

perintah berikut pada event ONCLICK BUTTON2 (CETAK DATA PENCARIAN) QuickReport2.Preview; Dan tambahkan pula perintah berikut pada event ONCLICK BUTTON1 (CARI DATA) procedure TForm1.Button1Click(Sender: TObject); var query : string; begin Query1.SQL.Clear; If Radiobutton1.Checked then query := 'SELECT * FROM MHS WHERE NIM = :katakunci' else If Radiobutton2.Checked then query := 'SELECT * FROM MHS WHERE NAMAMHS LIKE
41

:katakunci' else If Radiobutton3.Checked then query := 'SELECT * FROM MHS WHERE ANGKATAN = :katakunci' else If Radiobutton4.Checked then query := 'SELECT * FROM MHS WHERE ALAMAT LIKE :katakunci'; Query1.SQL.Add(Query); If Radiobutton2.Checked or Radiobutton4.Checked then Query1.ParamByName('katakunci').Value := '%'+Edit1.Text+'%' else If RadioButton3.Checked then Query1.ParamByName('katakunci').Value := StrtoInt(Edit1.Text) else Query1.ParamByName('katakunci').Value := Edit1.Text; Query1.Open; If Query1.RecordCount = 0 then MessageDlg('Data tidak ditemukan',mtinformation,[mbOK],0); end;

42

Latihan Satu

Source Program .pas 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} procedure TFormsatu.LebartambahClick(Sender: TObject); begin formsatu.Width :=formsatu.Width +20; end; procedure TFormsatu.LebarkurangClick(Sender: TObject); begin
44

formsatu.Width :=formsatu.Width - 20; end; procedure TFormsatu.TinggitambahClick(Sender: TObject); begin formsatu.Height :=formsatu.Height +20; end; procedure TFormsatu.TinggikurangClick(Sender: TObject); begin formsatu.Height :=formsatu.Height -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; chkmin: TCheckBox; chkmax: TCheckBox; chkhelp: TCheckBox; rbnone: TRadioButton; rbsize: TRadioButton; rbdialog: TRadioButton; rbsingle: TRadioButton; rbsizetoolwin: TRadioButton; rbtoolwindow: TRadioButton;
46

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; implementation {$R *.DFM} procedure TFormdua.chksistemClick(Sender: TObject); var sem : Tbordericons; begin sem:=[]; if chksistem.Checked =true then sem := sem + [bisystemmenu];
47

if chkmin.Checked =true then sem := sem + [biminimize]; if chkmax.Checked =true then sem := sem + [bimaximize]; if chkhelp.Checked =true then sem := sem + [bihelp]; formdua.BorderIcons :=sem; end; procedure TFormdua.rbnoneClick(Sender: TObject); begin formdua.BorderStyle :=bsnone; end; procedure TFormdua.rbsizeClick(Sender: TObject); begin formdua.BorderStyle :=bssizeable; end; procedure TFormdua.rbdialogClick(Sender: TObject); begin formdua.BorderStyle :=bsdialog; end; procedure TFormdua.rbsingleClick(Sender: TObject); begin
48

formdua.BorderStyle :=bssingle; end; procedure TFormdua.rbsizetoolwinClick(Sender: TObject); begin formdua.BorderStyle :=bssizetoolwin; end; procedure TFormdua.rbtoolwindowClick(Sender: TObject); begin formdua.BorderStyle :=bstoolwindow; end; end. Latihan Tiga

49

Source Program

unit Unittiga; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; 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);
50

procedure rbfitnesClick(Sender: TObject); procedure rbcaturClick(Sender: TObject); procedure btnulangiClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.btnkeluarClick(Sender: TObject); begin close; end; procedure TForm1.rbrenagClick(Sender: TObject); begin lbrenang.Caption :='Baik untuk mempertinggi badan'

51

end; procedure TForm1.rbfitnesClick(Sender: TObject); begin lbfitness.Caption :='Baik untuk memperbesar otot' end; procedure TForm1.rbcaturClick(Sender: TObject); begin lbcatur.Caption :='Baik untuk mengasah Otak' end; procedure TForm1.btnulangiClick(Sender: TObject); begin rbrenag.Checked :=false; rbfitnes.Checked :=false; rbcatur.Checked :=false; lbrenang.Caption :=''; lbfitness.Caption :=''; lbcatur.Caption :=''; end;

52

end. Latihan Empat

Source Program

unit Unitempat; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
53

Buttons, StdCtrls; type TFormempat = class(TForm) Label1: TLabel; lbcontoh: TLabel; 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;
54

var Formempat: TFormempat; implementation {$R *.DFM} procedure TFormempat.bbcloseClick(Sender: TObject); begin close; end; procedure TFormempat.btnulangiClick(Sender: TObject); begin lbcontoh.Caption :=''; edinput.Text :=''; rbtebal.Checked :=false; rbmiring.Checked :=false; rbgarisbawah.Checked :=false; lbcontoh.Font.Style :=[]; edinput.SetFocus ; end; procedure TFormempat.btnprosesClick(Sender: TObject); begin
55

lbcontoh.Caption :=edinput.Text ; edinput.Text :=''; end; 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.

56

Latihan Lima

Source Program

unit Unitlima; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, Buttons, ExtCtrls, Spin;
57

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; chkcorettengah: TCheckBox;
58

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; implementation
59

{$R *.DFM} procedure TFormlima.rbmaroonClick(Sender: TObject); begin lbcontoh.Font.Color :=clmaroon; end; procedure TFormlima.rbhijauClick(Sender: TObject); begin lbcontoh.Font.Color :=clgreen; end; procedure TFormlima.rbnaviClick(Sender: TObject); begin lbcontoh.Font.Color :=clnavy; end; procedure TFormlima.rbkuningClick(Sender: TObject); begin lbcontoh.Font.Color :=clyellow; end; procedure TFormlima.rbmerahClick(Sender: TObject); begin lbcontoh.Font.Color :=clred;
60

end; procedure TFormlima.rb12Click(Sender: TObject); begin lbcontoh.Font.Size :=12; edukuran.Text :='12'; end; procedure TFormlima.rb14Click(Sender: TObject); begin lbcontoh.Font.Size :=14; edukuran.Text :='14'; end; procedure TFormlima.btntambahClick(Sender: TObject); begin lbcontoh.Font.Size :=lbcontoh.Font.Size + 1; if lbcontoh.Font.Size=12 then begin rb12.Checked :=true; edukuran.Text :='12'; end else if lbcontoh.Font.Size=14 then begin rb14.Checked :=true;
61

edukuran.Text :='14'; end else begin rb12.Checked :=false; rb14.Checked :=false; edukuran.Text :=inttostr(lbcontoh.Font.size); end ; end; procedure TFormlima.btnkurangClick(Sender: TObject); begin lbcontoh.Font.Size:=lbcontoh.Font.Size - 1; if lbcontoh.Font.Size=12 then begin rb12.Checked :=true; edukuran.Text :='12'; end else if lbcontoh.Font.Size=14 then begin rb14.Checked :=true; edukuran.Text :='14'; end else begin
62

rb12.Checked :=false; rb14.Checked :=false; edukuran.Text :=inttostr(lbcontoh.Font.size); end ; end;

procedure TFormlima.btnefekClick(Sender: TObject); var fs : Tfontstyles; begin 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 fs:=fs+[fsstrikeout]; lbcontoh.Font.Style :=fs; end; procedure TFormlima.bbcloseClick(Sender: TObject); begin
63

close; end; procedure TFormlima.btnulangiClick(Sender: TObject); begin rbmaroon.Checked :=false; rbhijau.Checked :=false; rbnavi.Checked :=false; rbkuning.Checked :=false; rbmerah.Checked :=false; rb12.Checked :=false; rb14.Checked :=false; edukuran.Text :=''; chktebal.Checked :=false; chkmiring.Checked :=false; chkgarisbawah.Checked :=false; chkcorettengah.Checked :=false; lbcontoh.Font.Style :=[]; lbcontoh.Font.Color :=clblack; lbcontoh.Font.Size :=8; end;

procedure TFormlima.edukuranEnter(Sender: TObject); begin


64

if (edukuran.Text <>'') and (edukuran.text<>'0') then lbcontoh.Font.Size :=strtoint(edukuran.text); if edukuran.Text='12' then rb12.checked:=true else if edukuran.Text ='14' then rb14.Checked :=true else begin rb12.Checked :=false; rb14.Checked :=false; end; end; procedure TFormlima.edukuranKeyPress(Sender: TObject; var Key: Char); begin if key =#13 then edukuranenter(sender); end; end. Latihan Enam

65

66

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;
67

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} procedure TFormenam.Button1Click(Sender: TObject); var i,bil1,bil2,bil3,bil4 : integer; pangkat,jumlah,kali,kurang : integer; bagi:real; begin
68

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 bagi:=bil1/bil2; edhasil.text:=floattostr(bagi);
69

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; procedure TFormenam.Button2Click(Sender: TObject); begin edbil1.Text :=''; edbil2.Text :=''; edbil3.Text :=''; edbil4.Text :=''; edhasil.Text :=''; rg.ItemIndex :=-1; edbil1.SetFocus; end; end. Latihan Tujuh
70

71

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;
72

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} procedure TForm1.BtIsiComboClick(Sender: TObject); begin combo.Items.Add('Spanyol'); combo.Items.Add('Inggris');
73

combo.Items.Add('Francis'); combo.Items.Add('Belanda'); combo.Items.Add('Jerman'); end; procedure TForm1.BtHapusComboClick(Sender: TObject); begin combo.Clear ; end; procedure TForm1.comboClick(Sender: TObject); begin list1.Items.Add(combo.text); end; procedure TForm1.Btisisatulist2Click(Sender: TObject); begin list2.Items.Add(list1.items.strings[list1.ItemIndex ]); list1.Items.Delete (list1.ItemIndex); end; procedure TForm1.BtIsiList2semuaClick(Sender: TObject); var i : integer; begin for i:=0 to list1.Items.Count -1 do list2.Items.Add(list1.items.strings[i]);
74

list1.Clear ; end; procedure TForm1.BtIsiList1SemuaClick(Sender: TObject); var i : integer; begin for i:=0 to list2.Items.Count -1 do list1.Items.Add(list2.items.strings[i]); list2.Clear ; end; procedure TForm1.BtIsisatuList1Click(Sender: TObject); begin list1.Items.Add(list2.items.strings[list2.ItemIndex ]); list2.Items.Delete (list2.ItemIndex); end; procedure TForm1.BtUlangiClick(Sender: TObject); begin list1.Clear ; list2.Clear ; combo.Clear ; end; end.
75

Latihan Delapan

Source Program

unit Unitdelapan; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Menus;
76

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;
77

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);
78

private { Private declarations } public { Public declarations } end; var Formdelapan: TFormdelapan; implementation {$R *.DFM} procedure TFormdelapan.Exit1Click(Sender: TObject); begin close; end; procedure TFormdelapan.Luas1Click(Sender: TObject); begin if (edpanjang.Text ='') or (edlebar.Text ='') then MessageDlg('Teks Panjang atau Teks Lebar kosong', mtInformation, [mbOk], 0) else

79

edluasempat.text:=inttostr(strtoint(edpanjang.text)*strtoint(edle bar.text)); end; 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; procedure TFormdelapan.Ulangi1Click(Sender: TObject); begin edjari.Text :=''; edluaslingkaran.Text :=''; edkelilinglingkaran.Text :='' ; edpanjang.Text :=''; edlebar.Text :=''; edluasempat.Text :=''; edkelilingempat.Text :=''; end;

80

procedure TFormdelapan.Shape1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if button = mbright then begin x:=formdelapan.Left +90; y:=formdelapan.Top +90; popup1.Popup(x,y); end; end; procedure TFormdelapan.Shape2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if button=mbright then begin x:=formdelapan.Left +260; y:=formdelapan.Top +90; popup2.Popup (x,y); end; end; procedure TFormdelapan.SegiTiga2Click(Sender: TObject); begin if edjari.Text ='' then
81

MessageDlg('Teks Jari-jari kosong', mtInformation, [mbOk], 0) else edluaslingkaran.Text :=floattostr(strtofloat(edjari.text)* strtofloat(edjari.text) * 3.14); end; procedure TFormdelapan.Keliling3Click(Sender: TObject); begin if edjari.Text ='' then MessageDlg('Teks Jari-jari kosong', mtInformation, [mbOk], 0) else edkelilinglingkaran.Text :=floattostr(strtofloat(edjari.text)* 2 * 3.14); end; procedure TFormdelapan.Keliling2Click(Sender: TObject); begin if edjari.Text ='' then MessageDlg('Teks Jari-jari kosong', mtInformation, [mbOk], 0) else edkelilinglingkaran.Text :=floattostr(strtofloat(edjari.text)* 2 * 3.14); end; procedure TFormdelapan.Luas2Click(Sender: TObject); begin
82

if edjari.Text ='' then MessageDlg('Teks Jari-jari kosong', mtInformation, [mbOk], 0) else edluaslingkaran.Text :=floattostr(strtofloat(edjari.text)* strtofloat(edjari.text) * 3.14); end; end. Latihan Sembilan

83

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);
84

procedure BtUlangiClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Formsembilan: TFormsembilan; implementation {$R *.DFM} procedure TFormsembilan.FormCreate(Sender: TObject); begin grid1.Cells [0,0]:=' grid1.Cells [1,0]:=' grid1.Cells [2,0]:=' grid1.Cells [3,0]:=' grid1.rowcount:=2; end; procedure TFormsembilan.BtProsesClick(Sender: TObject); var i,kol1,kol2,kol3,kol4 : integer;
85

';

i x 2 '; i x 3 '; i x i ';

grid1.Cells [4,0]:='Akumulasi';

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); edjmlkol2.Text :=inttostr(kol2); edjmlkol3.Text :=inttostr(kol3);
86

edjmlkol4.Text :=inttostr(kol4); end; procedure TFormsembilan.BtUlangiClick(Sender: TObject); begin edinput.Text :=''; grid1.RowCount :=2; grid1.Cells [0,1]:=''; grid1.Cells [1,1]:=''; grid1.Cells [2,1]:=''; grid1.Cells [3,1]:=''; grid1.Cells [4,1]:=''; edjmlkol1.text:=''; edjmlkol2.text:=''; edjmlkol3.text:=''; edjmlkol4.text:=''; edinput.SetFocus ; end; end. Latihan Sepuluh

87

88

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;
89

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 { Public declarations }
90

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} procedure isisup();
91

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'; arbrg[2].nama:='Lemari'; arbrg[2].harga:=40000; arbrg[3].kode:='B004';
92

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; end; procedure TFormSepuluh.bbcloseClick(Sender: TObject); begin
93

close; end; procedure TFormSepuluh.cmbkodebrgClick(Sender: TObject); begin ednamabrg.Text :=arbrg[cmbkodebrg.itemindex].nama; edharga.Text :=inttostr(arbrg[cmbkodebrg.itemindex].harga); end; procedure TFormSepuluh.cmbnosuplierClick(Sender: TObject); begin ednamasuplier.text:=arsup[cmbnosuplier.itemindex].nama; edalamat.Text := arsup[cmbnosuplier.itemindex].alamat; end; procedure TFormSepuluh.btprosesClick(Sender: TObject); begin grid1.rowcount:=I; grid1.cells[0,i-1]:=inttostr(i); grid1.cells[1,i-1]:=cmbkodebrg.text; grid1.cells[2,i-1]:=ednamabrg.text; grid1.cells[3,i-1]:=edharga.text; grid1.cells[4,i-1]:=edqty.text; grid1.cells[5,i1]:=inttostr(strtoint(edharga.text)*strtoint(edqty.text)); hasil:=hasil+strtoint(grid1.cells[5,i-1]);
94

i:=i+1; edtotal.Text :=inttostr(hasil); end; procedure TFormSepuluh.btulangiClick(Sender: TObject); begin ednofaktur.Text :=''; dttanggal.DateTime :=date; cmbkodebrg.Text :=''; ednamabrg.Text :=''; edharga.Text :=''; edqty.Text :=''; cmbnosuplier.Text :=''; ednamasuplier.Text :=''; edalamat.Text :=''; grid1.RowCount :=1; grid1.Cells[0,0]:=''; grid1.Cells[1,0]:=''; grid1.Cells[2,0]:=''; grid1.Cells[3,0]:=''; grid1.Cells[4,0]:=''; grid1.Cells[5,0]:=''; edtotal.Text :=''; ednofaktur.SetFocus ; end;

95

end.

Latihan Sebelas

Source Program

unit Unitsebelas; interface uses

96

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; edN: TEdit; Label3: TLabel; EdR: TEdit; Label4: TLabel; EdDasar: TEdit;
97

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} function pangkat(bd : integer; bp : integer):integer; var i,hasil : integer; Begin hasil:=1; for i:= 1 to bp do
98

hasil := hasil * bd; pangkat :=hasil; end; function faktorial(N : integer):integer; var hasil,i : integer; begin hasil:=1; for i:=1 to n do hasil:=hasil*i; faktorial:=hasil; end; procedure TFormsebelas.BtProsesClick(Sender: TObject); begin if rbpermutasi.Checked =true then edhasil.text:=floattostr(faktorial(strtoint(edN.text))/faktorial((s trtoint(edN.text)-strtoint(edR.text)))) else if rbCombinasi.Checked =true then edhasil.Text :=floattostr(faktorial(strtoint(edN.text))/ (faktorial(strtoint(edR.text))*faktorial((strtoint(edN.text)strtoint(edR.text))))) else if rbpangkat.Checked =true then

99

edhasil.Text :=inttostr(pangkat(strtoint(eddasar.text),strtoint(edpangkat.text ))); end; procedure TFormsebelas.BtUlangiClick(Sender: TObject); begin edN.Text :=''; edR.Text :=''; Eddasar.text:=''; edPangkat.Text :=''; edHasil.Text :=''; rbpermutasi.Checked :=false; rbCombinasi.Checked :=false; rbpangkat.Checked :=false; edN.SetFocus ; end; end.

Latihan Dua Belas Form Data Modul

100

Form About

Form Transaksi

101

Source Program

unit DM; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, DBTables, DB;

102

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; 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;
103

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 { Private declarations } public { Public declarations } end; var DM1: TDM1; implementation uses CtrlForm; {$R *.DFM}

104

procedure TDM1.tblHoldingsCalcFields(DataSet: TDataSet); begin tblHoldingsPUR_COST.AsFloat := tblHoldingsPUR_PRICE.AsFloat * tblHoldingsSHARES.AsFloat; end; procedure TDM1.CalculateTotals(Sender: TObject; Field: TField); var flTotalCost, flTotalShares, flTotalValue, flDifference: Real; } strFormatSpec: string; { The Display Format specification } begin { Update the count of stock transactions } FmCtrlGrid.lPurchase.Caption := IntToStr( tblHoldings.RecordCount ); { See whether or not its necessary to total the holdings and (if so) do so and update the result displays; otherwise, clear the result displays. } if tblHoldings.recordCount = 0 then begin { Clear the result displays }
105

{ Holds total share cost } { Holds total share count } { Holds total share value } { Holds difference between cost and value

FmCtrlGrid.lTotalCost.Caption := ''; FmCtrlGrid.lTotalShares.Caption := ''; FmCtrlGrid.lDifference.Caption := ''; end else begin { let the user know something's going on } Screen.Cursor := crHourglass; { Initialize the holder variables } flTotalCost := 0.0; flTotalShares := 0.0; { 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 }
106

{ Calculate the current value of the shares (by multiplying the current holdings by the current share price) and the difference between the cost and the value. } flTotalValue := flTotalShares * tblMasterCUR_PRICE.AsFloat; flDifference := flTotalValue - flTotalCost; { Use the same format specification as that being used to display the Current Price field value so it can be used to display the results } strFormatSpec := tblMasterCUR_PRICE.DisplayFormat; { Update the result displays } FmCtrlGrid.lTotalCost.Caption := FormatFloat( strFormatSpec, flTotalCost ); FmCtrlGrid.lTotalShares.Caption := FormatFloat( strFormatSpec, flTotalValue ); FmCtrlGrid.lDifference.Caption := FormatFloat( strFormatSpec, flDifference ); { Update the Font Color of the Diference to indicate the quality of the investment } if flDifference > 0 then
107

FmCtrlGrid.lDifference.Font.Color := clGreen else FmCtrlGrid.lDifference.Font.Color := clRed; FmCtrlGrid.lDifference.update; { let the user know that we're finished } Screen.Cursor := crDefault; end; end;

procedure TDM1.tblHoldingsAfterPost(DataSet: TDataSet); var bmCurrent : TBookmark; { Holds the current position } begin with tblHoldings do begin bmCurrent := getBookmark; try CalculateTotals(nil, nil); { recalc totals } gotoBookmark(bmCurrent); finally; freeBookmark(bmCurrent); end; end; end;
108

{ save position }

{ restore position } { free memory }

procedure TDM1.tblHoldingsAfterOpen(DataSet: TDataSet); begin {Don't want this calculation to occur until both master & detail are open} dsMaster.OnDataChange := CalculateTotals; end; end. unit CtrlForm; 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;
109

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; 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);
110

procedure DBCtrlGrid1Enter(Sender: TObject); procedure About1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FmCtrlGrid: TFmCtrlGrid; implementation uses DM, About; {$R *.DFM} procedure TFmCtrlGrid.Button1Click(Sender: TObject); begin Close; end; procedure TFmCtrlGrid.FormShow(Sender: TObject); begin DM1.CalculateTotals(Sender, nil); end;
111

procedure TFmCtrlGrid.DBGrid1Enter(Sender: TObject); begin DBNavigator1.DataSource := DM1.DSMaster; end; procedure TFmCtrlGrid.DBCtrlGrid1Enter(Sender: TObject); begin DBNavigator1.DataSource := DM1.DSHoldings; end; procedure TFmCtrlGrid.About1Click(Sender: TObject); begin with TFMAboutBox.Create(nil) do try ShowModal; finally Free; end; end; end.

112

You might also like