ide · web viewstart> programs> borland delphi 7 > database desktop pada saat menjalankan...
TRANSCRIPT
BAB ICARA 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 :
usesForms,Unit1 in ‘Unit1.pas’ {Form1};
Delphi meminta, Apa yang dilakukan pertama kali ? .dpr file memberikan
sbb :
beginApplication.Initialize; Application.CreateForm(Tform1, Form1);Application.Run;
end.
1
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
usesForms,Unit1 in ‘Unit1.pas’ {Form1};begin
Application.Initialize;Application.CreateForm(Tform1, Form1);Application.Run;
end.
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
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
2
BAB IIINTEGRATED
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 project, unit, menjalankan program,
3
Componen Palete
Form Design
Code Editor
Menu bar
Speed Toolbar
Object Inspector
Componen Palete
Form Design
Code Editor
Menu bar
Speed Toolbar
Object Inspector
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.
4
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:
5
Nama Object yang sedang aaktif
Class atau type data
Cetakan yang akan ditampilkan diform
Nama Object yang akan digunakan dalam pemrograman
Nama Object
Nama Class
Salah satu kejadian yang dapat dikenakan pada object tersebut
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
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
6
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
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.
7
BAB IIIMENDESAIN 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.
8
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
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.
9
Nilai standars dari komponen form
Komponent yang dipilih
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
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:
10
Komponen yang sedang dipilih
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
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
11
d. rata kanan
e. jarak antar komponen sama
f. tengah-tengan window
sebelum dirapikan setelah dirapikan
12
BAB IVKONSEP 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 :
13
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.
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’;
14
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
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;
end.
15
Nama Program
Bagian uses untuk memanggil unit1
Bagian utama
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}
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.
end;
end.
16
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
Tubuh dari prosedur
BAB VVARIABLE, 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
17
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;
18
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:
Var
Point: Tpoint;
Form1:Tform1;
19
BAB VISTATEMENT 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);.
20
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 IFPernyataan 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
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
21
Sintaknya adalah
If kondisi then
Pernyataan jika kondisi memenuhi
ElsePernyataan 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 begin
Hasil:=x + y –5;
Y:=y-10;
EndElse 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 :
22
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
ElseIf 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
23
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;
Contoh
read (I);case I of
1..5: Caption := 'Low';
6..9: Caption := 'High';
0, 10..99: Caption := 'Out of range';
else Caption := '';
end;
24
BAB VIISTETEMENT 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;
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:
25
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 doHasil:=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.
Sintaknya adalah :
While Kondisi Do
Pernyataan yang diulang;
Dengan sintak seperti itu, jumlah minimum perulangan adalah NOL.
Pernyataan for jika dikonversi ke While menjadi :
26
counter :=Awal;
while counter <= Akhir do
begin
Pernyataan yang diulang;
Counter:=Counter+1;
end;
Contoh:Awal:=1;
Counter:=Awal;
While Counter<=Akhir doBegin
Hasil:=Hasil+Awal;
Counter:=Counter+1;
End;
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.
27
BAB VIIIBEKERJA 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.
28
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
NameHasil Operasi StringLblHasil
Button1 Caption TotalEdit1 Name EdhjumlahEdit2 Name EdhKurangEdit3 Name EdhKaliEdit4 Name Edtotal
29
Form Penjumlahan Form Perkalian
Form Pengurangan Form Operasi string
Form2Component Properties Value
Label1 Caption BilALabel2 Caption BilBBitbtn1 Kind bkOKBitbtn Kind bkNo
Form3Component Properties Value
Label1 Caption BilALabel2 Caption BilBBitbtn1 Kind bkOKBitbtn Kind bkNo
Form4Component Properties Value
Label1 Caption BilALabel2 Caption BilBBitbtn1 Kind bkOKBitbtn Kind bkNo
Form5Component Properties Value
Radiogroup1 CaptionItems
OlahragaLariCatur Renang
Bitbtn1 Kind bkOKBitbtn 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
30
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;
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 begin with form4 do begin bila:=strtoint(edit1.text); bilb:=strtoint(edit2.text); end;
31
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); 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.
32
BAB IXPEMROGRAMAN 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:
33
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 diubah
Klik tombol OK
34
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.
d. Item-item sebelah kanan jendela digunakan untuk membuat aturan dari
atribut tersebut.
35
e. Setelah pengisian Atribut selesai, klik tombol Save as... unruk menyimpan
table tersebut.
langkah kerja diatas adalah untuk membuat struktur satu tabel, jika dalam database
tersebut lebih dari satu tabel, secara normalisasi tabel-tabel tersebut dapat direlasikan
dengan tabel yang lain untuk kepentingan t\integritas data. untuk dapat menmerelasikan
dua tabel, pada tabel anak (sisi N) harus ada kunci tamu sebagai atribut penghubung
dengan tabel induk (sisi 1). cara merelasikan dua tabel adalah:
1. buka struktur tabel anak dengan cara
a. Klik menu Tools, pilih Utility, pilih Restructure, maka tampil jendela:
b. Pada ComboBox Table Properties, pilih Referential Integrity, klik
tombol Define jika belum ada atau klik tombol Modify jika akan
mengedit relasi yang telah ada.
c. Jendela seperti dibawah ini akan muncul.
36
d. pilih kunci tamu pada table induk, kemudian klik tombol anak panah ->,
pilih table induk dan klik tombol anak panah <-.
e. Kilik tombol OK, untuk menyimpan relasi tersebut.
f. untuk mengisi atau mengedit data tabel, tampilan jendela table adalah
g. untuk menambah, mengedit atau mengapus data, tabel yangterbuka harus
dalam modus Edit, dengan cara tekan tombol F9.
37
BAB XPEMROGRAMAN DATA BASE
(FORNT END)
Delphi menyediakan dua cara untuk membuat program basis data. cara pertama adalah
cara konvensional, yaitu dengan menggunakan komponen TTable. cara ini ini biasanya
untuk pemrograman basis data pada komputer stand Alone. cara kedua dengan SQL
(Structured Query Language) dan biasanya digunakan untuk pemrograman klien/server.
SQL akan dibahas pada bab selanjutnya.
Hubungan file data base dengan Delphi dalam pemrograman data abse adalah
Dibutuhkan suatu mesin yang menjadi penghubung antara file database dengan program
yang dibuat Delphi. Delphi menyediakan mesin konverter tersebut yang dikenal dengan
BDE.
Dalam pemrograman Fornt End ini dibutuhkan dua katagori komponen untuk dapat
membuat program database, yaitu:
1. Data Access yang terdiri dari;
a. DataSource
38
File database(*.DB, *.DBF)
BDE(Borland Database Engine)
Program Anda
b. Table
c. Query
d. StoredProc
e. Database
f. DLL
2. Data Control yang terdiri dari :
a. DBGrid
b. DBNavigator
c. DBText
d. DBEdit
e. DBMemo
f. DBImage
g. DBListBox
h. DBComboBox
i. DLL
Dasar-Dasar Pemrograman Data Base
Untuk membuat aplikasi data base yang sederhana, yang perlu disiapkan adalah
komponen Ttable yang akan menghubungkan program Anda dengan file data base yang
ada di hard disk. Ada tiga properties yang penting dari Ttable yang perlu diisi, yaitu:
1. DataBaseName, menujuk tempat dimana file database disimpan, biasanya
menjunjuk alias dari path database tersebut.
2. TableName, berisi nama-nama table yang ada pada direktori yang ditunjuk.
3. Active, diisi true jika table tersebut ingin dibuka(active) dan diisi false jika teble
tersebut tetap tertutup (Close).
Setelah Ttable terhubung dengan database, telpelkan TdataSource, untuk
menghubungkan Ttable dengan komponen yang menjadi antarmuka database dengan
user. Properties yang harus diisi dalam TdataSource adalah DataSet, yaitu diisi dengan
39
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. 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
40
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);
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;
41
Table.ApplyRange;
6. CancelRange
Perintah ini digunakan untuk membatalkan perintah ApplyRange.
Contoh Program Database Sederhana
Form Utama
Form tambah Data
42
Keterangan :Tnegara adalah Nama Ttable dengan :
DatabaseName : DBDEmosTableName : 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;
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
43
{ Private declarations } public { Public declarations } end;
var Formlatihdatabase: TFormlatihdatabase;
implementation
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; fieldbyname('continent').asstring:=edbenua.text; fieldbyname('area').asstring:=edluas.text; fieldbyname('population').asstring:=edjumlah.text; post; end; formtambahdata.free;end;
44
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; 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.
45
BAB XISTRUCTURED 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
Klausa WHERE digunakan untuk memilih record yang akan ditampilkan
46
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
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)47
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
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
48
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
49
Contoh Program:
Kode program:
unit Unitsql1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, StdCtrls, Grids, DBGrids, Db, DBTables;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
Query1: TQuery;
50
DBGrid1: TDBGrid;
Edit1: TEdit;
Button1: TButton;
BitBtn1: TBitBtn;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
query1.close;
query1.SQL.Clear;
query1.sql.Add(edit1.text);
query1.open;
end;
end.
51
LATIHAN
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; 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;
52
implementation
{$R *.DFM}
procedure TFormsatu.LebartambahClick(Sender: TObject);beginformsatu.Width :=formsatu.Width +20;end;
procedure TFormsatu.LebarkurangClick(Sender: TObject);beginformsatu.Width :=formsatu.Width - 20;end;
procedure TFormsatu.TinggitambahClick(Sender: TObject);beginformsatu.Height :=formsatu.Height +20;end;
procedure TFormsatu.TinggikurangClick(Sender: TObject);beginformsatu.Height :=formsatu.Height -20;end;
end.
Latihan Dua
53
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; 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;
implementation54
{$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);beginformdua.BorderStyle :=bsnone;end;
procedure TFormdua.rbsizeClick(Sender: TObject);beginformdua.BorderStyle :=bssizeable;end;
procedure TFormdua.rbdialogClick(Sender: TObject);beginformdua.BorderStyle :=bsdialog;end;
procedure TFormdua.rbsingleClick(Sender: TObject);beginformdua.BorderStyle :=bssingle;end;
procedure TFormdua.rbsizetoolwinClick(Sender: TObject);beginformdua.BorderStyle :=bssizetoolwin;end;
55
procedure TFormdua.rbtoolwindowClick(Sender: TObject);beginformdua.BorderStyle :=bstoolwindow;end;
end.
Latihan Tiga
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;
56
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
{$R *.DFM}
procedure TForm1.btnkeluarClick(Sender: TObject);beginclose;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
57
lbcatur.Caption :='Baik untuk mengasah Otak'
end;
procedure TForm1.btnulangiClick(Sender: TObject);beginrbrenag.Checked :=false;rbfitnes.Checked :=false;rbcatur.Checked :=false;lbrenang.Caption :='';lbfitness.Caption :='';lbcatur.Caption :='';end;
end.
Latihan Empat
Source Program
unit Unitempat;
interface
uses
58
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 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;
var Formempat: TFormempat;
implementation
{$R *.DFM}
procedure TFormempat.bbcloseClick(Sender: TObject);beginclose;end;
procedure TFormempat.btnulangiClick(Sender: TObject);beginlbcontoh.Caption :='';edinput.Text :='';rbtebal.Checked :=false;
59
rbmiring.Checked :=false;rbgarisbawah.Checked :=false;lbcontoh.Font.Style :=[];edinput.SetFocus ;end;
procedure TFormempat.btnprosesClick(Sender: TObject);beginlbcontoh.Caption :=edinput.Text ;edinput.Text :='';end;
procedure TFormempat.btnefekClick(Sender: TObject);beginif 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.
60
Latihan Lima
Source Program
unit Unitlima;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, Buttons, ExtCtrls, Spin;
type TFormlima = class(TForm) GroupBox1: TGroupBox; GroupBox2: TGroupBox; GroupBox3: TGroupBox; Panel1: TPanel; Panel2: TPanel; btnulangi: TButton; bbclose: TBitBtn; Panel3: TPanel;
61
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; 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
{$R *.DFM}
62
procedure TFormlima.rbmaroonClick(Sender: TObject);beginlbcontoh.Font.Color :=clmaroon;end;
procedure TFormlima.rbhijauClick(Sender: TObject);beginlbcontoh.Font.Color :=clgreen;end;
procedure TFormlima.rbnaviClick(Sender: TObject);beginlbcontoh.Font.Color :=clnavy;end;
procedure TFormlima.rbkuningClick(Sender: TObject);beginlbcontoh.Font.Color :=clyellow;end;
procedure TFormlima.rbmerahClick(Sender: TObject);beginlbcontoh.Font.Color :=clred;end;
procedure TFormlima.rb12Click(Sender: TObject);beginlbcontoh.Font.Size :=12;edukuran.Text :='12';end;
procedure TFormlima.rb14Click(Sender: TObject);beginlbcontoh.Font.Size :=14;edukuran.Text :='14';end;
procedure TFormlima.btntambahClick(Sender: TObject);beginlbcontoh.Font.Size :=lbcontoh.Font.Size + 1;if lbcontoh.Font.Size=12 then begin
63
rb12.Checked :=true; edukuran.Text :='12'; end 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);beginlbcontoh.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 rb12.Checked :=false; rb14.Checked :=false; edukuran.Text :=inttostr(lbcontoh.Font.size); end ;end;
procedure TFormlima.btnefekClick(Sender: TObject);var fs : Tfontstyles;
64
begin
fs:=[];if chktebal.Checked =true thenfs:=fs+[fsbold];if chkmiring.Checked =true thenfs:=fs+[fsitalic];if chkgarisbawah.Checked =true thenfs:=fs+[fsunderline];if chkcorettengah.Checked =true thenfs:=fs+[fsstrikeout];lbcontoh.Font.Style :=fs;end;
procedure TFormlima.bbcloseClick(Sender: TObject);beginclose;end;
procedure TFormlima.btnulangiClick(Sender: TObject);beginrbmaroon.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);beginif (edukuran.Text <>'') and (edukuran.text<>'0') then
65
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);beginif key =#13 then edukuranenter(sender);end;end.
Latihan Enam
66
Source Program
unit Unitenam;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Buttons, StdCtrls, ExtCtrls;
type TFormenam = class(TForm) Panel1: TPanel; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Panel3: TPanel; Label5: TLabel; edbil1: TEdit; edbil2: TEdit; edbil3: TEdit; edbil4: TEdit; edhasil: TEdit; Panel4: TPanel; 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
67
{$R *.DFM}
procedure TFormenam.Button1Click(Sender: TObject);var i,bil1,bil2,bil3,bil4 : integer; pangkat,jumlah,kali,kurang : integer; bagi:real;beginbil1:=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); endelse 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); end else if rg.ItemIndex =4 then begin pangkat:=1; for i:=1 to bil2 do pangkat:=pangkat*bil1; edhasil.text:=inttostr(pangkat); end;
68
end;
procedure TFormenam.Button2Click(Sender: TObject);beginedbil1.Text :='';edbil2.Text :='';edbil3.Text :='';edbil4.Text :='';edhasil.Text :='';rg.ItemIndex :=-1;edbil1.SetFocus;end;
end.
Latihan Tujuh
69
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; 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;
70
implementation
{$R *.DFM}
procedure TForm1.BtIsiComboClick(Sender: TObject);begincombo.Items.Add('Spanyol');combo.Items.Add('Inggris');combo.Items.Add('Francis');combo.Items.Add('Belanda');combo.Items.Add('Jerman');end;
procedure TForm1.BtHapusComboClick(Sender: TObject);begincombo.Clear ;end;
procedure TForm1.comboClick(Sender: TObject);beginlist1.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;beginfor 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;beginfor i:=0 to list2.Items.Count -1 do list1.Items.Add(list2.items.strings[i]);
71
list2.Clear ;
end;
procedure TForm1.BtIsisatuList1Click(Sender: TObject);beginlist1.Items.Add(list2.items.strings[list2.ItemIndex ]);list2.Items.Delete (list2.ItemIndex);end;
procedure TForm1.BtUlangiClick(Sender: TObject);beginlist1.Clear ;list2.Clear ;combo.Clear ;end;
end.
72
Latihan Delapan
Source Program
unit Unitdelapan;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Menus;
type TFormdelapan = class(TForm) Menu1: TMainMenu; File1: TMenuItem; Exit1: TMenuItem; Perhitungan1: TMenuItem; SegiTiga1: TMenuItem; Luas1: TMenuItem; Keliling1: TMenuItem; Lingkaran1: TMenuItem;
73
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; 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); private { Private declarations } public
74
{ Public declarations } end;
var Formdelapan: TFormdelapan;
implementation
{$R *.DFM}
procedure TFormdelapan.Exit1Click(Sender: TObject);beginclose;end;
procedure TFormdelapan.Luas1Click(Sender: TObject);beginif (edpanjang.Text ='') or (edlebar.Text ='') thenMessageDlg('Teks Panjang atau Teks Lebar kosong', mtInformation, [mbOk], 0)elseedluasempat.text:=inttostr(strtoint(edpanjang.text)*strtoint(edlebar.text));end;
procedure TFormdelapan.Keliling1Click(Sender: TObject);beginif (edpanjang.Text ='') or (edlebar.Text ='') thenMessageDlg('Teks Panjang atau Teks Lebar kosong', mtInformation, [mbOk], 0)elseedkelilingempat.text:=inttostr((2*strtoint(edpanjang.text))+(2*strtoint(edlebar.text)));end;
procedure TFormdelapan.Ulangi1Click(Sender: TObject);beginedjari.Text :='';edluaslingkaran.Text :='';edkelilinglingkaran.Text :='' ;edpanjang.Text :='';edlebar.Text :='';edluasempat.Text :='';edkelilingempat.Text :='';end;
75
procedure TFormdelapan.Shape1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);beginif button = mbright thenbeginx:=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);beginif button=mbright thenbeginx:=formdelapan.Left +260;y:=formdelapan.Top +90;popup2.Popup (x,y);end;end;
procedure TFormdelapan.SegiTiga2Click(Sender: TObject);beginif edjari.Text ='' thenMessageDlg('Teks Jari-jari kosong', mtInformation, [mbOk], 0)elseedluaslingkaran.Text :=floattostr(strtofloat(edjari.text)* strtofloat(edjari.text) * 3.14);end;
procedure TFormdelapan.Keliling3Click(Sender: TObject);beginif edjari.Text ='' thenMessageDlg('Teks Jari-jari kosong', mtInformation, [mbOk], 0)elseedkelilinglingkaran.Text :=floattostr(strtofloat(edjari.text)* 2 * 3.14);end;
procedure TFormdelapan.Keliling2Click(Sender: TObject);beginif edjari.Text ='' thenMessageDlg('Teks Jari-jari kosong', mtInformation, [mbOk], 0)
76
elseedkelilinglingkaran.Text :=floattostr(strtofloat(edjari.text)* 2 * 3.14);end;
procedure TFormdelapan.Luas2Click(Sender: TObject);beginif edjari.Text ='' thenMessageDlg('Teks Jari-jari kosong', mtInformation, [mbOk], 0)elseedluaslingkaran.Text :=floattostr(strtofloat(edjari.text)* strtofloat(edjari.text) * 3.14);end;
end.
Latihan Sembilan
77
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); procedure BtUlangiClick(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Formsembilan: TFormsembilan;
implementation
{$R *.DFM}
procedure TFormsembilan.FormCreate(Sender: TObject);begingrid1.Cells [0,0]:=' i ';
78
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;
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); edjmlkol4.Text :=inttostr(kol4);end;
procedure TFormsembilan.BtUlangiClick(Sender: TObject);beginedinput.Text :='';grid1.RowCount :=2;grid1.Cells [0,1]:='';grid1.Cells [1,1]:='';
79
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
80
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; 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);
81
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 } 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();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';
82
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();beginarbrg[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';arbrg[3].nama:='Sofa';arbrg[3].harga:=80000;end;procedure TFormSepuluh.FormCreate(Sender: TObject);var j: integer;begingrid1.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 dobegincmbkodebrg.items.add(arbrg[j].kode);cmbnosuplier.items.add(arsup[j].nosup);end;end;
procedure TFormSepuluh.bbcloseClick(Sender: TObject);
83
beginclose;end;
procedure TFormSepuluh.cmbkodebrgClick(Sender: TObject);beginednamabrg.Text :=arbrg[cmbkodebrg.itemindex].nama;edharga.Text :=inttostr(arbrg[cmbkodebrg.itemindex].harga);end;
procedure TFormSepuluh.cmbnosuplierClick(Sender: TObject);beginednamasuplier.text:=arsup[cmbnosuplier.itemindex].nama;edalamat.Text := arsup[cmbnosuplier.itemindex].alamat;end;
procedure TFormSepuluh.btprosesClick(Sender: TObject);begingrid1.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]);i:=i+1;edtotal.Text :=inttostr(hasil);end;
procedure TFormSepuluh.btulangiClick(Sender: TObject);beginednofaktur.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]:='';
84
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;
end.
Latihan Sebelas
Source Program
unit Unitsebelas;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls;
85
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; 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}
86
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);beginif rbpermutasi.Checked =true then edhasil.text:=floattostr(faktorial(strtoint(edN.text))/faktorial((strtoint(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 edhasil.Text :=inttostr(pangkat(strtoint(eddasar.text),strtoint(edpangkat.text)));end;
procedure TFormsebelas.BtUlangiClick(Sender: TObject);beginedN.Text :='';edR.Text :='';Eddasar.text:='';edPangkat.Text :='';edHasil.Text :='';rbpermutasi.Checked :=false;rbCombinasi.Checked :=false;rbpangkat.Checked :=false;
87
edN.SetFocus ;end;
end.
Latihan Dua Belas
Form Data Modul
Form About
88
Form Transaksi
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;
89
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; 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;
90
{$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 } 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;
{ Calculate the total cost of these holdings. } tblHoldings.disableControls; { hide this process from the user } tblHoldings.first; while not tblHoldings.eof do
91
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;
{ 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;
92
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;
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; DBEdit2: TDBEdit; DBEdit3: TDBEdit; DBEdit4: TDBEdit; Label1: TLabel;
93
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); 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;
94
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;
procedure TFmCtrlGrid.About1Click(Sender: TObject);begin with TFMAboutBox.Create(nil) do try ShowModal; finally Free; end;end;
end.
95