40809025 Modul Delphi

157
INFORMASI PEMROGRAMAN DELPHI Informasi Pemrograman Delphi i

Transcript of 40809025 Modul Delphi

Page 1: 40809025 Modul Delphi

INFORMASI PEMROGRAMAN

DELPHI

Informasi Pemrograman Delphi i

Page 2: 40809025 Modul Delphi

Delphi adalah salah satu tool pemrograman visual yang

memberikan kemudahan kepada programmer untuk

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

Page 3: 40809025 Modul Delphi

Daftar isi

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

Informasi Pemrograman Delphi iii

Page 4: 40809025 Modul Delphi

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 normal, ANDA TIDAK DIHARAPKAN MENGUBAHNYA

Unit1.dfm File; Anda hanya bekerja pada Form1 secara Visual.

Ini yang dinamakan bahasa pemrograman Visual (Visual

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 :

Informasi Pemrograman Delphi

usesForms,Unit1 in ‘Unit1.pas’ {Form1};

1

Page 5: 40809025 Modul Delphi

Delphi meminta, Apa yang dilakukan pertama kali ? .dpr

file memberikan sbb :

FILE yang ada dalam Delphi:

1) *.dpr adalah file proyek yang dibuat berisi program kecil

untuk :

• mendefinisikan Unit yang ada dalam file proyek

• menginisialisasi data

• membangun form

• menjalankan aplikasi

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

beginApplication.Initialize; Application.CreateForm(Tform1, Form1);Application.Run;

end.

usesForms,Unit1 in ‘Unit1.pas’ {Form1};begin

Application.Initialize;Application.CreateForm(Tform1, Form1);Application.Run;

end.

2

Page 6: 40809025 Modul Delphi

MODUL II

Informasi Pemrograman Delphi

object Form1: Tform1Left = 200Top = 108Width = 696Height = 480Caption = ‘Form1’Font.Charset = DEFAULT_CHARSETFont.Color = clWindowTextFont.Height = -11Font.Name = ‘MS Sans Serif’Font.Style = []PixelsPerInch = 96TextHeight = 13object Button1: Tbutton

Left = 176Top = 116Width = 75Height = 25Caption = ‘Button1’TabOrder = 0

endend

3

Page 7: 40809025 Modul 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 :

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

Componen Palete

Form Design

Code Editor

Menu bar

Speed Toolbar

Object Inspector

4

Page 8: 40809025 Modul 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 5

Page 9: 40809025 Modul Delphi

Object Inspector

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 Object yang sedang aaktif

Class atau type data

Cetakan yang akan ditampilkan diform

Nama Object yang akan digunakan dalam pemrograman

6

Page 10: 40809025 Modul Delphi

Beberapa komponen yangsering digunakan dalam mata kuliah

ini:

Label: digunakan sebagai alat Output, biasanya tulisan-

tulisan 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 : digunakan sebagai pilihan dimana pilihan

tersebut dapat dipilih lebih dari satu pilihan, misalnya

hobby

Radiobutton : digunakan sebagai pilihan dimana pilihan

tersebut hanya dapat dipilih satu pilihan saja, misalnya

jenis kelamin

Informasi Pemrograman Delphi

Nama Object

Nama Class

Salah satu kejadian yang dapat dikenakan pada object tersebut

7

Page 11: 40809025 Modul 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 : hampir sama dengan button, tetapi bitbtn

dapat digunakan untuk keperluan khusus, seperti close,

ignore dan lain-lain

Main Menu : digunakan untuk membuat menu fulldown

PopUp Menu : digunakan untuk membuat popup menu

Image : digunakan untuk menamplikan gambar

Informasi Pemrograman Delphi 8

Page 12: 40809025 Modul 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 9

Page 13: 40809025 Modul 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 masing-

masing, tugas pemrogram adalah apakan nilai standard tersebut

akan diganti atau tidak.

Informasi Pemrograman Delphi 10

Page 14: 40809025 Modul Delphi

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

Informasi Pemrograman Delphi

Nilai standars dari komponen form

Komponent yang dipilih

11

Page 15: 40809025 Modul Delphi

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. Klik ganda tombol mouse kiri pada komponen yang

akan ditempelkan

b. Komponen tersebut akan tertempel pada form

ditengah-tengah form.

c. Pindahkan posisinya sesuai kebutuhan, dan ubahkan

propertiesnya sesuai kebutuhan juga.

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

Komponen yang sedang dipilih

12

Page 16: 40809025 Modul Delphi

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

Page 17: 40809025 Modul Delphi

Sebelum diubah ukurannya. Setelah diubah

ukurannya

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

Page 18: 40809025 Modul Delphi

sebelum dirapi kan setelah dirapikan

Informasi Pemrograman Delphi 15

Page 19: 40809025 Modul Delphi

MODUL IV

KONSEP EVENT DRIVEN

Pemrograman visual merupanan pemrograman yang

berorientasi pada Object. Setiap Object memiliki karakteristik

dan memiliki kelakuan (Method). Untuk mengolah atau

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

Page 20: 40809025 Modul Delphi

Dalam kode program yang tercipta adalah:

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

ObjectProsedur yang tercipta

Event yang akan ditanggapi

Nama class dari form yang aktive

Nama Object

Nama Event

Parameter

Bagian tubuh dari prosedur tempat pemrogram membuat kode program untuk menanggapi event

17

Page 21: 40809025 Modul Delphi

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,

Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Informasi Pemrograman Delphi

Nama Program

Bagian uses untuk memanggil unit1

Bagian utama

18

Page 22: 40809025 Modul Delphi

Application.Run;

end.

Sedangkan unit-unit dalam Delphi strukturnya adalah:

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Button1: TButton;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

Informasi Pemrograman Delphi

Nama Unit

Digunakan untuk memanggil munit klain yang diperlukan

Class form

Object yang ditempel pada form

Prototype prosedur

Untuk deklarasi variable,prosedur lokal

Untuk deklarasi variable,prosedur public

Untuk deklarasi variable

19

Page 23: 40809025 Modul Delphi

procedure TForm1.Button1Click(Sender: TObject);

begin

Form1.

end;

end.

Informasi Pemrograman Delphi

Tubuh dari prosedur

20

Page 24: 40809025 Modul Delphi

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

Page 25: 40809025 Modul Delphi

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

Page 26: 40809025 Modul Delphi

type

nama_type = record

deklarasi variable;

end;

Informasi Pemrograman Delphi 23

Page 27: 40809025 Modul Delphi

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

Page 28: 40809025 Modul Delphi

Var

Point: Tpoint;

Form1:Tform1;

Informasi Pemrograman Delphi 25

Page 29: 40809025 Modul Delphi

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

Page 30: 40809025 Modul Delphi

Pernyataan Percabangan

dalam suatu program tidak hanya terdapat pernyataan

sequensial saja tetapi kadang kala ada pernyataan yang tidak

mengeksekusi pernyataan berikutnya tetapi loncat pada

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:

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 :

Informasi Pemrograman Delphi 27

Page 31: 40809025 Modul Delphi

If x>90 then

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:

If x > 90 then

Informasi Pemrograman Delphi 28

Page 32: 40809025 Modul Delphi

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

Page 33: 40809025 Modul Delphi

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

Page 34: 40809025 Modul Delphi

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

Page 35: 40809025 Modul Delphi

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

FOR…DO

Sintaknya adalah :

For Counter:=Awal to Akhir do

Pernyataan yang diulang;

Informasi Pemrograman Delphi 32

Page 36: 40809025 Modul Delphi

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

Page 37: 40809025 Modul Delphi

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

Page 38: 40809025 Modul Delphi

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

Page 39: 40809025 Modul Delphi

MODUL VIII

BEKERJA DENGAN BANYAK FORM

Dalam pembuatan program atau sistem di dunia nyata

kebanyakan program terdiri dari banyak form sebagai unit dan

dikoordinasikan oleh form utama. Untuk membuat atau

menambah form ke dalam aplikasi adalah dengan cara pilih

menu

File> Form, atau klik tool

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 di-

desible 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

Page 40: 40809025 Modul Delphi

Contoh

Berikut adalah form-form dalam sebuah project:

Form Utama:

Komponen dan properties yang diperlukan

Form1

Component Properties ValueLabel1 Caption Contoh Operasi dengan

mengunakan banyak formLabel2 Caption Hasil penjumlahanLabel3 Caption Hasil PenguranganLabel4 Caption Hasil PerkalianLabel5 Caption TotalLabel6 Caption

Name

Hasil Operasi String

LblHasilButton1 Caption TotalEdit1 Name Edhjumlah

Informasi Pemrograman Delphi

Form Penjumlahan Form Perkalian

Form Pengurangan Form Operasi string

37

Page 41: 40809025 Modul Delphi

Edit2 Name EdhKurangEdit3 Name EdhKaliEdit4 Name Edtotal

Form2

Component Properties ValueLabel1 Caption BilALabel2 Caption BilBBitbtn1 Kind bkOKBitbtn Kind bkNo

Form3

Component Properties ValueLabel1 Caption BilALabel2 Caption BilBBitbtn1 Kind bkOKBitbtn Kind bkNo

Form4

Component Properties ValueLabel1 Caption BilALabel2 Caption BilBBitbtn1 Kind bkOKBitbtn Kind bkNo

Form5

Component Properties ValueRadiogroup1 Caption

Items

Olahraga

Lari

Catur

RenangBitbtn1 Kind bkOKBitbtn Kind bkNo

Kode program untuk membuat aplikasi tersebut adalah:

Informasi Pemrograman Delphi 38

Page 42: 40809025 Modul Delphi

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

Page 43: 40809025 Modul Delphi

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

Page 44: 40809025 Modul Delphi

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

Page 45: 40809025 Modul Delphi

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

Page 46: 40809025 Modul Delphi

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

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:

Page 47: 40809025 Modul Delphi

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

untuk paradox.

2

Page 48: 40809025 Modul Delphi

• 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

Page 49: 40809025 Modul Delphi

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

4

Page 50: 40809025 Modul Delphi

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.

5

Page 51: 40809025 Modul Delphi

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

Page 52: 40809025 Modul Delphi

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:

7

File database(*.DB, *.DBF)

BDE(Borland Database Engine)

Program Anda

Page 53: 40809025 Modul Delphi

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:

8

Page 54: 40809025 Modul Delphi

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

Page 55: 40809025 Modul Delphi

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. Menghapus record, dengan prosedur DELETE

13. Mengedit Record, dengan prosedur EDIT

14. Menyimpan record, dengan prosedur POST

10

Page 56: 40809025 Modul Delphi

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

Page 57: 40809025 Modul Delphi

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

Page 58: 40809025 Modul Delphi

Form tambah Data

Keterangan :

Tnegara adalah Nama Ttable dengan :

DatabaseName : DBDEmos

TableName : Country.db

DSNegara adalah Nama DataSource dengan DataSet :

Tnegara

Kode Programnya adalah:

unit Unitdbs;

interface

uses

13

Page 59: 40809025 Modul Delphi

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

Page 60: 40809025 Modul Delphi

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

Page 61: 40809025 Modul Delphi

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

Page 62: 40809025 Modul Delphi

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

Page 63: 40809025 Modul Delphi

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

Page 64: 40809025 Modul Delphi

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

Page 65: 40809025 Modul Delphi

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

Page 66: 40809025 Modul Delphi

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

Page 67: 40809025 Modul Delphi

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

Page 68: 40809025 Modul Delphi

Contoh Program:

Kode program:

unit Unitsql1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls,

Forms, Dialogs,

Buttons, StdCtrls, Grids, DBGrids, Db, DBTables;

23

Page 69: 40809025 Modul Delphi

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

Page 70: 40809025 Modul Delphi

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

begin

query1.close;

query1.SQL.Clear;

query1.sql.Add(edit1.text);

query1.open;

end;

end.

25

Page 71: 40809025 Modul Delphi

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

Page 72: 40809025 Modul Delphi

TQRLabel teks statis biasanya digunakan untuk judul atau

label.

TQRDBText untuk menampilkan field dari database.

TQRExpr untuk menampilkan expresi atau fungsi-fungsi

yang dibutuhkan.

TQRSysData unutk menampilkan informasi judul report, page

number, date and time. TQRMemo seperti

TQRLabel, tetapi komponen ini dapat menerima

text multiple lines.

TQRRichText untuk menampilkan teks berformat

TQRShape untuk menampilkan rectangles, circles and

horizontal and vertical lines.

TQRImage untuk menampilkan image statis.

TQRDBImage untuk menampilkan image dari database.

Contoh

Report dari Tabel

Sebagai contoh, kita akan membuat aplikasi yang dapat

mencetak semua data yang ada

dalam tabel MHS. Desain tampilan aplikasi tampak sebagai

berikut:

27

Page 73: 40809025 Modul Delphi

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

Page 74: 40809025 Modul Delphi

Properti ValueName Button1Caption 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 ValueName Quickreport2Page Papersize A4Page Orientation PortraitDataset 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 ValueName Qrband1Bandtype rbTitle

Keterangan:29

Page 75: 40809025 Modul Delphi

QRBAND jenis rbTITLE digunakan untuk meletakkan judul

report. Jenis band ini terletak di bagian atas dari report.

Properties ValueName QRBand2Bandtype rBColumnheaderFrame Drawbootom TrueFrame Drawleft TrueFrame Drawright TrueFrame DrawTop TrueColor clRed

Keterangan:

Jenis band ini digunakan untuk meletakkan judul kolom

dari tabel data

Properties ValueName QRBand3Bandtype rbDetailFrame Drawbootom TrueFrame Drawleft TrueFrame Drawright TrueFrame DrawTop True

Keterangan:

Band ini digunakan untuk meletakkan data

Properties ValueName QRBand4Bandtype rbSummaryFrame Drawbootom TrueFrame Drawleft TrueFrame Drawright TrueFrame DrawTop True

30

Page 76: 40809025 Modul Delphi

Keterangan:

Band ini digunakan untuk meletakkan beberapa hal terkait

dengan catatan data. Biasanya catatan berupa jumlah

total data atau waktu ketika report dicetak.

Properties ValueName QRBand5Bandtype rbPagefooterFrame Drawbootom TrueFrame Drawleft TrueFrame Drawright TrueFrame DrawTop True

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 ValueName QRLabel1Caption DATA MAHASISWA

Keterangan:

Komponen di atas diletakkan di band TITLE. Sedangkan

untuk QRLABEL2 s/d QRLABEL7 diletakkan pada band

COLUMNHEADER

31

Page 77: 40809025 Modul Delphi

Properties ValueName QRLabel2Caption NO

Properties ValueName QRLabel3Caption NIM

Properties ValueName QRLabel4Caption NAMA MAHASISWA

Properties ValueName QRLabel5Caption TGL LAHIR

Properties ValueName QRLabel6Caption ALAMAT

Properties ValueName QRLabel7Caption ANGKATAN

Untuk QRLABEL8 dan QRLABEL9 diletakkan di band

SUMMARY

Properties ValueName QRLabel8Caption JUMLAH DATA

Properties ValueName QRLabel9

32

Page 78: 40809025 Modul Delphi

Caption DICEAK PADA TANGGAL

dan QRLABEL10 diletakkan di band PAGEFOOTER

Properties ValueName QRLabel10Caption 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 ValueName QRDBTEXT1Dataset Form1.table1DataField NIM

Properties ValueName QRDBTEXT2Dataset Form1.table1DataField NAMAMHS

Properties ValueName QRDBTEXT3Dataset Form1.table1DataField TGLLAHIR

33

Page 79: 40809025 Modul Delphi

Properties ValueName QRDBTEXT4Dataset Form1.table1DataField ALAMAT

Properties ValueName QRDBTEXT5Dataset Form1.table1DataField ANGKATAN

QRSYSDATA

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 ValueName QRSysData1Data qrsDetailNo

Keterangan:

Properti qrsDETAILNO berarti komponen tersebut

digunakan untuk menampilkan nomor urut data

(diletakkan di band DETAIL di bawah kolom NO).

Properties ValueName QRSysData2Data qrsDetailCount

Keterangan:

34

Page 80: 40809025 Modul Delphi

Properti qrsDETAILCOUNT berarti komponen tersebut

digunakan untuk menampilkan jumlah total data

(diletakkan di band SUMMARY).

Properties ValueName QRSysData3Data qrsDate

Keterangan:

Properti qrsDATE berarti komponen tersebut digunakan

untuk menampilkan tanggal saat itu (diletakkan di band

SUMMARY).

Properties ValueName QRSysData4Data 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;

Report dari Query

Suatu report juga dapat menampilkan data dari hasil query.

Sebagai contoh, kita akan membuat aplikasi pencarian data

35

Page 81: 40809025 Modul Delphi

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 ValueName Quickreport2

36

Page 82: 40809025 Modul Delphi

Page Papersize A4Page Orientation PortraitDataset Form1.Query1

QRBAND

Properties ValueName Qrband1Bandtype rbTitle

Properties ValueName QRBand2Bandtype rBColumnheaderFrame Drawbootom TrueFrame Drawleft TrueFrame Drawright TrueFrame DrawTop TrueColor clRed

Properties ValueName QRBand3Bandtype rbDetailFrame Drawbootom TrueFrame Drawleft TrueFrame Drawright TrueFrame DrawTop True

Properties ValueName QRBand4Bandtype rbSummaryFrame Drawbootom TrueFrame Drawleft TrueFrame Drawright TrueFrame DrawTop True

37

Page 83: 40809025 Modul Delphi

Properties ValueName QRBand5Bandtype rbPagefooterFrame Drawbootom TrueFrame Drawleft TrueFrame Drawright TrueFrame DrawTop True

QRLABEL

Komponen QRLABEL digunakan untuk menuliskan teks pada

report.

Properties ValueName QRLabel1Caption DATA MAHASISWA

Properties ValueName QRLabel2Caption NO

Properties ValueName QRLabel3Caption NIM

Properties ValueName QRLabel4Caption NAMA MAHASISWA

Properties ValueName QRLabel5Caption TGL LAHIR

Properties Value

38

Page 84: 40809025 Modul Delphi

Name QRLabel6Caption ALAMAT

Properties ValueName QRLabel7Caption ANGKATAN

Untuk QRLABEL8 dan QRLABEL9 diletakkan di band

SUMMARY

Properties ValueName QRLabel8Caption JUMLAH DATA

Properties ValueName QRLabel9Caption DICEAK PADA TANGGAL

dan QRLABEL10 diletakkan di band PAGEFOOTER

Properties ValueName QRLabel10Caption HALAMAN

QRDBTEXT

Komponen QRDBTEXT1 s/d QRDBTEXT5 di bawah ini diletakkan

di bagian band DETAIL.

Properties ValueName QRDBTEXT1Dataset Form1.query1DataField NIM

Properties ValueName QRDBTEXT2

39

Page 85: 40809025 Modul Delphi

Dataset Form1.query1DataField NAMAMHS

Properties ValueName QRDBTEXT3Dataset Form1.query1DataField TGLLAHIR

Properties ValueName QRDBTEXT4Dataset Form1.query1DataField ALAMAT

Properties ValueName QRDBTEXT5Dataset Form1.query1DataField ANGKATAN

QRSYSDATA

Properties ValueName QRSysData1Data qrsDetailNo

40

Page 86: 40809025 Modul Delphi

Properties ValueName QRSysData2Data qrsDetailCount

Properties ValueName QRSysData3Data qrsDate

Properties ValueName QRSysData4Data qrsPageNumber

Setelah melakukan desain 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

Page 87: 40809025 Modul Delphi

: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

Page 88: 40809025 Modul Delphi

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

Page 89: 40809025 Modul Delphi

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

Page 90: 40809025 Modul Delphi

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

Page 91: 40809025 Modul Delphi

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

Page 92: 40809025 Modul Delphi

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

Page 93: 40809025 Modul Delphi

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

Page 94: 40809025 Modul Delphi

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

Page 95: 40809025 Modul Delphi

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

Page 96: 40809025 Modul Delphi

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

Page 97: 40809025 Modul Delphi

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

Page 98: 40809025 Modul Delphi

end.

Latihan Empat

Source Program

unit Unitempat;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls,

Forms, Dialogs,

53

Page 99: 40809025 Modul Delphi

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

Page 100: 40809025 Modul Delphi

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

Page 101: 40809025 Modul Delphi

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

Page 102: 40809025 Modul Delphi

Latihan Lima

Source Program

unit Unitlima;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls,

Forms, Dialogs,

ComCtrls, StdCtrls, Buttons, ExtCtrls, Spin;

57

Page 103: 40809025 Modul Delphi

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

Page 104: 40809025 Modul Delphi

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

Page 105: 40809025 Modul Delphi

{$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

Page 106: 40809025 Modul Delphi

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

Page 107: 40809025 Modul Delphi

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

Page 108: 40809025 Modul Delphi

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

Page 109: 40809025 Modul Delphi

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

Page 110: 40809025 Modul Delphi

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

Page 111: 40809025 Modul Delphi

66

Page 112: 40809025 Modul Delphi

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

Page 113: 40809025 Modul Delphi

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

Page 114: 40809025 Modul Delphi

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

Page 115: 40809025 Modul Delphi

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

Page 116: 40809025 Modul Delphi

71

Page 117: 40809025 Modul Delphi

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

Page 118: 40809025 Modul Delphi

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

Page 119: 40809025 Modul Delphi

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

Page 120: 40809025 Modul Delphi

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

Page 121: 40809025 Modul Delphi

Latihan Delapan

Source Program

unit Unitdelapan;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls,

Forms, Dialogs,

StdCtrls, ExtCtrls, Menus;

76

Page 122: 40809025 Modul Delphi

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

Page 123: 40809025 Modul Delphi

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

Page 124: 40809025 Modul Delphi

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

Page 125: 40809025 Modul Delphi

edluasempat.text:=inttostr(strtoint(edpanjang.text)*strtoint(edl

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

Page 126: 40809025 Modul Delphi

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

Page 127: 40809025 Modul Delphi

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

Page 128: 40809025 Modul Delphi

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

Page 129: 40809025 Modul Delphi

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

Page 130: 40809025 Modul Delphi

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]:=' i ';

grid1.Cells [1,0]:=' i x 2 ';

grid1.Cells [2,0]:=' i x 3 ';

grid1.Cells [3,0]:=' i x i ';

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

grid1.rowcount:=2;

end;

procedure TFormsembilan.BtProsesClick(Sender: TObject);

var i,kol1,kol2,kol3,kol4 : integer;

85

Page 131: 40809025 Modul Delphi

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

Page 132: 40809025 Modul Delphi

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

Page 133: 40809025 Modul Delphi

88

Page 134: 40809025 Modul Delphi

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

Page 135: 40809025 Modul Delphi

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

Page 136: 40809025 Modul Delphi

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

Page 137: 40809025 Modul Delphi

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

Page 138: 40809025 Modul Delphi

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

Page 139: 40809025 Modul Delphi

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,i-

1]:=inttostr(strtoint(edharga.text)*strtoint(edqty.text));

hasil:=hasil+strtoint(grid1.cells[5,i-1]);

94

Page 140: 40809025 Modul Delphi

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

Page 141: 40809025 Modul Delphi

end.

Latihan Sebelas

Source Program

unit Unitsebelas;

interface

uses

96

Page 142: 40809025 Modul Delphi

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

Page 143: 40809025 Modul Delphi

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

Page 144: 40809025 Modul Delphi

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

Page 145: 40809025 Modul Delphi

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

Page 146: 40809025 Modul Delphi

Form About

Form Transaksi

101

Page 147: 40809025 Modul Delphi

Source Program

unit DM;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls,

Forms, Dialogs,

DBTables, DB;

102

Page 148: 40809025 Modul Delphi

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

Page 149: 40809025 Modul Delphi

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

Page 150: 40809025 Modul Delphi

procedure TDM1.tblHoldingsCalcFields(DataSet: TDataSet);

begin

tblHoldingsPUR_COST.AsFloat :=

tblHoldingsPUR_PRICE.AsFloat * tblHoldingsSHARES.AsFloat;

end;

procedure TDM1.CalculateTotals(Sender: TObject; Field: TField);

var

flTotalCost, { Holds total share cost }

flTotalShares, { Holds total share count }

flTotalValue, { Holds total share value }

flDifference: Real; { Holds difference between cost and value

}

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

Page 151: 40809025 Modul Delphi

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

Page 152: 40809025 Modul Delphi

{ 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

Page 153: 40809025 Modul Delphi

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; { save position }

try

CalculateTotals(nil, nil); { recalc totals }

gotoBookmark(bmCurrent); { restore position }

finally;

freeBookmark(bmCurrent); { free memory }

end;

end;

end;

108

Page 154: 40809025 Modul Delphi

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

Page 155: 40809025 Modul Delphi

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

Page 156: 40809025 Modul Delphi

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

Page 157: 40809025 Modul Delphi

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