modul delphi

196
INFORMASI PEMROGRAMAN DELPHI Informasi Pemrograman Delphi i

Upload: tino-chandra

Post on 25-Jun-2015

4.991 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: modul Delphi

INFORMASI PEMROGRAMAN DELPHI

Informasi Pemrograman Delphi i

Page 2: 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: 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: 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 :

Delphi meminta, Apa yang dilakukan pertama kali ? .dpr file memberikan

sbb :

Informasi Pemrograman Delphi

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

1

Page 5: modul Delphi

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: modul Delphi

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: modul Delphi

MODUL II

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

Informasi Pemrograman Delphi

Componen Palete

Form Design

Code Editor

Menu bar

Speed Toolbar

Object Inspector

4

Page 8: modul Delphi

digunakan, seperti : menyimpan 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: 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: 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: 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

Datasource : Digunakan untuk koneksi ke table yangtelah ditunjuk oleh

komponen tabel

Informasi Pemrograman Delphi 8

Page 12: modul Delphi

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

Sebelum diubah ukurannya. Setelah diubah ukurannya

Informasi Pemrograman Delphi 13

Page 17: modul Delphi

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

sebelum dirapi kan setelah dirapikan

Informasi Pemrograman Delphi 14

Page 18: 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 15

Page 19: 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

Object

Prosedur 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

16

Page 20: 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);

Application.Run;

Informasi Pemrograman Delphi

Nama Program

Bagian uses untuk memanggil unit1

Bagian utama

17

Page 21: modul Delphi

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

18

Page 22: modul Delphi

procedure TForm1.Button1Click(Sender: TObject);

begin

Form1.

end;

end.

Informasi Pemrograman Delphi

Tubuh dari prosedur

19

Page 23: 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.

Untuk menangani hal tersebut, maka angka tersebut diberi nama, dan nama

tersebut bersifat tetap selama program berjalan. Nama seperti diatas disebut

Informasi Pemrograman Delphi 20

Page 24: modul Delphi

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:

type

nama_type = record

deklarasi variable;

end;

Informasi Pemrograman Delphi 21

Page 25: 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 22

Page 26: modul Delphi

Var

Point: Tpoint;

Form1:Tform1;

Informasi Pemrograman Delphi 23

Page 27: 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 24

Page 28: 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 25

Page 29: 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:

Informasi Pemrograman Delphi 26

Page 30: modul Delphi

If x > 90 then

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

Informasi Pemrograman Delphi 27

Page 31: modul Delphi

Pernyataan benar2

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;

Informasi Pemrograman Delphi 28

Page 32: modul Delphi

end;

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 29

Page 33: 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 30

Page 34: 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

Informasi Pemrograman Delphi 31

Page 35: modul Delphi

pernyataan While akan melakukan perulangan selama keadaan atau kondisi

benar.

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;

Informasi Pemrograman Delphi 32

Page 36: modul Delphi

Repeat

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 33

Page 37: 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 34

Page 38: modul Delphi

Contoh

Berikut adalah form-form dalam sebuah project:

Form Utama:

Komponen dan properties yang diperlukan

Form1

Component Properties Value

Label1 Caption Contoh Operasi dengan

mengunakan banyak form

Label2 Caption Hasil penjumlahan

Label3 Caption Hasil Pengurangan

Label4 Caption Hasil Perkalian

Label5 Caption Total

Label6 Caption Hasil Operasi String

Informasi Pemrograman Delphi

Form Penjumlahan Form Perkalian

Form Pengurangan Form Operasi string

35

Page 39: modul Delphi

Name

LblHasil

Button1 Caption Total

Edit1 Name Edhjumlah

Edit2 Name EdhKurang

Edit3 Name EdhKali

Edit4 Name Edtotal

Form2

Component Properties Value

Label1 Caption BilA

Label2 Caption BilB

Bitbtn1 Kind bkOK

Bitbtn Kind bkNo

Form3

Component Properties Value

Label1 Caption BilA

Label2 Caption BilB

Bitbtn1 Kind bkOK

Bitbtn Kind bkNo

Form4

Component Properties Value

Label1 Caption BilA

Label2 Caption BilB

Bitbtn1 Kind bkOK

Bitbtn Kind bkNo

Informasi Pemrograman Delphi 36

Page 40: modul Delphi

Form5

Component Properties Value

Radiogroup1 Caption

Items

Olahraga

Lari

Catur

Renang

Bitbtn1 Kind bkOK

Bitbtn Kind bkNo

Kode program untuk membuat aplikasi tersebut adalah:

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

Informasi Pemrograman Delphi 37

Page 41: modul Delphi

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;

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

Informasi Pemrograman Delphi 38

Page 42: modul Delphi

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

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;

Informasi Pemrograman Delphi 39

Page 43: modul Delphi

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

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

Informasi Pemrograman Delphi 40

Page 44: modul Delphi

diri dari banjir';

end;

lbhasil.Caption:=str;

end

else

lbhasil.Caption:='';

form5.free;

end;

end.

Informasi Pemrograman Delphi 41

Page 45: 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 46: 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.

Item yang tidak usah diubah2

Page 47: modul Delphi

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.

c. Kolom key digunakan untuk atribut yang dijadikan kunci, caranya

tekan tombol space bar.

3

Page 48: modul Delphi

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.

4

Page 49: modul Delphi

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 50: 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 51: 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:

1. Data Access yang terdiri dari;

a. DataSource7

File database(*.DB, *.DBF)

BDE(Borland Database Engine)

Program Anda

Page 52: modul Delphi

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.

8

Page 53: modul Delphi

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

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

Page 54: modul Delphi

9. Mengakses Field:

Var s: string;

S:= Table.Fields[0].AsString;, untuk field yang tipe datanya string

Atau

S:= Table.FieldByName[‘Name’].AsString;

10. Mengisi Field

Table.Fields[0].asString:=’Gurame’;

Atau

Table.FieldByName[‘Nama’].AsString:=’Gurame’;

11. Mengisi Table

Mengisi tabel dengan record baru dapat dilakukan dengan dua cara:

1. dengan perintah Insert, menyisipkan record pada posisi record

aktif

2. dengan perintah Append, menambah record pada posisi akhir

record

12. Menghapus record, dengan prosedur DELETE

13. Mengedit Record, dengan prosedur EDIT

14. Menyimpan record, dengan prosedur POST

15. Mencari data

Mencari data atau record dalam tabel dapat dilakukan dengan perintah:

1. FindKey, mencari dengan record dengan key, yaitu menggunakan

index. Jikan tablel terindex berdasarkan nomor, anda dapat mencari

record dengan nomor ‘123’:

Table.FindKey(123);

10

Page 55: modul Delphi

2. FindNearest, hampir sama dengan FindKey, tetapi FindNearest

mencari record yang mirip.

Table.FindNearest([‘Agus’]), untuk mencari semua record yang

bernama Agus.

3. SetKey..GotoKey, hampir sama dengan findKey:

Table.SetKey;

Table.Fields[0].AsInteger:=123;

Table.GotoKey;

4. SetKey..GotoNearest, hampir sama dengan FindNearest

Table.SetKey;

Table.Fields[0].AsString:=’Agus’;

Table.GotoNearest;

5. ApplayRange

Pencarian dengan ApplyRange akan membatasi record yang

ditampilkan sesuai dengan criteria. Dengan perintah ini Anda harus

menentukan dahulu batasan record yang akan ditampilkan dengan

menggunakan SetRangeStart dan SetRangeEnd.

Table.SetRangeStart;

Table.Fields[0].AsInteger:=100;

Table.SetRangeEnd;

Table.Fields[0].AsInteger:=2000;

Table.ApplyRange;

6. CancelRange

Perintah ini digunakan untuk membatalkan perintah ApplyRange.

11

Page 56: modul Delphi

Contoh Program Database Sederhana

Form Utama

Form tambah Data

12

Page 57: modul Delphi

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

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

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

13

Page 58: modul Delphi

type

TFormlatihdatabase = class(TForm)

DSNegara: TDataSource;

TNegara: TTable;

DBGrid1: TDBGrid;

BtTambah: TButton;

BtHapus: TButton;

BtEdit: TButton;

BitBtn1: TBitBtn;

procedure BtTambahClick(Sender: TObject);

procedure BtEditClick(Sender: TObject);

procedure BtHapusClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Formlatihdatabase: TFormlatihdatabase;

implementation

uses Unittmb;

14

Page 59: modul Delphi

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

fieldbyname('continent').asstring:=edbenua.text;

fieldbyname('area').asstring:=edluas.text;

15

Page 60: modul Delphi

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;

fieldbyname('Name').asstring:=ednama.text;

16

Page 61: modul Delphi

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 62: 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 63: 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.

2. INSERT

19

Page 64: modul Delphi

Perintah ini digunakan untuk menambah data atau record pada table.

Syntak:

INSERT INTO Table ( Field-Field)

Values(Data)

Contoh:

INSERT INTO COUNTRY (Name, Capital, Continent, Area,

Population)

Values (“Indonesia”,”Jakarta”,”Asia”,”5200000,215000000)

Untuk mengexekusi perintah sql dalam delphi digunakan perintah

ExecSQL.

3. DELETE

Menghapus data dengan DELETE tidak berbeda jauh dengan perintah

INSERT.

Syntak:

DELETE FROM Table WHERE Field = Data

Contoh:

DELETE FROM Country WHERE Name = ‘INDONESIA’

4. UPDATE

Perintah UPDATE digunakan untuk mengganti nilai field dari sebuah

record.

Syntak:

UPDATE Table SET Field = data WHERE Field = Data

20

Page 65: modul Delphi

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

2. dengan menggunakan method parambyname

contoh:

21

Page 66: modul Delphi

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 67: 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 68: 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 69: 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 70: 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:

TQRLabel teks statis biasanya digunakan untuk judul atau label.

TQRDBText untuk menampilkan field dari database.

TQRExpr untuk menampilkan expresi atau fungsi-fungsi yang

dibutuhkan.26

Page 71: modul Delphi

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:

Sedangkan report dari aplikasi tampak sebagi berikut:

27

Page 72: modul Delphi

Report tersebut akan muncul setelah tombol CETAK REPORT ditekan.

Untuk membuat program tersebut, langkah-langkah yang harus dilakukan

adalah :

1. Langkah pertama adalah membuat desain tampilan aplikasi.

2. Tambahkan komponen button dan ubah propertiesnya sebagai berikut

Properti Value

Name Button1

Caption Cetak Report

3. Selanjutnya adalah membuat report. Caranya dengan mengklik menu

FILE > NEW > APPLICATION > OTHER > REPORT

4. Berikutnya tambahkan beberapa komponen berikut ini beserta

propertiesnya.

QUICKREPORT

28

Page 73: modul Delphi

Properties Value

Name Quickreport2

Page Papersize A4

Page Orientation Portrait

Dataset Form1.Table1

Keterangan:

Properties di atas mengatur report dengan ketentuan ukuran kertas

adalah A4 dan tegak. Sedangkan data yang akan dicetak diambil dari

tabel MHS (dalam hal ini mengacu pada komponen TABLE1 pada FORM1)

QRBAND

Properties Value

Name Qrband1

Bandtype rbTitle

Keterangan:

QRBAND jenis rbTITLE digunakan untuk meletakkan judul report. Jenis

band ini terletak di bagian atas dari report.

Properties Value

Name QRBand2

Bandtype rBColumnheader

Frame Drawbootom True

Frame Drawleft True

Frame Drawright True

29

Page 74: modul Delphi

Frame DrawTop True

Color clRed

Keterangan:

Jenis band ini digunakan untuk meletakkan judul kolom dari tabel data

Properties Value

Name QRBand3

Bandtype rbDetail

Frame Drawbootom True

Frame Drawleft True

Frame Drawright True

Frame DrawTop True

Keterangan:

Band ini digunakan untuk meletakkan data

Properties Value

Name QRBand4

Bandtype rbSummary

Frame Drawbootom True

Frame Drawleft True

Frame Drawright True

Frame DrawTop True

30

Page 75: 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 Value

Name QRBand5

Bandtype rbPagefooter

Frame Drawbootom True

Frame Drawleft True

Frame Drawright True

Frame 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 Value

Name QRLabel1

Caption DATA MAHASISWA

Keterangan:

31

Page 76: modul Delphi

Komponen di atas diletakkan di band TITLE. Sedangkan untuk QRLABEL2

s/d QRLABEL7 diletakkan pada band COLUMNHEADER

Properties Value

Name QRLabel2

Caption NO

Properties Value

Name QRLabel3

Caption NIM

Properties Value

Name QRLabel4

Caption NAMA MAHASISWA

Properties Value

Name QRLabel5

Caption TGL LAHIR

Properties Value

Name QRLabel6

Caption ALAMAT

Properties Value

Name QRLabel7

32

Page 77: modul Delphi

Caption ANGKATAN

Untuk QRLABEL8 dan QRLABEL9 diletakkan di band SUMMARY

Properties Value

Name QRLabel8

Caption JUMLAH DATA

Properties Value

Name QRLabel9

Caption DICEAK PADA TANGGAL

dan QRLABEL10 diletakkan di band PAGEFOOTER

Properties Value

Name QRLabel10

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

33

Page 78: modul Delphi

Properties Value

Name QRDBTEXT1

Dataset Form1.table1

DataField NIM

Properties Value

Name QRDBTEXT2

Dataset Form1.table1

DataField NAMAMHS

Properties Value

Name QRDBTEXT3

Dataset Form1.table1

DataField TGLLAHIR

Properties Value

Name QRDBTEXT4

Dataset Form1.table1

DataField ALAMAT

Properties Value

Name QRDBTEXT5

Dataset Form1.table1

DataField ANGKATAN

34

Page 79: modul Delphi

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 Value

Name QRSysData1

Data qrsDetailNo

Keterangan:

Properti qrsDETAILNO berarti komponen tersebut digunakan untuk

menampilkan nomor urut data (diletakkan di band DETAIL di bawah

kolom NO).

Properties Value

Name QRSysData2

Data qrsDetailCount

Keterangan:

Properti qrsDETAILCOUNT berarti komponen tersebut digunakan untuk

menampilkan jumlah total data (diletakkan di band SUMMARY).

Properties Value

Name QRSysData3

Data qrsDate

35

Page 80: modul Delphi

Keterangan:

Properti qrsDATE berarti komponen tersebut digunakan untuk

menampilkan tanggal saat itu (diletakkan di band SUMMARY).

Properties Value

Name QRSysData4

Data qrsPageNumber

Keterangan:

Properti qrsPAGENUMBER berarti komponen tersebut digunakan untuk

menampilkan nomor halaman (diletakkan di band PAGE FOOTER).

5. Kemudian tambahkan code berikut ini pada event ONCLICK tombol CETAK

REPORT (BUTTON1) yang ada pada FORM1

QuickReport2.Preview;

Report dari Query

Suatu report juga dapat menampilkan data dari hasil query. Sebagai contoh, kita

akan membuat aplikasi pencarian data mahasiswa (menggunakan tabel MHS).

Setelah proses pencarian, data hasil pencarian akan ditampilkan ke report untuk

dicetak. Tampilannya adalah sebagai berikut:

36

Page 81: modul Delphi

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 Value

Name Quickreport2

Page Papersize A4

Page Orientation Portrait

37

Page 82: modul Delphi

Dataset Form1.Query1

QRBAND

Properties Value

Name Qrband1

Bandtype rbTitle

Properties Value

Name QRBand2

Bandtype rBColumnheader

Frame Drawbootom True

Frame Drawleft True

Frame Drawright True

Frame DrawTop True

Color clRed

Properties Value

Name QRBand3

Bandtype rbDetail

Frame Drawbootom True

Frame Drawleft True

Frame Drawright True

Frame DrawTop True

38

Page 83: modul Delphi

Properties Value

Name QRBand4

Bandtype rbSummary

Frame Drawbootom True

Frame Drawleft True

Frame Drawright True

Frame DrawTop True

Properties Value

Name QRBand5

Bandtype rbPagefooter

Frame Drawbootom True

Frame Drawleft True

Frame Drawright True

Frame DrawTop True

QRLABEL

Komponen QRLABEL digunakan untuk menuliskan teks pada report.

Properties Value

Name QRLabel1

Caption DATA MAHASISWA

Properties Value

Name QRLabel2

39

Page 84: modul Delphi

Caption NO

Properties Value

Name QRLabel3

Caption NIM

Properties Value

Name QRLabel4

Caption NAMA MAHASISWA

Properties Value

Name QRLabel5

Caption TGL LAHIR

Properties Value

Name QRLabel6

Caption ALAMAT

Properties Value

Name QRLabel7

Caption ANGKATAN

Untuk QRLABEL8 dan QRLABEL9 diletakkan di band SUMMARY

Properties Value

Name QRLabel8

40

Page 85: modul Delphi

Caption JUMLAH DATA

Properties Value

Name QRLabel9

Caption DICEAK PADA TANGGAL

dan QRLABEL10 diletakkan di band PAGEFOOTER

Properties Value

Name QRLabel10

Caption HALAMAN

QRDBTEXT

Komponen QRDBTEXT1 s/d QRDBTEXT5 di bawah ini diletakkan di bagian band

DETAIL.

Properties Value

Name QRDBTEXT1

Dataset Form1.query1

DataField NIM

Properties Value

Name QRDBTEXT2

Dataset Form1.query1

DataField NAMAMHS

Properties Value

41

Page 86: modul Delphi

Name QRDBTEXT3

Dataset Form1.query1

DataField TGLLAHIR

Properties Value

Name QRDBTEXT4

Dataset Form1.query1

DataField ALAMAT

Properties Value

Name QRDBTEXT5

Dataset Form1.query1

DataField ANGKATAN

QRSYSDATA

Properties Value

Name QRSysData1

Data qrsDetailNo

42

Page 87: modul Delphi

Properties Value

Name QRSysData2

Data qrsDetailCount

Properties Value

Name QRSysData3

Data qrsDate

Properties Value

Name QRSysData4

Data 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

43

Page 88: modul Delphi

query := 'SELECT * FROM MHS WHERE NIM = :katakunci'

else If Radiobutton2.Checked then

query := 'SELECT * FROM MHS WHERE NAMAMHS LIKE

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

44

Page 89: 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;45

Page 90: 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);

46

Page 91: modul Delphi

begin

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

47

Page 92: 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;

48

Page 93: modul Delphi

chkmin: TCheckBox;

chkmax: TCheckBox;

chkhelp: TCheckBox;

rbnone: TRadioButton;

rbsize: TRadioButton;

rbdialog: TRadioButton;

rbsingle: TRadioButton;

rbsizetoolwin: TRadioButton;

rbtoolwindow: TRadioButton;

procedure chksistemClick(Sender: TObject);

procedure rbnoneClick(Sender: TObject);

procedure rbsizeClick(Sender: TObject);

procedure rbdialogClick(Sender: TObject);

procedure rbsingleClick(Sender: TObject);

procedure rbsizetoolwinClick(Sender: TObject);

procedure rbtoolwindowClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Formdua: TFormdua;

49

Page 94: modul Delphi

implementation

{$R *.DFM}

procedure TFormdua.chksistemClick(Sender: TObject);

var sem : Tbordericons;

begin

sem:=[];

if chksistem.Checked =true then

sem := sem + [bisystemmenu];

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

50

Page 95: modul Delphi

begin

formdua.BorderStyle :=bssizeable;

end;

procedure TFormdua.rbdialogClick(Sender: TObject);

begin

formdua.BorderStyle :=bsdialog;

end;

procedure TFormdua.rbsingleClick(Sender: TObject);

begin

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.

51

Page 96: modul Delphi

Latihan Tiga

Source Program

unit Unittiga;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

52

Page 97: modul Delphi

type

TForm1 = class(TForm)

rbrenag: TRadioButton;

lbrenang: TLabel;

rbfitnes: TRadioButton;

lbfitness: TLabel;

rbcatur: TRadioButton;

lbcatur: TLabel;

btnulangi: TButton;

btnkeluar: TButton;

procedure btnkeluarClick(Sender: TObject);

procedure rbrenagClick(Sender: TObject);

procedure rbfitnesClick(Sender: TObject);

procedure rbcaturClick(Sender: TObject);

procedure btnulangiClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

53

Page 98: modul Delphi

{$R *.DFM}

procedure TForm1.btnkeluarClick(Sender: TObject);

begin

close;

end;

procedure TForm1.rbrenagClick(Sender: TObject);

begin

lbrenang.Caption :='Baik untuk mempertinggi badan'

end;

procedure TForm1.rbfitnesClick(Sender: TObject);

begin

lbfitness.Caption :='Baik untuk memperbesar otot'

end;

procedure TForm1.rbcaturClick(Sender: TObject);

begin

54

Page 99: modul Delphi

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;

end.

Latihan Empat

55

Page 100: modul Delphi

Source Program

unit Unitempat;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Buttons, StdCtrls;

type

TFormempat = class(TForm)

Label1: TLabel;

lbcontoh: TLabel;56

Page 101: modul Delphi

Label3: TLabel;

edinput: TEdit;

btnproses: TButton;

GroupBox1: TGroupBox;

btnefek: TButton;

rbtebal: TRadioButton;

rbmiring: TRadioButton;

rbgarisbawah: TRadioButton;

GroupBox2: TGroupBox;

btnulangi: TButton;

bbclose: TBitBtn;

procedure bbcloseClick(Sender: TObject);

procedure btnulangiClick(Sender: TObject);

procedure btnprosesClick(Sender: TObject);

procedure btnefekClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Formempat: TFormempat;

implementation

57

Page 102: modul Delphi

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

lbcontoh.Caption :=edinput.Text ;

edinput.Text :='';

end;

58

Page 103: modul Delphi

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.

59

Page 104: modul Delphi

Latihan Lima

Source Program

unit Unitlima;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ComCtrls, StdCtrls, Buttons, ExtCtrls, Spin;

60

Page 105: 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;

61

Page 106: modul Delphi

chkcorettengah: TCheckBox;

edukuran: TEdit;

procedure rbmaroonClick(Sender: TObject);

procedure rbhijauClick(Sender: TObject);

procedure rbnaviClick(Sender: TObject);

procedure rbkuningClick(Sender: TObject);

procedure rbmerahClick(Sender: TObject);

procedure rb12Click(Sender: TObject);

procedure rb14Click(Sender: TObject);

procedure btntambahClick(Sender: TObject);

procedure btnkurangClick(Sender: TObject);

procedure btnefekClick(Sender: TObject);

procedure bbcloseClick(Sender: TObject);

procedure btnulangiClick(Sender: TObject);

procedure edukuranEnter(Sender: TObject);

procedure edukuranKeyPress(Sender: TObject; var Key: Char);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Formlima: TFormlima;

62

Page 107: modul Delphi

implementation

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

63

Page 108: modul Delphi

procedure TFormlima.rbmerahClick(Sender: TObject);

begin

lbcontoh.Font.Color :=clred;

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

64

Page 109: modul Delphi

else

if lbcontoh.Font.Size=14 then

begin

rb14.Checked :=true;

edukuran.Text :='14';

end

else

begin

rb12.Checked :=false;

rb14.Checked :=false;

edukuran.Text :=inttostr(lbcontoh.Font.size);

end ;

end;

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

65

Page 110: modul Delphi

rb14.Checked :=true;

edukuran.Text :='14';

end

else

begin

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

66

Page 111: modul Delphi

fs:=fs+[fsstrikeout];

lbcontoh.Font.Style :=fs;

end;

procedure TFormlima.bbcloseClick(Sender: TObject);

begin

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;

67

Page 112: modul Delphi

lbcontoh.Font.Size :=8;

end;

procedure TFormlima.edukuranEnter(Sender: TObject);

begin

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

68

Page 113: modul Delphi

end;

end.

Latihan Enam

69

Page 114: 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;

70

Page 115: 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;

71

Page 116: modul Delphi

begin

bil1:=strtoint(edbil1.text);

bil2:=strtoint(edbil2.text);

bil3:=strtoint(edbil3.text);

bil4:=strtoint(edbil4.text);

if rg.ItemIndex =0 then

begin

jumlah:=bil1+bil2+bil3+bil4;

edhasil.text:=inttostr(jumlah);

end

else

if rg.ItemIndex =1 then

begin

kurang:=bil1-bil2-bil3-bil4;

edhasil.text:=inttostr(kurang);

end

else

if rg.ItemIndex =2 then

begin

kali:=bil1*bil2*bil3*bil4;

edhasil.text:=inttostr(kali);

end

else

if rg.ItemIndex =3 then

begin

72

Page 117: modul Delphi

bagi:=bil1/bil2;

edhasil.text:=floattostr(bagi);

end

else

if rg.ItemIndex =4 then

begin

pangkat:=1;

for i:=1 to bil2 do

pangkat:=pangkat*bil1;

edhasil.text:=inttostr(pangkat);

end;

end;

procedure TFormenam.Button2Click(Sender: TObject);

begin

edbil1.Text :='';

edbil2.Text :='';

edbil3.Text :='';

edbil4.Text :='';

edhasil.Text :='';

rg.ItemIndex :=-1;

edbil1.SetFocus;

end;

73

Page 118: modul Delphi

end.

Latihan Tujuh

74

Page 119: 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;75

Page 120: 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');

76

Page 121: modul Delphi

combo.Items.Add('Inggris');

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

77

Page 122: modul Delphi

for i:=0 to list1.Items.Count -1 do

list2.Items.Add(list1.items.strings[i]);

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 ;

78

Page 123: modul Delphi

end;

end.

79

Page 124: modul Delphi

Latihan Delapan

Source Program

unit Unitdelapan;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, ExtCtrls, Menus;

80

Page 125: 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;

81

Page 126: 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);

82

Page 127: 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

edluasempat.text:=inttostr(strtoint(edpanjang.text)*strtoint(edlebar.text));

end;

83

Page 128: modul Delphi

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;

procedure TFormdelapan.Shape1MouseDown(Sender: TObject;

Button: TMouseButton; Shift: TShiftState; X, Y: Integer);

84

Page 129: modul Delphi

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

MessageDlg('Teks Jari-jari kosong', mtInformation, [mbOk], 0)

else

85

Page 130: modul Delphi

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

if edjari.Text ='' then

MessageDlg('Teks Jari-jari kosong', mtInformation, [mbOk], 0)

else

86

Page 131: modul Delphi

edluaslingkaran.Text :=floattostr(strtofloat(edjari.text)* strtofloat(edjari.text) *

3.14);

end;

end.

Latihan Sembilan

87

Page 132: 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);88

Page 133: 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);

89

Page 134: modul Delphi

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

begin

grid1.rowcount:=strtoint(edinput.text)+1;

kol1:=0;

kol2:=0;

kol3:=0;

kol4:=0;

for i:=1 to grid1.RowCount - 1 do

begin

grid1.Cells [0,i] := inttostr(i);

grid1.Cells [1,i] := inttostr(i * 2);

grid1.Cells [2,i] := inttostr(i*3);

grid1.Cells [3,i] := inttostr(i*i);

if i=1 then

grid1.Cells [4,i] := inttostr(i)

else

grid1.Cells [4,i] := inttostr(strtoint(grid1.Cells [4,i-1])+strtoint(grid1.Cells

[0,i]));

kol1:=kol1 + strtoint(grid1.Cells [1,i]);

kol2:=kol2 + strtoint(grid1.Cells [2,i]);

kol3:=kol3 + strtoint(grid1.Cells [3,i]);

kol4:=kol4 + strtoint(grid1.Cells [4,i]);

end;

edjmlkol1.Text :=inttostr(kol1);

90

Page 135: modul Delphi

edjmlkol2.Text :=inttostr(kol2);

edjmlkol3.Text :=inttostr(kol3);

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

91

Page 136: modul Delphi

92

Page 137: 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;93

Page 138: 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

94

Page 139: modul Delphi

{ Public declarations }

end;

type

TSuplier = record

nosup:string;

nama:string;

alamat:string;

end;

type

Tbarang =record

kode:string;

nama : string ;

harga : integer;

end;

var

i,hasil:integer;

FormSepuluh: TFormSepuluh;

arsup : array[0..3] of Tsuplier;

arbrg : array[0..3] of Tbarang;

implementation

{$R *.DFM}

95

Page 140: modul Delphi

procedure isisup();

begin

arsup[0].nosup:='S001';

arsup[0].nama:='PT. Jaya Ningrat';

arsup[0].alamat:='Jl. P. Dinonogoro 76';

arsup[1].nosup:='S002';

arsup[1].nama:='PT. Ningrat Jaya';

arsup[1].alamat:='Jl. Purwakarta 7';

arsup[2].nosup:='S003';

arsup[2].nama:='PT. Cakti Abadi';

arsup[2].alamat:='Jl. Tambunan 276';

arsup[3].nosup:='S004';

arsup[3].nama:='PT. Citra Sari';

arsup[3].alamat:='Jl. Blambangan 67';

end;

procedure isibrg();

begin

arbrg[0].kode:='B001';

arbrg[0].nama:='Kursi';

arbrg[0].harga:=10000;

arbrg[1].kode:='B002';

arbrg[1].nama:='Meja';

arbrg[1].harga:=20000;

arbrg[2].kode:='B003';

96

Page 141: modul Delphi

arbrg[2].nama:='Lemari';

arbrg[2].harga:=40000;

arbrg[3].kode:='B004';

arbrg[3].nama:='Sofa';

arbrg[3].harga:=80000;

end;

procedure TFormSepuluh.FormCreate(Sender: TObject);

var j: integer;

begin

grid1.ColWidths [0]:=50;

grid1.ColWidths [1]:=70;

grid1.ColWidths [2]:=150;

grid1.rowcount:=1;

isisup;

isibrg;

dttanggal.DateTime:=date;

i:=1;

hasil:=0;

for j:=0 to 3 do

begin

cmbkodebrg.items.add(arbrg[j].kode);

cmbnosuplier.items.add(arsup[j].nosup);

end;

97

Page 142: modul Delphi

end;

procedure TFormSepuluh.bbcloseClick(Sender: TObject);

begin

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;

98

Page 143: modul Delphi

grid1.cells[3,i-1]:=edharga.text;

grid1.cells[4,i-1]:=edqty.text;

grid1.cells[5,i-1]:=inttostr(strtoint(edharga.text)*strtoint(edqty.text));

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

i:=i+1;

edtotal.Text :=inttostr(hasil);

end;

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

99

Page 144: modul Delphi

grid1.Cells[5,0]:='';

edtotal.Text :='';

ednofaktur.SetFocus ;

end;

end.

Latihan Sebelas

Source Program

100

Page 145: modul Delphi

unit Unitsebelas;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Buttons, ExtCtrls;

type

TFormsebelas = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

Panel3: TPanel;

GroupBox1: TGroupBox;

BtProses: TButton;

BtUlangi: TButton;

bbclose: TBitBtn;

GroupBox2: TGroupBox;

GroupBox3: TGroupBox;

Label1: TLabel;

EdHasil: TEdit;

RbPermutasi: TRadioButton;

RBCombinasi: TRadioButton;

RBPangkat: TRadioButton;

Label2: TLabel;

101

Page 146: modul Delphi

edN: TEdit;

Label3: TLabel;

EdR: TEdit;

Label4: TLabel;

EdDasar: TEdit;

Label5: TLabel;

EdPangkat: TEdit;

procedure BtProsesClick(Sender: TObject);

procedure BtUlangiClick(Sender: TObject);

private

{ Private declarations }

public

{function pangkat(bd : integer; bp : integer):integer;

function faktorial(N : integer):integer; }

{ Public declarations }

end;

var

Formsebelas: TFormsebelas;

implementation

{$R *.DFM}

102

Page 147: modul Delphi

function pangkat(bd : integer; bp : integer):integer;

var

i,hasil : integer;

Begin

hasil:=1;

for i:= 1 to bp do

hasil := hasil * bd;

pangkat :=hasil;

end;

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((strtoint(edN.text)-

strtoint(edR.text))))

else

103

Page 148: modul Delphi

if rbCombinasi.Checked =true then

edhasil.Text

:=floattostr(faktorial(strtoint(edN.text))/(faktorial(strtoint(edR.text))*faktorial((s

trtoint(edN.text)-strtoint(edR.text)))))

else

if rbpangkat.Checked =true then

edhasil.Text :=inttostr(pangkat(strtoint(eddasar.text),strtoint(edpangkat.text)));

end;

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.

104

Page 149: modul Delphi

Latihan Dua Belas

Form Data Modul

Form About

105

Page 150: modul Delphi

Form Transaksi

106

Page 151: modul Delphi

Source Program

unit DM;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

DBTables, DB;

type

TDM1 = class(TDataModule)

tblMaster: TTable;

tblMasterSYMBOL: TStringField;

tblMasterCO_NAME: TStringField;

tblMasterEXCHANGE: TStringField;

tblMasterIndustryLongName: TStringField;

tblMasterCUR_PRICE: TFloatField;

tblMasterYRL_HIGH: TFloatField;

tblMasterYRL_LOW: TFloatField;

tblMasterP_E_RATIO: TFloatField;

tblMasterPROJ_GRTH: TFloatField;

tblMasterINDUSTRY: TSmallintField;107

Page 152: modul Delphi

tblMasterPRICE_CHG: TSmallintField;

tblMasterRATING: TStringField;

tblMasterRANK: TFloatField;

tblMasterOUTLOOK: TSmallintField;

tblMasterRCMNDATION: TStringField;

tblMasterRISK: TStringField;

dsMaster: TDataSource;

tblIndustry: TTable;

tblIndustryIND_CODE: TSmallintField;

tblIndustryIND_NAME: TStringField;

tblIndustryLONG_NAME: TStringField;

dsIndustry: TDataSource;

tblHoldings: TTable;

tblHoldingsACCT_NBR: TFloatField;

tblHoldingsSHARES: TFloatField;

tblHoldingsPUR_PRICE: TFloatField;

tblHoldingsPUR_DATE: TDateField;

tblHoldingsSYMBOL: TStringField;

tblHoldingsPUR_COST: TCurrencyField;

dsHoldings: TDataSource;

procedure tblHoldingsCalcFields(DataSet: TDataSet);

procedure tblHoldingsAfterPost(DataSet: TDataSet);

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

procedure tblHoldingsAfterOpen(DataSet: TDataSet);

private

108

Page 153: modul Delphi

{ Private declarations }

public

{ Public declarations }

end;

var

DM1: TDM1;

implementation

uses CtrlForm;

{$R *.DFM}

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 }

109

Page 154: modul Delphi

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 }

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;

110

Page 155: modul Delphi

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

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

111

Page 156: modul Delphi

{ 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

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

112

Page 157: modul Delphi

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;

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;

113

Page 158: modul Delphi

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

DBCtrls, StdCtrls, ExtCtrls, Mask, DBTables, DB, Grids, DBGrids, Menus,

DBCGrids;

type

TFmCtrlGrid = class(TForm)

DBCtrlGrid1: TDBCtrlGrid;

DBGrid1: TDBGrid;

DBEdit1: TDBEdit;

DBEdit2: TDBEdit;

DBEdit3: TDBEdit;

DBEdit4: TDBEdit;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Label6: TLabel;

Label7: TLabel;

Button1: TButton;

Bevel1: TBevel;

Label8: TLabel;

114

Page 159: modul Delphi

Label9: TLabel;

Label10: TLabel;

Label11: TLabel;

lPurchase: TLabel;

lTotalCost: TLabel;

lTotalShares: TLabel;

lDifference: TLabel;

DBNavigator1: TDBNavigator;

MainMenu1: TMainMenu;

About1: TMenuItem;

procedure Button1Click(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure DBGrid1Enter(Sender: TObject);

procedure DBCtrlGrid1Enter(Sender: TObject);

procedure About1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FmCtrlGrid: TFmCtrlGrid;

implementation

115

Page 160: modul Delphi

uses DM, About;

{$R *.DFM}

procedure TFmCtrlGrid.Button1Click(Sender: TObject);

begin

Close;

end;

procedure TFmCtrlGrid.FormShow(Sender: TObject);

begin

DM1.CalculateTotals(Sender, nil);

end;

procedure TFmCtrlGrid.DBGrid1Enter(Sender: TObject);

begin

DBNavigator1.DataSource := DM1.DSMaster;

end;

procedure TFmCtrlGrid.DBCtrlGrid1Enter(Sender: TObject);

begin

DBNavigator1.DataSource := DM1.DSHoldings;

end;

116

Page 161: modul Delphi

procedure TFmCtrlGrid.About1Click(Sender: TObject);

begin

with TFMAboutBox.Create(nil) do

try

ShowModal;

finally

Free;

end;

end;

end.

117