Jumat, 25 Desember 2009

normalisasi

TEKNIK NORMALISASI


5.1. DEFINISI NORMALISASI

Normalisasi adalah suatu teknik yang digunakan untuk menstrukturkan data sedemikian rupa sehingga mengurangi atau mencegah timbulnya masalah-masalah (anomali) yang berhubungan dengan pengolahan basis data.
Atau, normalisasi sering disebut juga suatu proses pengelompokan/membagi(dekomposisi) data kedalam bentuk tabel atau relasi atau file untuk menyatakan entitas dan hubungan mereka sehingga terwujud satu bentuk database yang mudah dimodifikasi.

Proses normalisasi dalam basis data relasional menitikberatkan pada masalah penentuan stuktur data yang paling sederhana untuk tabel-tabelnya. Proses ini mengatur kembali hubungan-hubungan atribut yang saling bergantungan dan berusaha menghindari kehilangan informasi(lost decomposition) ketika proses-proses penyisipan dan penghapusan data dilakukan.

Hasil proses normalisasi adalah data, records atau tabel-tabel yang konsisten secara lojik, mudah dimengerti, dan pemeliharaannya tidak sulit dan murah. Oleh karena itu, proses normalisasi ini sering digunakan sbagai salah satu pendekatan yang dilakukan dalam perancangan skema basisdata dalam bentuk normal.

Pada proses Normalisasi selalu diuji pada beberapa kondisi. Apakah ada kesulitan selama proses delete, insert atau update dalam basis data yang disebut sebagai penyimpangan-penyimpangan atau dikenal dengan Anomaly.

5.2. MACAM-MACAM PENYIMPANGAN (ANOMALI)

Dibawah ini akan diberikan contoh Anomali sbb:

• Anomali Penyisipan(Insertion Anomaly)

Yaitu error atau kesalahan yang terjadi sebagai akibat operasi menyisipkan tuple/record pada sebuah relasi.
Contoh: Jika ada obat baru yang akan dimasukkan/disisipkan, maka obat tersebut tidak dapat disisipkan ke dalam relasi sampai ada pasien yang mengambil jenis obat tersebut.

• Anomali Penghapusan(Deletion Anomaly)

Yaitu error atau kesalahan yang terjadi sebagai akibat operasi penghapusan terhadap tuple/record dari sebuah relasi.
Contoh: Jika pasien yang memiliki No_Pasien P001 membatalkan tidak jadi menebus resep obat tersebut, maka jika record tersebut dihapus akan menyebabkan hilangnya informasi tentang Kode_Obat Kd01.

• Anomali Peremajaan(Update Anomaly)

Yaitu error atau kesalahan yang terjadi sebagai akibat operasi perubahan tuple/record dari sebuah relasi.

Contoh: Jika harga obat untuk kode_obat Kd01 dinaikkan menjadi 5000, maka harus dilakukan beberapa kali modifikasi terhadap record-record pasien yang menebus kode_obat Kd01, agar data selalu tetap konsisten.

5.3 KETERGANTUNGAN (DEPENDENCY)

Ketergantungan atau dependensi merupakan konsep yang mendasari normalisasi. Dependensi menjelaskan hubungan antar atribut, atau secara lebih khusus menjelaskan nilai dari suatu atribut yang menentukan nilai atribut lainnya.

Jenis-jenis ketergantungan:

 Ketergantungan Fungsional
 Ketergantungan Fungsional Penuh
 Ketergantungan Total
 Ketergantungan Transitif

Ketergantungan Fungsional(Functional Dependency=FD)

FD didefinisikan sebagai berikut:

Suatu atribut Y disebut bergantung secara fungsional terhadap atribut X jika dan hanya jika setiap nilai X berhubungan dengan sebuah nilai Y.


Notasinya adalah : X  Y yang artinya:

Atribut Y bergantung secara fungsional (FD) terhadap atribut X

atau atribut X menentukan atribut Y

Misal : NIM  NAMA_MAHASISWA

dimana atribut NIM disebut DETERMINANT (penentu), sedangkan NAMA_MAHASISWA disebut DEPENDENT(tergantung)

Contoh:
Suatu relasi Pesanan_Jual dengan struktur:

Pesanan_Jual(Pembeli,Kota,Barang,Jumlah)

Sampel Data adalah:


Pada contoh ini, PEMBELI secara fungsional menentukan KOTA, sebab terlihat bahwa untuk PEMBELI yang sama, KOTA-nya juga sama. Jadi:

PEMBELI  KOTA

Ketergantungan yang lain bisa diperlihatkan dari tabel di atas adalah :

{PEMBELI,BARANG}  JUMLAH
{PEMBELI,BARANG}  KOTA
{PEMBELI,BARANG}  {JUMLAH,KOTA}

Catatan: Tanda { } biasa digunakan kalau ada lebih dari satu atribut baik pada determinan maupun dependent.


Ketergantungan Fungsional Penuh (Fully Functional Dependency=FFD)

FFD didefinisikan sebagai berikut:

Suatu atribut Y disebut bergantung secara fungsional penuh (FFD) terhadap atribut X jika :
 Y memiliki FD dengan X
 Y tidak memiliki ketergantungan dengan bagian dari X

Contoh:
Misal terdapat relasi CUSTOMER(Kode_Cust, Kota , No_Telp)

Ketergantungan pada relasi adalah :

1. {Kode_Cust,Kota}  No_Telp
2. Kode_Cust  No_Telp

Pada keadaan1) No_Telp bergantung kepada atribut gabungan {Kode_Cust,Kota}, tetapi sebenarnya No_telp hanya bergantung kepada Kode_Cust, seperti dalam keadaan 2). Dalam relasi di atas No_Telp bergantung secara fungsional penuh (FFD) kepada Kode_Cust. Tetapi No_Telp tidak bergantung secara fungsional penuh kepada gabungan atribut {Kode_Cust, Kota}karena No_Telp memiliki ketergantungan dengan salah satu bagian dari {Kode_Cust,Kota} yaitu Kode_Cust.

Ketergantungan Total

FFD didefinisikan sebagai berikut:

Suatu atribut Y disebut bergantung secara total (TFD) terhadap atribut X jika :
 Y memiliki FD dengan X
 X memiliki FD dengan Y
Ketergantungan total ditulis dengan notasi X  Y

Contoh dari ketergantungan total adalah relasi satu ke satu.

Ketergantungan Transitif

Ketergantungan transitif didefinisikan sebagai berikut:

Suatu atribut Z disebut bergantung secara transitif terhadap atribut X jika :
 Y memiliki FD dengan X
 Z memiliki FD dengan Y

Ketergantungan transitif ditulis degan notasi X  Y¬ Z¬

5.4 Langkah-Langkah Normalisasi

Skema langkah-langkah normalisasi adalah sebagai berikut:

Bentuk tidak normal (Unnormalized Form)
Yaitu suatu kumpulan data yang tidak ada keharusan mengikuti format tertentu (mungkin saja datanya tidak lengkap atau terduplikasi)

Bentuk Normal Satu(First Normal Form=1NF)
Yaitu bila relasi tersebut mempunyai nilai data yang atomik, artinya tidak ada lagi kerangkapan data.

Bentuk Normal Dua(Second Normal Form=2NF)
Yaitu bila relasi tersebut sudah berada dalam 1NF dan setiap atribut yang bukan kunci bergantung sepenuhnya (FFD) terhadap Primary Key.

Bentuk Normal Tiga(Third Normal Form=3NF)
Yaitu bila relasi tersebut sudah berada dalam 2NF dan tidak ada ketergantungan transitif pada atribut yang bukan kunci.

Bentuk Normal Boyce-Codd(Boyce-Codd Normal Form=BCNF)
Yaitu bila relasi tersebut sudah berada dalam 3NF dan semua determinannya merupakan Superkey Key.

Bentuk Normal Empat(Fourth Normal Form=4NF)
Yaitu bila relasi tersebut sudah berada dalam BCNF dan setiap rinci data yang ada di dalamnya tidak mengalami ketergantungan pada banyak nilai (multivalue).

Bentuk Normal Kelima(Fifth Normal Form=5NF)
Bentuk normal kelima ini dirancang untuk mengatasi masalah dependensi yang disebut dependensi gabungan (join dependensi) yaitu ketergantungan pada gabungan beberapa atribut. Join dependensi terjadi, apabila sebuah relasi yang didekomposisi (dipecah) menjadi dua, setelah itu relasi tersebut tidak dapat digabung kembali menjadi relasi semula.
Suatu relasi R disebut berada dalam bentuk 5NF jika dan hanya jika setiap dependensi gabungan dalam R tersirat oleh kunci kandidat dalam R.

Minggu, 10 Mei 2009

VISUAL FOXPRO 6

Bab 1
MENGENAL MICROSOFT VISUAL FOXPRO 6.0

1.1 TENTANG VISUAL FOXPRO 6.0

Microsoft Visual Foxpro 6 atau disingkat VFP6 adalah suatu sistem manajemen database(basis data) yang memungkinkan kita:
• Merancang sendiri format penyimpanan informasi
• Menyimpan data dalam jumlah besar
• Menata data dalam bentuk tabel
• Mendapatkan informasi berdasarkan kriteria yang kita tentukan (Query)
• Merancang sendiri form untuk memasukkan data ke dalanm tabel
• Mengolah data menjadi informasi dan menyajikannya dalam bentuk laporan
• Merangkai berbagai unsur penggunaan di dalamnya menjadi suatu aplikasi

Kemampuan dari spesifikasi Visual Foxpro 6

Spesifikasi Maksimum

Jumlah record per tabel 1 milyar
Ukuran file tabel 2 giga byte
Jumlah karakter per record 65500
Jumlah field per record 255
Jumlah tabel aktif dalam saat
yang sama 2551
Jumlah karakter per field 254
Ukuran field numerik 20 digit
Presisi perhitungan numerik 16 digit

1.2 Tentang Database

Database dalam istilah teknis, adalah sekumpulan informasi yang ditata sedemikian rupa sehingga dapat diakses kembali dan diolah menjadi berbagai macam informasi.
Gambaran sederhana dari database adalah suatu tabel 2 dimensi yang terdiri atas sejumlah baris dan kolom
Di mana baris disebut record dan kolom disebut field. Perhatikan tabel berikut:

Tabel Pegawai

Nama Alamat Gaji
Ali Jl. Bangau 10 600000
Topan Jl. Mangga 5 500000
Aris Jl. Tribun 11 450000
Susie Jl. Mustakim 3 400000

Pada tabel di atas terdiri atas 4 baris atau 4 record dan terdiri atas 3 kolom atau 3 field. Judul kolom merangkap nama Field (Field name)



1.3 Pemrograman OOP(Object Oriented Programming)

Visual Foxpro merupakan salah satu paket program yang mendukung ke Pemrograman Berorientasi Object(PBO) atau Object Oriented Programming (OOP).
Dalam pemrograman berorientasi objek tersebut, aplikasi tidak hanya diciptakan dari pemrograman, tapi merupakan kombinasi dari pemrograman dan perancagan layar (interface). Dengan Visual Foxpro, desain layar, desain laporan dan desain lain tidak perlu diprogram, cukup didesain langsung di layar kemudian digabung dengan kode program induk.
Dengan program OOP waktu yang dihabiskan untuk melakukan pemrograman jauh lebih berkurang sehingga produktivitas dapat meningkat.

Microsoft VFP sebenarnya bukan merupakan satu perangkat lunak tunggal, melainkan terdiri dari sejumlah aplikasi pengembang yang bergabung menjadi satu. Secara ringkas aplikasi yang disediakan Visual Foxpro adalah sebagai berikut:

Database Designer
Table Designer
Query Designer
View Designer
Form Designer
Menu Designer
Class Designer
Program Editor
Report Designer
Project Manager
Debugger


1.2.1 Database Designer

Database Designer merupakan aplikasi Visual Foxpro yang berfungsi sebagai sarana bantu mendesain database, terutama untuk:
Memanipulasi tabel
Menentukan hubungan antar tabel (relasi/koneksi)
Menyunting prosedur-prosedur yang mengatur tabel
Mengatur tampilan lokal dan terpisah dari database
Menampilkan tabel, view dan hubungan yang terdapat dalam database.

Dalam VFP6 file database berekstensi DBC (bukan DBF)
Tabel database atau lebih dikenal sebagai tabel (table) adalah ‘file’ berekstensi DBF. Yaitu tempat penyimpanan data. Tabel ini biasa merupakan bagian dari suatu database, atau berdiri sendiri.
Dalam pemakaian yang sangat sederhana, kita boleh hanya menggunakan tabel saja.
View merupakan tabel yang dibentuk dengan mengambil sebagian/seluruh field dari satu/beberapa tabel lain atau dari view yang lain. Dengan demikian kita dapat mendapatkan informasi yang merupakan gabungan dari beberapa tabel/view dalam suatu tabel/view saja.
Connection, adalah penghubung antara tabel pada Visual Foxpro dengan data dari sumber lain yang formatnya berbeda, antara MS-ACCESS, ORACLE,EXCEL, FOXPRO, dan lain-lain.

Bentuk Layar Database Designer



Pada gambar, file database Datamhs1.DBC berisi tiga tabel yaitu Pribadi.DBF, Nilai.DBF dan Mtkuliah.DBF

1.2.2 Table Designer

Table Designer merupakan sarana untuk merancang tabel seperti merancang struktur nama fiels, menspesifikasikan index dan lain-lain. Pada gambar terlihat Table Designer sedang mendesign tabel Pribadi.DBF




1.2.3 Query Designer

Query Designer merupakan sarna yang berfungsi untuk menyusun Query. Yang dimaksud dengan Query adalah seperangkat aturan yang menspesifikasikan cara mengambil informasi yang terkandung dalam sebuah atau beberapa tabel. Query dapat dibuat permanen dengan cara disimpan dalam file yang bersktensi .QPR.
Query dibutuhkan karena tidak semua informasi yang ada dalam tabel pada suatu saat dibutuhkan jadi hanya sebagian saja yang perlu ditampilkan atau diakses.



Hasil query yang menampilkan Mahasiswa dengan yang ber-Kota= “Jakarta”


1.2 .4 View Designer

View Designer mirip berguna untuk menampilkan View. View mirip dengan Query yaitu seperangkat aturan yang menspesifikasicara mengambil informasi dari sebuah atau beberapa tabel. Perbedaannya adalah dalam view kita bisa mengedit data dan hasilnya berpegaruh kepada tabel sumbernya sedangkan query tidak bisa mengedit tabel sumber.
View dapat disimpan dalam file berekstensi .VUE ataupun .DBC

1.2.5 Form Designer

Form Designer adalah sarana untuk merancang tampilan program atau form langsung di layar. Hasil rancangan kemudian disimpan dalam file berekstensi .CDX. Dalam form ini kita bisa meletakkan berbagai macam object atau kontrol. Contoh Design form Input



1.2.6 Menu Designer

Menu Designer adalah salah satu fasilitas dalam Foxpro untuk merancang menu PullDown. File menu disimpan secara permanen ke dalam file ekstensi .MNX
Contoh berikut merupakan proses mendesign menu Mutama.MNX




1.2. 7 Class Designer


Dalam bahasa OOP untuk menciptakan objek, harus menngunakan Class yang merupakan template dari objek yang akan diciptakan. Pada Foxpro, Class dapat diciptakan baik lewat program maupun dengan fasilitas Class Designer. Class Designer sangat bermanfaat untuk menciptakan kelas yang berhubungan dengan tampilan karena kita dapat melihat langsung wujud fisik objek dari kelas yang dirancang tersebut di layar. Class yang diciptakan dapat disimpan secara permanen dalam file .VCX agar dapat digunakan kelak. Gambar berikut memperlihatkan sebuah class bernama Toolbar1 yang disimpan dalam file Pribadi.VCX



1.2.8 Program Editor


Program editor adalah merupakan suatu layar editor untuk mengetikkan program dalam Foxpro. Program ini nantinya akan disimpan sebagi file yang berekstension .PRG

penggunaan checkbox,lisbox,memo dalam c

Buatlah program Latih-2 dengan mengikuti petunjuk berikut :

1.Aktifkan software C++ Builder dan buat aplikasi baru dengan memilih menu File, New application.
2.Rancanglah Form Output program seperti gambar di bawah ini :



-Taruh 1 buah komponen Panel pada Form
-Taruh 1 buah komponen Main Menu pada Form
-Taruh 2 buah komponen GroupBox pada Form
-Taruh 4 buah komponen Label pada GroupBox1
-Taruh 1 buah komponen Edit pada GroupBox1
-Taruh 1 buah komponen ComboBox1 pada GroupBox1
-Taruh 1 buah komponen ListBox1 pada GroupBox1
-Taruh 1 buah komponen Memo1 pada GroupBox1
-Taruh 1 buah komponen RadioGroup1 pada Form
-Taruh 2 buah komponen CheckBox pada GroupBox2
-Taruh 2 buah komponen Button pada Form
-Taruh 1 buah komponen Button pada GroupBox2
-Taruh 1 buah komponen ScrollBar pada Form
-Aturlah posisi peletakan komponen seperti gambar di atas.

3.Ubahlah properti untuk komponen form1 :



4. Ketik perintah berikut pada bagian halaman Events pada jendela object inspector untuk objek :
- Form1 : klik ganda di tempat kosong (event on Create)
//-------------------------------------------------------------------------------------------------------------
void __fastcall TStandar::FormCreate(TObject *Sender)
{
Button2->Caption="Tanggal: "+DateToStr(Date());
}
//-------------------------------------------------------------------------------------------------------------


- ComboBox1 : klik ganda tempat kosong disamping kanan event OnChange
//-------------------------------------------------------------------------------------------------------------
void __fastcall TStandar::ComboBox1Change(TObject *Sender)
{
if (ComboBox1->ItemIndex==0)
Memo1->Lines->Add("Pria");
else
Memo1->Lines->Add("Wanita");
}
//-------------------------------------------------------------------------------------------------------------

- ListBox1 : klik ganda tempat kosong disamping kanan event OnClick
//-------------------------------------------------------------------------------------------------------------
void __fastcall TStandar::ListBox1Click(TObject *Sender)
{
if (ListBox1->ItemIndex==0)
Memo1->Lines->Add("AMIK Profesional No.27");
if (ListBox1->ItemIndex==1)
Memo1->Lines->Add("Makassar");
if (ListBox1->ItemIndex==2)
Memo1->Lines->Add("(0411) 431139, 431157");
}
//-------------------------------------------------------------------------------------------------------------

- RadioGroup1 : klik ganda tempat kosong disamping kanan event OnClick
//-------------------------------------------------------------------------------------------------------------
void __fastcall TStandar::RadioGroup1Click(TObject *Sender)
{
if (RadioGroup1->ItemIndex==0)
Standar->Color=clBtnFace;
if (RadioGroup1->ItemIndex==1)
Standar->Color=clRed;
if (RadioGroup1->ItemIndex==2)
Standar->Color=clYellow;
if (RadioGroup1->ItemIndex==3)
Standar->Color=clGreen;
if (RadioGroup1->ItemIndex==4)
Standar->Color=clBlue;
}
//-------------------------------------------------------------------------------------------------------------

- CheckBox1: klik ganda tempat kosong disamping kanan event OnClick
//-------------------------------------------------------------------------------------------------------------
void __fastcall TStandar::CheckBox1Click(TObject *Sender)
{
if (CheckBox1->Checked==true)
{ Memo1->Enabled=true;
Memo1->SetFocus();
}
else
Memo1->Enabled=false;
}
//-------------------------------------------------------------------------------------------------------------

- CheckBox2: klik ganda tempat kosong disamping kanan event OnClick
//-------------------------------------------------------------------------------------------------------------
void __fastcall TStandar::CheckBox2Click(TObject *Sender)
{
if (CheckBox2->Checked==true)
Memo1->Color=clAqua;
else
Memo1->Color=clWhite;
}
//-------------------------------------------------------------------------------------------------------------

- ScrollBar1 : klik ganda tempat kosong disamping kanan event OnChange
//-------------------------------------------------------------------------------------------------------------
void __fastcall TStandar::ScrollBar1Change(TObject *Sender)
{
RadioGroup1->ItemIndex=ScrollBar1->Position;
}
//-------------------------------------------------------------------------------------------------------------

- Button1 : klik ganda tempat kosong disamping kanan event OnClick
//-------------------------------------------------------------------------------------------------------------
void __fastcall TStandar::Button1Click(TObject *Sender)
{
Close();
}
//-------------------------------------------------------------------------------------------------------------

- Button2 : klik ganda tempat kosong disamping kanan event OnClick
//-------------------------------------------------------------------------------------------------------------
void __fastcall TStandar::Button2Click(TObject *Sender)
{
ShowMessage("Ini tanggal system");
}
//-------------------------------------------------------------------------------------------------------------

- Button3 : klik ganda tempat kosong disamping kanan event OnClick
//-------------------------------------------------------------------------------------------------------------
void __fastcall TStandar::Button3Click(TObject *Sender)
{
Memo1->Clear();
}
//-------------------------------------------------------------------------------------------------------------

penggunaan checkbox,lisbox,memo dalam c

penggunaan checkbox,lisbox,memo dalam c

penggunaan checkbox,lisbox,memo dalam c

menggambar lewat C++4

Buatlah program Latih-3 dengan mengikuti petunjuk berikut :

1. Aktifkan software C++ Builder dan buat aplikasi baru dengan memilih menu File, New application.
2.Rancanglah Form Output program seperti gambar di bawah ini :



- Letakkan 2 buah komponen Panel pada Form
- Letakkan 1 buah komponen PaintBox di dalam Panel1
- Letakkan 6 buah komponen Shape pada Panel2
- Letakkan 3 buah komponen SpeedButton pada Panel2
- Letakkan 2 buah komponen BitBtn pada Panel2

3. Ubahlah properti untuk komponen form1 :



4. Ketik perintah berikut pada bagian halaman Events pada jendela object inspector untuk objek :
-Form1 : klik ganda tempat kosong disamping kanan event OnCreate:
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Gambar=false;
BidGb->Canvas->Pen->Color=clBlack;
BidGb->Canvas->Pen->Width=1;
}
//---------------------------------------------------------------------------

-PaintBox1 : klik ganda tempat kosong disamping kanan event OnMouseDown :
//---------------------------------------------------------------------------
void __fastcall TForm1::BidGbMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if (Button==mbLeft)
Gambar=true;
else
Gambar=false;
BidGb->Canvas->MoveTo(X,Y);
}

PaintBox1 : klik ganda tempat kosong disamping kanan event OnMouseMove :
//---------------------------------------------------------------------------
void __fastcall TForm1::BidGbMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if (Gambar==true)
BidGb->Canvas->LineTo(X,Y);
}

PaintBox1 : klik ganda tempat kosong disamping kanan event OnMouseUp :
//---------------------------------------------------------------------------
void __fastcall TForm1::BidGbMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
Gambar=false;
}

-Shape1 : klik ganda tempat kosong disamping kanan event OnMouseDown :
//---------------------------------------------------------------------------
void __fastcall TForm1::shHitamMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
shHitam->Brush->Style=bsSolid;
shUngu->Brush->Style=bsDiagCross;
shMerah->Brush->Style=bsDiagCross;
shKuning->Brush->Style=bsDiagCross;
shBiru->Brush->Style=bsDiagCross;
shHijau->Brush->Style=bsDiagCross;
BidGb->Canvas->Pen->Color=clBlack;
}

-Shape2 : klik ganda tempat kosong disamping kanan event OnMouseDown :
//---------------------------------------------------------------------------
void __fastcall TForm1::shUnguMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
shUngu->Brush->Style=bsSolid;
shHitam->Brush->Style=bsDiagCross;
shMerah->Brush->Style=bsDiagCross;
shKuning->Brush->Style=bsDiagCross;
shBiru->Brush->Style=bsDiagCross;
shHijau->Brush->Style=bsDiagCross;
BidGb->Canvas->Pen->Color=clPurple;
}

-Shape3 : klik ganda tempat kosong disamping kanan event OnMouseDown :
//---------------------------------------------------------------------------
void __fastcall TForm1::shMerahMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
shMerah->Brush->Style=bsSolid;
shHitam->Brush->Style=bsDiagCross;
shUngu->Brush->Style=bsDiagCross;
shKuning->Brush->Style=bsDiagCross;
shBiru->Brush->Style=bsDiagCross;
shHijau->Brush->Style=bsDiagCross;
BidGb->Canvas->Pen->Color=clRed;
}

-Shape4 : klik ganda tempat kosong disamping kanan event OnMouseDown :
//---------------------------------------------------------------------------
void __fastcall TForm1::shKuningMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
shKuning->Brush->Style=bsSolid;
shHitam->Brush->Style=bsDiagCross;
shMerah->Brush->Style=bsDiagCross;
shUngu->Brush->Style=bsDiagCross;
shBiru->Brush->Style=bsDiagCross;
shHijau->Brush->Style=bsDiagCross;
BidGb->Canvas->Pen->Color=clYellow;
}

-Shape5 : klik ganda tempat kosong disamping kanan event OnMouseDown :
//---------------------------------------------------------------------------
void __fastcall TForm1::shBiruMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
shBiru->Brush->Style=bsSolid;
shHitam->Brush->Style=bsDiagCross;
shMerah->Brush->Style=bsDiagCross;
shKuning->Brush->Style=bsDiagCross;
shUngu->Brush->Style=bsDiagCross;
shHijau->Brush->Style=bsDiagCross;
BidGb->Canvas->Pen->Color=clBlue;
}

-Shape6 : klik ganda tempat kosong disamping kanan event OnMouseDown :
//---------------------------------------------------------------------------
void __fastcall TForm1::shHijauMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
shHijau->Brush->Style=bsSolid;
shHitam->Brush->Style=bsDiagCross;
shMerah->Brush->Style=bsDiagCross;
shKuning->Brush->Style=bsDiagCross;
shBiru->Brush->Style=bsDiagCross;
shUngu->Brush->Style=bsDiagCross;
BidGb->Canvas->Pen->Color=clGreen;
}

-SpeedButton1 : klik ganda tempat kosong disamping kanan event OnClick :
//---------------------------------------------------------------------------
void __fastcall TForm1::spTipisClick(TObject *Sender)
{
BidGb->Canvas->Pen->Width=1;
}

-SpeedButton2 : klik ganda tempat kosong disamping kanan event OnClick :
//---------------------------------------------------------------------------
void __fastcall TForm1::spSedangClick(TObject *Sender)
{
BidGb->Canvas->Pen->Width=4;
}

-SpeedButton3 : klik ganda tempat kosong disamping kanan event OnClick :
//---------------------------------------------------------------------------
void __fastcall TForm1::spTebalClick(TObject *Sender)
{
BidGb->Canvas->Pen->Width=7;
}

- BitBtn1 : klik ganda tempat kosong disamping kanan event OnClick :
//---------------------------------------------------------------------------
void __fastcall TForm1::bitHapusClick(TObject *Sender)
{
BidGb->Refresh();
}

-BitBtn2 : klik ganda tempat kosong disamping kanan event OnClick :
//---------------------------------------------------------------------------
void __fastcall TForm1::bitKeluarClick(TObject *Sender)
{
Close();
}

5. Simpan lembar kerja anda.
6. Run program dengan menekan tombol F9 atau tekan icon ► pada speedbar.
7. Contoh hasil running program :

maka hasil dari output setelah program di running



adapun listing lengkapnya :

//---------------------------------------------------------------------------
#include
#pragma hdrstop

#include "fPrak6.h"
//---------------------------------------------------------------------------
#pragma resource "*.dfm"
TForm1 *Form1;
bool Gambar;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BidGbMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if (Button==mbLeft)
Gambar=true;
else
Gambar=false;
BidGb->Canvas->MoveTo(X,Y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BidGbMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if (Gambar==true)
BidGb->Canvas->LineTo(X,Y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BidGbMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
Gambar=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Gambar=false;
BidGb->Canvas->Pen->Color=clBlack;
BidGb->Canvas->Pen->Width=1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::spTipisClick(TObject *Sender)
{
BidGb->Canvas->Pen->Width=1;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::spSedangClick(TObject *Sender)
{
BidGb->Canvas->Pen->Width=4;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::spTebalClick(TObject *Sender)
{
BidGb->Canvas->Pen->Width=7;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::bitHapusClick(TObject *Sender)
{
BidGb->Refresh();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::bitKeluarClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::shHitamMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
shHitam->Brush->Style=bsSolid;
shUngu->Brush->Style=bsDiagCross;
shMerah->Brush->Style=bsDiagCross;
shKuning->Brush->Style=bsDiagCross;
shBiru->Brush->Style=bsDiagCross;
shHijau->Brush->Style=bsDiagCross;
BidGb->Canvas->Pen->Color=clBlack;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::shUnguMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
shUngu->Brush->Style=bsSolid;
shHitam->Brush->Style=bsDiagCross;
shMerah->Brush->Style=bsDiagCross;
shKuning->Brush->Style=bsDiagCross;
shBiru->Brush->Style=bsDiagCross;
shHijau->Brush->Style=bsDiagCross;
BidGb->Canvas->Pen->Color=clPurple;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::shMerahMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
shMerah->Brush->Style=bsSolid;
shHitam->Brush->Style=bsDiagCross;
shUngu->Brush->Style=bsDiagCross;
shKuning->Brush->Style=bsDiagCross;
shBiru->Brush->Style=bsDiagCross;
shHijau->Brush->Style=bsDiagCross;
BidGb->Canvas->Pen->Color=clRed;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::shKuningMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
shKuning->Brush->Style=bsSolid;
shHitam->Brush->Style=bsDiagCross;
shMerah->Brush->Style=bsDiagCross;
shUngu->Brush->Style=bsDiagCross;
shBiru->Brush->Style=bsDiagCross;
shHijau->Brush->Style=bsDiagCross;
BidGb->Canvas->Pen->Color=clYellow;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::shBiruMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
shBiru->Brush->Style=bsSolid;
shHitam->Brush->Style=bsDiagCross;
shMerah->Brush->Style=bsDiagCross;
shKuning->Brush->Style=bsDiagCross;
shUngu->Brush->Style=bsDiagCross;
shHijau->Brush->Style=bsDiagCross;
BidGb->Canvas->Pen->Color=clBlue;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::shHijauMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
shHijau->Brush->Style=bsSolid;
shHitam->Brush->Style=bsDiagCross;
shMerah->Brush->Style=bsDiagCross;
shKuning->Brush->Style=bsDiagCross;
shBiru->Brush->Style=bsDiagCross;
shUngu->Brush->Style=bsDiagCross;
BidGb->Canvas->Pen->Color=clGreen;
}
//---------------------------------------------------------------------------