PEMROGRAMAN VISUAL
SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN ILMU KOMPUTER
EL RAHMA YOGYAKARTA 2008
Pemrograman Visual
BAB I Mengenal Borland Delphi, layar serta control yang ada
Borland Delphi adalah salah satu developement tools untuk membangun aplikasi dalam lingkungan Windows. Dalam pengembangan aplikasi, Borland Delphi menggunakan pendekatan Visual untuk merancang user interface dalam bentuk form, sedangkan untuk kodingnya menggunakan dialek bahasa Pascal yang cenderung mudah dipelajari. Borland Delphi telah menjadi tools yang terkenal bagi para pemula maupun para developer. Dalam lingkungan Window's User-interface sangat memegang peranan penting, karena dalam pemakaian aplikasi yang kita buat, pemakai senantiasa berinteraksi dengan User-interface tanpa menyadari bahwa dibelakangnya berjalan instruksi-instruksi program yang mendukung tampilan dan proses yang dilakukan. Pada pemrograman Visual, pengembangan aplikasi dimulai dengan pembentukkan user interface, kemudian mengatur properti dari objek-objek yang digunakan dalam user interface, dan baru dilakukan penulisan kode program untuk menangani kejadian-kejadian (event). Tahap pengembangan aplikasi demikian dikenal dengan istilah pengembangan aplikasi dengan pendekatan Bottom Up
IDE Borland Delphi Pertama kali yang perlu dilakukan dalam belajar Visual Basic adalah mengenal IDE (Integrated Developement Environment) dari Borland Delphi yang merupakan Lingkungan Pengembangan Terpadu bagi programmer dalam mengembangkan aplikasinya. Dengan menggunakan IDE programmer dapat membuat user interface, melakukan koding, melakukan testing dan debuging serta menkompilasi program menjadi executable. Penguasaan yang baik akan IDE akan sangat membantu programmer dalam mengefektifkan tugas-tugasnya sehingga dapat bekerja dengan efisien.
Menjalankan Borland Delphi Ada beberapa cara untuk mengaktifkan IDE dari Borland Delphi, diantaranya adalah melalui tombol menu Start, Programs, Borland Delphi 7, Delphi 7 (Sesuai Versinya) Seperti aplikasi Windows umumnya, kita dapat juga mengaktifkan IDE Borland Delphi dengan klik dua kali Shortcut Borland Delphi yang ada pada desktop, atau dengan klik dua kali file project yang ekstensi filenya : *.prj melalui Windows Explorer.
STMIK EL RAHMA YOGYAKARTA
1
Pemrograman Visual
Jendela IDE IDE Borland Delphi 7 menggunakan model SDI (Single Document Interface). Berikut ini adalah gambar yang menunjukan bagian-bagian dan nama-nama jendela yang dapat tampil pada IDE Borland Delphi. Masing-masing jendela dapat ditampilkan, dapat pula ditutup sesuai dengan kebutuhan dengan menggunakan menu view. 1
2
3
8
5
4
9
6
7
10
11
1. Baris Menu 2. Object TreeView 3. Baris Toolbar 4. Komponen Palete 5. Objek Form 6. Jendela Alignment Palete 7. Jendela Project Manager 8. Jendela Object Inspector 9. Jendela Code Explorer 10. Jendela To Do List 11. Jendela Browser (Exploring Clases)
STMIK EL RAHMA YOGYAKARTA
2
Pemrograman Visual
Tidak semua jendela di atas kita gunakan, kita akan mencoba membahas beberapa saja. 1. Baris Menu Sebagaimana umumnya program di windows, baris menu disini berisi menu-menu pilihan yang digunakan untuk mengoperasikan aplikasi. Menu File berisi operasi-operasi yang berhubungan dengan file, misalkan membuka, menutup, menyimpan, dan sebagainya. Menu Edit berisi pilihan-pilihan yang berhubungan dengan editing kode dan desain tampilan form, misalnya menggandakan, memindah,memilih, menghapus, mengatur posisi, dan sebagainya. Menu Search berisi pilihan-pilihan untuk mencari/mengganti suatu kata atau ekspresi di dalam kode. Menu View berisi pilihan yang digunakan untuk menampilkan beberapa jendela/fasilitas yang ada di Borland Delphi. Menu Project berisi pilihan-pilihan yang berhubungan dengan project yang kita buat. Misalnya menambah form kedalam project, atau menghapus form dari project. Menu Run berisi pilihan-pilihan yang digunakan dalam menjalankan suatu project Menu Component berisi pilihan-pilihan untuk menginstall/mengimport/mengkonfigurasi (paket) komponen serta palette yang digunakan suatu project. Menu Database, Tools, Window berisi pilihan-pilihan yang berhubungan dengan alat-alat yang digunakan untuk melakukan penyimpanan data serta tool yang lain yang diperlukan juga pilihan-pilihan untuk mengaktifkan jendela yang terbuka di Borland Delphi. 2. Object Treeview Semua objek/kontrol yang terdapat di dalam form yang aktif akan ditampilkan pada jendela ini dengan tampilan struktur tree. 3. Baris Toolbar Toolbar juga banyak terdapat di aplikasi-aplikasi Windows yang digunakan untuk mengoperasikan program sebagaimana baris menu, tetapi dengan cara yang lebih cepat (shortcut). 4. Komponen Palete Seorang ahli masak, ketika memasak tentunya menggunakan peralatan untuk memasak seperti kompor, open, wajan, dsb. Begitu juga seorang programmer Visual mempunyai peralatan di dalam mendesain user interface suatu program. Peralatan-peralatan tersebut di delphi terdapat di dalam component palete. Jika peralatan tersebut belum terpasang, programmer bisa menambahkannya dengan memasang komponen baru. 5. Objek Form Objek Form merupakan objek dasar dari suatu jendela di dalam pemrograman Visual yang berbasis Objek. Pada objek form ini diletakkan objek ataupun kontrol-kontrol yang lain semacam kotak teks, tombol, kotak daftar, dan sebagainya. Ibarat kanvas yang digunakan seorang pelukis, maka objek form digunakan programmer untuk meletakkan objek-objek tambahan yang diperlukan oleh suatu aplikasi . 6. Jendela Alignment Palete Jendela ini digunakan untuk mengatur perataan antar suatu objek di dalam form.
STMIK EL RAHMA YOGYAKARTA
3
Pemrograman Visual
7. Jendela Project Manager Pada jendela ini akan ditampilkan semua form, unit yang terdapat di dalam project beserta file-file yang terkait begitu juga tempat penyimpanannya. Sebuah project merupakan sekumpulan file yang kita gunakan untuk membangun sebuah aplikasi. 8. Jendela Object Inspector Setiap obyek mempunyai properti tertentu, yang settingnya mengontrol tampilan dan ulah obyek dalam suatu aplikasi. Beberapa properti terbatas pada nilai tertentu. Contoh : properti visible dari suatu obyek hanya bisa diset True atau False (obyek tampak atau tidak). Setting properti obyek bisa dilakukan saat desain maupun saat aplikasi dijalankan. Jendela Object Inspector berisi properti dari suatu object yang terpilih 9. Jendela Code Explorer Selain mendesain user interface dari suatu form, seorang programmer tentunya harus mengontrol objek-objek yang digunakan di dalam form dengan melakukan pengkodean. Untuk menuliskan kode program di Borland Delphi digunakan jendela Code Explorer. Kode program disimpan di dalam file-file unit. Jendela ini mempunyai dua bagian. Sebelah kiri berisi daftar objek, variabel, konstanta, unit, dan sebagainya yang digunakan di dalam program dan ditampilkan dengan struktur tree. Sedangkan pada sebelah kanan terdapat bagian dimana kita bisa menuliskan kode program. 10. Jendela To Do List Sesuai namanya, jendela ini berisi daftar pesan yang harus dikerjakan 11. Jendela Browser (Exploring Clases) Jendela ini digunakan untuk melakukan eksplorasi terhadap klas yang digunakan di dalam project.
Kontrol pada Borland Delphi Kontrol di sini merupakan obyek hubungan dengan pemakai. Obyek-obyek ini tujuannya untuk interaksi antara program dengan pemakai. Obyek ini dapat berupa suatu tools yang digunakan untuk suatu input maupun output, atau hanya sebagai pesan yang ditampilkan ke layar (bersifat statis).
STMIK EL RAHMA YOGYAKARTA
4
Pemrograman Visual
A. Button Fungsi : menjalankan suatu tindakan jika pemakai telah melakukan pilihan dengan tombol ini.
STMIK EL RAHMA YOGYAKARTA
5
Pemrograman Visual
B. Label Fungsi : digunakan untuk menampilkan tulisan pada form. Pemakai tidak dapat merubah tulisan tersebut secara langsung.
STMIK EL RAHMA YOGYAKARTA
6
Pemrograman Visual
C. EditBox Fungsi : digunakan sebagai tempat input atau juga untuk menampilkan teks, dan pemakai dapat merubah teks yang terdapat dalam kontrol ini.
STMIK EL RAHMA YOGYAKARTA
7
Pemrograman Visual
D. ListBox Fungsi : menampilkan beberapa item, dan dari kontrol ini item-item tersebut dapat dipilih. Scroll Bar dapat digunakan untuk menggulung pilihan yang tidak dapat ditampilkan semuanya.
STMIK EL RAHMA YOGYAKARTA
8
Pemrograman Visual
E. ComboBox Fungsi : merupakan kombinasi antara textbox dengan listbox. Dengan demikian pemilihan item dapat dilakukan dari listbox atau dengan mengetik langsung pada textbox.
STMIK EL RAHMA YOGYAKARTA
9
Pemrograman Visual
F. GroupBox Fungsi : mengelompokkan control-control secara visual atau secara tindakan.
STMIK EL RAHMA YOGYAKARTA
10
Pemrograman Visual
G. CheckBox Fungsi : menampilkan keadaan True/False atau Yes/No. Beberapa control ini dapat memiliki keadaan yang sama pad suatu saat.
STMIK EL RAHMA YOGYAKARTA
11
Pemrograman Visual
H. Radio Button Fungsi : sama seperti check box. Perbedaannya hanya satu control dari beberapa control ini dapat di ON-kan. Jika control dengan tipe yang sama lainnya di-ON-kan, maka control tipe ini yang sebelumnya On akan di-Off-kan.
Praktikum : Buatlah aplikasi baru dengan memilih menu File, New, Application. Tambahkan beberapa objek. Kemudian lakukan eksplorasi terhadap properti dan event dari masing-masing objek
STMIK EL RAHMA YOGYAKARTA
12
Pemrograman Visual
BAB II MENGHITUNG LUAS SEGI TIGA Bahasan: Tujuan:
Program Menghitung Luas Segi Tiga 1. Mahasiswa Dapat Membuat Aplikasi Perhitungan Dengan Delphi
A. MENDESAIN FORM Untuk membuat program menghitung luas segitiga ini, kita membutuhkan sebuah form. Namun anda juga bisa membuatnya bersama proyek yang baru. Kemudian anda masukan beberapa komponen diantaranya Label sebanyak empat buah, Edit sebanyak tiga buah dan Button sebanyak dua buah. Anda atur posisinya sehingga terlihat seperti pada Gambar 2.1.
Gambar 2.1. Jendela Desain Form. B. MENGUBAH PROPERTI Dengan menggunakan Object Inspector, ubahlah properti dari komponen yang ada dengan ketentuan sebagai berikut : Nama Objek Properti Yang Diubah Nilai Form1 : TForm1 Caption Mata Matiku... Label1 : TLabel1 Caption Menghitung Luas Segitiga Font : Size 15 Label2 : TLabel2 Caption Alas: Label3 : TLabel3 Caption Tinggi: Label4 : TLabel4 Caption Luas: Edit1 : TEdit1 Text (Kosongkan) Edit2 : Tedit2 Text (Kosongkan) Edit3 : Tedit3 Text (Kosongkan) Button1 : TButton1 Caption &Hitung Button2 : Tbutton2 Caption &Tutup Panel1 : TPanel1 Caption Kosongkan Jika sudah selesai seharusnya tampilan form anda akan terlihat seperti gambar 2.2.
STMIK EL RAHMA YOGYAKARTA
13
Pemrograman Visual
Gambar 2.2. Tampilan Hasil Perubahan Properti. C. MEMASUKAN KODE Agar desain program yang telah kita buat bisa berfungsi sebagaimana mestinya, tentunya kita harus memasukkan kode kedalam objek tersebut. Anda cukup memasukan kode untuk Button1 dan Button2 saja. Berikut ini kode sumbernya: procedure TForm1.Button1Click(Sender: TObject); var alas,tinggi,luas: real; begin // cek apakah input sudah diisi ? IF edit1.text='' THEN Begin MessageDlg('Alas masih kosong',mtInformation,[mbOK],0); edit1.setfocus; End ELSE IF edit2.text='' THEN Begin MessageDlg('Tinggi masih kosong',mtInformation,[mbOK],0); edit2.setfocus; End ELSE // jika sudah : Begin alas:=STRtoFLOAT(edit1.text); tinggi:=STRtoFLOAT(edit2.text); luas:=0.5*alas*tinggi; edit3.text:=FLOATtoSTR(luas); Edit3.Text:='Bukan Bilangan'; End; End; Sedangkan untuk kode Button2 adalah sebagai berikut : procedure TForm1.Button2Click(Sender: TObject); begin Close; end; Sehingga kode lengkapnya akan terlihat seperti dibawah ini: unit Usegi3;
STMIK EL RAHMA YOGYAKARTA
14
Pemrograman Visual
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; Edit3: TEdit; Panel1: TPanel; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button2Click(Sender: TObject); begin close; end; procedure TForm1.Button1Click(Sender: TObject); var alas,tinggi,luas: real; begin // cek apakah input sudah diisi ? IF edit1.text='' THEN Begin MessageDlg('Alas masih kosong',mtInformation,[mbOK],0); edit1.setfocus; End ELSE IF edit2.text='' THEN Begin MessageDlg('Tinggi masih kosong',mtInformation,[mbOK],0); edit2.setfocus; End ELSE // jika sudah :
STMIK EL RAHMA YOGYAKARTA
15
Pemrograman Visual
Begin alas:=STRtoFLOAT(edit1.text); tinggi:=STRtoFLOAT(edit2.text); luas:=0.5*alas*tinggi; edit3.text:=FLOATtoSTR(luas); Edit3.Text:='Bukan Bilangan'; End; end; end.
D. LATIHAN - Modifikasi program diatas, sehingga ketika user menginputkan nilai alas dan tinggi tidak berupa angka, program bisa menghandlenya. - Buatlah program baru seperti diatas, misalkan untuk menghitung luas lingkaran, volume tabung, dan sebagainya.
STMIK EL RAHMA YOGYAKARTA
16
Pemrograman Visual
BAB III TERBILANG Bahasan: Tujuan:
Penggunaan Fungsi Dalam Delphi 1. Mahasiswa Dapat Membuat Fungsi Untuk Setiap Permasalahan Dalam Delhi
A. DESAIN FORM Sekarang kita mencoba membuat sebuah aplikasi untuk menampilkan keterangan bilangan yang dimasukan. Misalkan ketika user atau pengguna mengetik angka 1, maka akan muncul tulisan Satu. Berikut ini contoh desainnya:
Gambar 3.1. Contoh Tampilan Desain Form. B. UBAH PROPERTI Untuk memperindah tampilan, ubahlah properti masing-masing dengan ketentuan sebagai berikut: Nama Object Label1 Label2 Panel1 BitBtn1 BitBtn2 Form1 Edit1
Properti Caption Size Caption Caption Caption Glyph Kind Caption Text
Nilai Terbilang 20 Angka: (dikosongkan) &Cek (Tbitmap) bkClose Kubilang Terbilang... (dikosongkan)
Untuk menambahkan icon pada BitBtn1, langkah yang harus anda lakukan adalah: 1. Aktifkan komponen Bitbtn1, sehingga tampil propertinya pada Object Inspector 2. Pada Tab Propeties pilih baris Glyph, kemudian klik tombol 3. Tunggu hingga muncul jendela Picture Editor.
STMIK EL RAHMA YOGYAKARTA
17
Pemrograman Visual
Gambar 3.2. Jendela Picture Editor. 4. 5. 6. 7. 8.
Klik tombol Load... Ketik muncul jendela berikutnya, pastikan anda aktifkan foder : C:\Program Files\Common Files\Borland Shared\Images\Button, pada bagian Look in: Pilih Check.bmp Klik tombol Open hingga kembali kejendela semula Klik tombol OK.
Gambar 3.3. Jendela Picture Editor Pemilihan Image Jika langkah yang anda lakukan sudah tepat maka form anda akan terlihat seperti dibawah ini:
STMIK EL RAHMA YOGYAKARTA
18
Pemrograman Visual
Gambar 3.4. Tampilan Form Setelah Perubahan C. PENGKODEAN 9. CARA SEDERHANA Untuk cara sederhana ini, kita hanya menyeleksi setiap angka pertama yang dimasukan dengan seleksi Case Of. Sebenarnya kita bisa juga menyeleksi dengan IF Then, namun akan membutuhkan lebih banyak pengkodean. Aktifkan Tombol Cek, dari Object Inspector di tab Events pada event OnClick() anda ketik kode berikut ini: procedure TForm1.BitBtn1Click(Sender: TObject); Var Digit1 : Char; begin Digit1 := Edit1.Text[1]; Case Digit1 Of '0' : Panel1.caption := 'Nol'; '1' : Panel1.caption := 'Satu'; '2' : Panel1.caption := 'Dua'; '3' : Panel1.caption := 'Tiga'; '4' : Panel1.caption := 'Empat'; '5' : Panel1.caption := 'Lima'; '6' : Panel1.caption := 'Enam'; '7' : Panel1.caption := 'Tujuh'; '8' : Panel1.caption := 'Delapan'; '9' : Panel1.caption := 'Sembilan'; End; end; Untuk memeriksa apakah program kita bisa berjalan dengan baik atau tidak, sekarang coba anda jalankan program tersebut dengan menekan tombol F9. Kemudian anda isikan angka pada kotak isian dan klik tombol Cek. 10. DENGAN FUNGSI Cara yang lebih efektif, untuk menerjemahkan banyak angka adalah dengan membuat sebuah fungsi. Fungsi ini harus anda letakkan dibagian bawah dari Implementation. Function TERBILANG( n : longint) : String; Const Bil : Array[0..11] Of String[15] = ('','Satu','Dua','Tiga','Empat','Lima', 'Enam','Tujuh','Delapan','Sembilan','Sepuluh','Sebelas'); Begin Case n Of 0..11 : Result := Bil[n];
STMIK EL RAHMA YOGYAKARTA
19
Pemrograman Visual
12..19 : Result := Terbilang(n-10) + ' Belas'; 20..99 : Result := Terbilang(n div 10) + ' Puluh ' + Terbilang(n mod 10); 100..199 : Result := 'Seratus ' + Terbilang(n-100); 200..999 : Result := Terbilang(n div 100) + ' Ratus ' + Terbilang(n mod 100); 1000..1999: Result := 'Seribu ' + Terbilang(n-1000); 2000..9999: Result := Terbilang(n div 1000) + ' Ribu ' + Terbilang(n mod 1000); End; //form1.caption := inttostr(n) End; Kemudian anda hapus dan ganti kode yang ada ditombol check sehingga menjadi sebagai berikut: procedure TForm1.BitBtn1Click(Sender: TObject); Var Digit1 : Char; begin If Edit1.text<>'' Then Begin If Edit1.text='0' Then Panel1.Caption:='Nol' Else Panel1.Caption:= TERBILANG(STRtoINT(Edit1.text)); End Else Panel1.Caption:='Kosong'; end; Berikut ini Contoh Aplikasi yang sedang di RUN.
Gambar 3.4. Contoh Form Yang Sedang Dijalankan
D. LATIHAN DAN TUGAS 1. Buat supaya keterangan tampil ketika kita sedang mengetik angkanya (tanpa mengklik tombol cek) 2. Tambahkan pengkodean sehingga program bisa menghandle hingga bilangan Triliunan.
STMIK EL RAHMA YOGYAKARTA
20
Pemrograman Visual
BAB IV MENU
A. DESAIN FORM Untuk membuat sebuah form bermenu caranya sangat mudah sekali yaitu : 1. Buat sebauh aplikasi baru 2. Tambahkan sebuah MainMenu pada form anda.
Gambar 4.1. Rancangan Form Bermenu. 3. 4.
Double klik pada komponen MainMenu yang ada pada form, tunggu hingga muncul jendela baru Isi Properti Caption pada Object Inspector dengan : &Berkas, sehingga akan terlihat seperti Gambar 4.2
Gambar 4.2. Penambahan Menu Berkas 5. 6. 7. 8. 9.
Klik tombol kosong yang ada dibawah tulisan Berkas pada form, kemudian anda tambahkan Caption dengan &Keluar Klik tanda titik-titik yang membentuk kotak kosong dengan disebelah kanan menu Berkas, kemudian anda ubah Captionnya dengan &Warna. Berturut-turut anda buatkan 3 buah sub menu baru dibawah menu Warna dengan Caption masing-masing Hitam, Putih, Standar. Kemudian anda tambahkan menu Help, disamping kanan Warna. Dibawah menu Help, anda tambahkan dua sub menu dengan Caption Program, - , Tentang.
STMIK EL RAHMA YOGYAKARTA
21
Pemrograman Visual
10. Tutup Form rancangan menu tersebut sehingga kita kembali aktif di Form yang pertama dan perhatikan perubahan yang terjadi.
Gambar 3.4. Tampilan Setelah Penambahan Menu
B. PENGKODEAN Tambahkan pengkodean sehingga seluruh kodenya akan terlihat seperti dibawah ini: unit Umenu; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus; type TForm1 = class(TForm) MainMenu1: TMainMenu; Berkas1: TMenuItem; Keluar1: TMenuItem; Warna1: TMenuItem; Hitam1: TMenuItem; Putih1: TMenuItem; Standar1: TMenuItem; Help1: TMenuItem; Program1: TMenuItem; N1: TMenuItem; Tentang1: TMenuItem; procedure Keluar1Click(Sender: TObject); procedure Hitam1Click(Sender: TObject); procedure Putih1Click(Sender: TObject); procedure Standar1Click(Sender: TObject); procedure Program1Click(Sender: TObject); procedure Tentang1Click(Sender: TObject); private { Private declarations } public
STMIK EL RAHMA YOGYAKARTA
22
Pemrograman Visual
{ Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Keluar1Click(Sender: TObject); begin if Application.MessageBox( 'Apakah anda yakin keluar program ? ', 'Keluar Program',36) = 6 then Close; end; procedure TForm1.Hitam1Click(Sender: TObject); begin Form1.Color := clBlack; end; procedure TForm1.Putih1Click(Sender: TObject); begin Form1.Color := clWhite; end; procedure TForm1.Standar1Click(Sender: TObject); begin Form1.Color := clLtGray; end; procedure TForm1.Program1Click(Sender: TObject); begin Application.MessageBox('Program Menu-Menuan v.0.1'+#13+#13+'Oleh : Mas UunS', 'Tentang Program',64); end; procedure TForm1.Tentang1Click(Sender: TObject); begin Application.MessageBox('Nama : Mas UunS''+#13+ 'Alamat : Yogyakarta'+#13+ 'Phone : 08882719341,'Programmer...',64); end; end.
STMIK EL RAHMA YOGYAKARTA
23
Pemrograman Visual
BAB V GRAFIK A. DESAIN FORM Delphi menyediakan Canvas untuk tempat penggambaran. Canvas memiliki Pen, Brush, Color yang dapat digunakan untuk menggambar. Selain itu juga mempunya method MoveTo, LineTo, Circle, Ellipse dan lain-lain yang memungkinkan programmer menggambar bentuk-bentuk primitif dengan mudah. Berikut ini adalah tabel method pokok pada Canvas: Level Tinggi
Sedang
Rendah
Operasi Menggambar garis dan bentuk Menampilkan teks Arsiran Mengubah grafik/teks Manipulasi pixel Menyalin dan menggabung gambar Call fungsi-fungsi Windows GDI
Tools MoveTo, LineTo, Rectangle, dan Ellipsi TextOut, TextHeight, TextWidth, dan TextRext method FillRect dan FloodFill Pen, Brush, dan Font property Pixels property Draw, StrectDraw, BrushCopy, CopyRect method dan CopyMode property Handle property
Pada bagian ini kita akan mempelajari bagaimana bentuk-bentuk dasar (primitif) grafik yang didukung oleh delphi. Titik, garis, persegi, dan elips adalah contoh bentuk dasar grafik, yang daripadanya dapat digambar bentuk yang lebih kompleks. Berikut ini desain formnya:
Gambar 5.1. Desain Form Grafik. Kemudian anda ubah propertinya dari Object Inspector: Nama Object Label1
STMIK EL RAHMA YOGYAKARTA
Property Caption Size
Nilai Primitif Gambar 15
24
Pemrograman Visual
Label2 Caption X1 Label3 Caption Y1 Label4 Caption X2 Label5 Caption Y2 Button1 Caption &Garis Button2 Caption &Persegi Button3 Caption &Elips Button4 Caption &Acak Button5 Caption &Rumah Button6 Caption &Mobil Button7 Caption &Bunga Button8 Caption &Kubus Button9 Caption &Hapus Button10 Caption &Warna Button11 Caption &Selesai PaintBox1 ColorDialog1 Edit1 Text 0 Edit2 Text 0 Edit3 Text 200 Edit4 Text 100 Form1 Caption Gambar Gambaran... Jika perubahan property anda benar, maka form anda akan terlihat seperti dibawah ini:
Gambar 5.2. Desain Form Setelah Perubahan. B. SOURCE CODE Berikut ini kode untuk tombol Garis, Persegi, Elips, Acak, Hapus, Warna, Rumah dan Selesai. unit Ugrafik; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;
STMIK EL RAHMA YOGYAKARTA
25
Pemrograman Visual
type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; ColorDialog1: TColorDialog; PaintBox1: TPaintBox; Button9: TButton; Button10: TButton; Button11: TButton; procedure Button1Click(Sender: TObject); procedure Button11Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button10Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button5Click(Sender: TObject); private { Private declarations } public a,b,c,d : Integer; { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin a:=STRtoINT(edit1.text); b:=STRtoINT(edit2.text); c:=STRtoINT(edit3.text); d:=STRtoINT(edit4.text);
STMIK EL RAHMA YOGYAKARTA
26
Pemrograman Visual
PaintBox1.Canvas.MoveTo(a,b); PaintBox1.Canvas.LineTo(c,d); end; procedure TForm1.Button11Click(Sender: TObject); begin close; end; procedure TForm1.Button2Click(Sender: TObject); begin a:=STRtoINT(edit1.text); b:=STRtoINT(edit2.text); c:=STRtoINT(edit3.text); d:=STRtoINT(edit4.text); PaintBox1.Canvas.Rectangle(a,b,c,d); end; procedure TForm1.Button3Click(Sender: TObject); begin a:=STRtoINT(edit1.text); b:=STRtoINT(edit2.text); c:=STRtoINT(edit3.text); d:=STRtoINT(edit4.text); PaintBox1.Canvas.Ellipse(a,b,c,d); end; procedure TForm1.Button4Click(Sender: TObject); Var i : integer; begin For i:=1 to 1000 Do Begin PaintBox1.Canvas.Pixels[Random(PaintBox1.Width), Random(PaintBox1.height)]:= RGB(Random(256),Random(256),Random(256)); Application.ProcessMessages; End; end; procedure TForm1.Button9Click(Sender: TObject); begin paintBox1.Hide; PaintBox1.Show; end; procedure TForm1.Button10Click(Sender: TObject); begin ColorDialog1.Execute; PaintBox1.Color := ColorDialog1.Color; end;
procedure TForm1.FormCreate(Sender: TObject);
STMIK EL RAHMA YOGYAKARTA
27
Pemrograman Visual
begin PaintBox1.Canvas.Pen.Color := clBlack; end; procedure TForm1.Button5Click(Sender: TObject); Var tinggi,lebar,atap,tengah :integer; begin lebar := PaintBox1.Width; tengah:= lebar div 2; tinggi:= PaintBox1.Height; atap := tinggi div 3; // gambar atap: PaintBox1.Canvas.MoveTo(0,atap); PaintBox1.Canvas.LineTo(lebar,atap); PaintBox1.Canvas.LineTo(lebar - lebar div 4,0); PaintBox1.Canvas.LineTo(lebar div 4,0); PaintBox1.Canvas.LineTo(0,atap); // gambar dinding: PaintBox1.Canvas.MoveTo(lebar div 4,atap); PaintBox1.Canvas.LineTo(lebar div 4,tinggi -1); PaintBox1.Canvas.LineTo(lebar - lebar div 4,tinggi -1); PaintBox1.Canvas.LineTo(lebar - lebar div 4,atap); // gambar pintu: with PaintBox1.canvas DO Begin Pen.Color := clBlue; Pen.Width := 5; MoveTo(tengah - lebar div 8, tinggi -1); LineTo(tengah + lebar div 8, tinggi -1); LineTo(tengah + lebar div 8, tinggi div 2); LineTo(tengah - lebar div 8, tinggi div 2); LineTo(tengah - lebar div 8, tinggi -1); MoveTo(tengah, tinggi -1); LineTo(tengah, tinggi div 2); Pen.Color := clBlack; Pen.Width := 1; End; end; end. C. LATIHAN 1. Lengkapi program diatas untuk tombol Mobil, Bunga, dan Kubus ! 2. Lengkapi pula fasilitas program untuk mengganti warna garis ! 3. Buat aplikasi sederhana semacam PaintBrush milik Windows !
STMIK EL RAHMA YOGYAKARTA
28
Pemrograman Visual
BAB V APLIKASI JAM DIGITAL DAN ANALOG
A. DESAIN FORM Dengan menggunakan komponen MainMenu, StaticText serta Timer dan PaintBox, buatlah desain form seperti dibawah ini:
Gambar 5.1. Desain Form Jam. Susunan menu sebagai berikut : Tampilan
Nama Komponen Form1 MainMenu1.Analog1 MainMenu1.Digital1 MainMenu1.Jalan1 MainMenu1.Berhenti1 MainMenu1.Tentang1 StaticText1
Timer1 PaintBox1
STMIK EL RAHMA YOGYAKARTA
Set
Help
Properti Caption Caption Caption Checked Caption Checked Caption Caption Name Font.Size Font.Name Interval
Nilai Jam Jaman... &Analog &Digital True &Jalan True &Berhenti &Tentang lblJAM 72 Garamond 100
29
Pemrograman Visual
B. SOURCE CODE Seperti halnya dialam pascal, dalam program delphi ini kita juga bisa membuat prosedur sendiri. Caranya ketik dahulu Header prosedur yang akan dibuat (Bagian kepala prosedur) dan tempatkan dibagian private atau public. Misalkan kita ingin membuat prosedur BingkaiJam, JamDigital, dan JamAnalog maka anda harus mengetikkannya pada bagian private sehingga terlihat sebagai berikut: xjam,yjam,xmen,ymen,xdet,ydet : integer; procedure JamAnalog(Sender : TObject); procedure JamDigital(Sender : TObject); procedure BingkaiJam; Kemudian anda ketik isi prosedur tersebut dibagian implementation: procedure TForm1.JamAnalog(Sender : TObject); Var AmpJam,AmpMen,AmpDet,Jam,Men,Det,Det100 : word; Begin // Gambar Jam: SetMapMode(paintbox1.Canvas.Handle, MM_LOMETRIC); SetViewPortOrgEx(PaintBox1.Canvas.Handle, PaintBox1.Width div 2, PaintBox1.Height div 2, nil); If (PaintBox1.Height<PaintBox1.Width) Then AmpDet := PaintBox1.Height div 2 -10 Else AmpDet := PaintBox1.Width div 2 -10; // Set Panjang Jarum Jam,Menit, dan Detik AmpDet := AmpDet*3 div 2; AmpMen := AmpDet-20; AmpJam := AmpMen-30; DecodeTime(Time,Jam,Men,Det,Det100); // catat waktu ini With PaintBox1.Canvas DO Begin Pen.Color := clBtnFace; MoveTo(0,0); LineTo(xdet,ydet); MoveTo(0,0); LineTo(xmen,ymen); MoveTo(0,0); LineTo(xjam,yjam); xdet := Round(AmpDet*cos(DegToRad(90-det*6))); ydet := Round(AmpDet*sin(DegToRad(90-det*6))); xmen := Round(AmpMen*cos(DegToRad(90-men*6))); ymen := Round(AmpMen*sin(DegToRad(90-men*6))); xJam := Round(AmpJam*cos(DegToRad(90-jam*30))); yJam := Round(AmpJam*sin(DegToRad(90-jam*30))); // Gambar Jarum Detik: Pen.Color := clRed; MoveTo(0,0); LineTo(xdet,ydet); // Gambar Jarum Menit: Pen.Color := clBlack; MoveTo(0,0); LineTo(xmen,ymen); // Gambar Jarum Jam MoveTo(0,0); LineTo(xjam,yjam); End; End;
STMIK EL RAHMA YOGYAKARTA
30
Pemrograman Visual
procedure TForm1.JamDigital(Sender:TObject); Begin lblJam.Caption := TIMEtoSTR(Time); End; procedure TForm1.BingkaiJam; Var Amp,Amp1,i :integer; Begin // Gambar Jam: SetMapMode(paintbox1.Canvas.Handle, MM_LOMETRIC); SetViewPortOrgEx(PaintBox1.Canvas.Handle, PaintBox1.Width div 2, PaintBox1.Height div 2, nil); If (PaintBox1.Height<PaintBox1.Width) Then Amp := PaintBox1.Height div 2 -10 Else Amp := PaintBox1.Width div 2 -10; // Set Panjang Jarum Jam,Menit,Detik: Amp := Amp*3 div 2; Amp1 := Amp - 10; For i:=0 to 60 Do Begin If (i mod 5 )=0 Then PaintBox1.Canvas.Pen.Color := clRed Else PaintBox1.Canvas.Pen.Color := clBlack; PaintBox1.Canvas.MoveTo(Round(Amp*cos(i/30*pi)),Round(Amp*sin(i/30*pi))); PaintBox1.Canvas.LineTo(Round(Amp*cos(i/30*pi)),Round(Amp*sin(i/30*pi))); End; End; Sehingga kode lengkapnya terlihat sebagai berikut: unit Ujam; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, ExtCtrls, Math; type TForm1 = class(TForm) MainMenu1: TMainMenu; Tampilan1: TMenuItem; Analog1: TMenuItem; Digital1: TMenuItem; Set1: TMenuItem; Help1: TMenuItem; N1: TMenuItem; Selesai1: TMenuItem; Jalan1: TMenuItem; Berhenti1: TMenuItem; Tentang1: TMenuItem; Timer1: TTimer; PaintBox1: TPaintBox; lblJAM: TStaticText;
STMIK EL RAHMA YOGYAKARTA
31
Pemrograman Visual
procedure Analog1Click(Sender: TObject); procedure Digital1Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure Selesai1Click(Sender: TObject); procedure Jalan1Click(Sender: TObject); procedure Berhenti1Click(Sender: TObject); procedure Tentang1Click(Sender: TObject); private { Private declarations } xjam,yjam,xmen,ymen,xdet,ydet : integer; procedure JamAnalog(Sender : TObject); procedure JamDigital(Sender : TObject); procedure BingkaiJam; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.JamAnalog(Sender : TObject); Var AmpJam,AmpMen,AmpDet,Jam,Men,Det,Det100 : word; Begin // Gambar Jam: SetMapMode(paintbox1.Canvas.Handle, MM_LOMETRIC); SetViewPortOrgEx(PaintBox1.Canvas.Handle, PaintBox1.Width div 2, PaintBox1.Height div 2, nil); If (PaintBox1.Height<PaintBox1.Width) Then AmpDet := PaintBox1.Height div 2 -10 Else AmpDet := PaintBox1.Width div 2 -10; // Set Panjang Jarum Jam,Menit, dan Detik AmpDet := AmpDet*3 div 2; AmpMen := AmpDet-20; AmpJam := AmpMen-30; DecodeTime(Time,Jam,Men,Det,Det100); // catat waktu ini With PaintBox1.Canvas DO Begin Pen.Color := clBtnFace; MoveTo(0,0); LineTo(xdet,ydet); MoveTo(0,0); LineTo(xmen,ymen); MoveTo(0,0); LineTo(xjam,yjam); xdet := Round(AmpDet*cos(DegToRad(90-det*6))); ydet := Round(AmpDet*sin(DegToRad(90-det*6))); xmen := Round(AmpMen*cos(DegToRad(90-men*6))); ymen := Round(AmpMen*sin(DegToRad(90-men*6))); xJam := Round(AmpJam*cos(DegToRad(90-jam*30))); yJam := Round(AmpJam*sin(DegToRad(90-jam*30))); // Gambar Jarum Detik:
STMIK EL RAHMA YOGYAKARTA
32
Pemrograman Visual
Pen.Color := clRed; MoveTo(0,0); LineTo(xdet,ydet); // Gambar Jarum Menit: Pen.Color := clBlack; MoveTo(0,0); LineTo(xmen,ymen); // Gambar Jarum Jam MoveTo(0,0); LineTo(xjam,yjam); End; End; procedure TForm1.JamDigital(Sender:TObject); Begin lblJam.Caption := TIMEtoSTR(Time); End; procedure TForm1.BingkaiJam; Var Amp,Amp1,i :integer; Begin // Gambar Jam: SetMapMode(paintbox1.Canvas.Handle, MM_LOMETRIC); SetViewPortOrgEx(PaintBox1.Canvas.Handle, PaintBox1.Width div 2, PaintBox1.Height div 2, nil); If (PaintBox1.Height<PaintBox1.Width) Then Amp := PaintBox1.Height div 2 -10 Else Amp := PaintBox1.Width div 2 -10; // Set Panjang Jarum Jam,Menit,Detik: Amp := Amp*3 div 2; Amp1 := Amp - 10; For i:=0 to 60 Do Begin If (i mod 5 )=0 Then PaintBox1.Canvas.Pen.Color := clRed Else PaintBox1.Canvas.Pen.Color := clBlack; PaintBox1.Canvas.MoveTo(Round(Amp*cos(i/30*pi)),Round(Amp*sin(i/30*pi))); PaintBox1.Canvas.LineTo(Round(Amp*cos(i/30*pi)),Round(Amp*sin(i/30*pi))); End; End;
procedure TForm1.Analog1Click(Sender: TObject); begin Analog1.Checked := True; Digital1.Checked := False; lbljam.visible := false; Caption := 'Jam Analog'; PaintBox1.Visible := True; Application.ProcessMessages; BingkaiJam; Timer1.OnTimer := JamAnalog; end; procedure TForm1.Digital1Click(Sender: TObject); begin Digital1.Checked := True;
STMIK EL RAHMA YOGYAKARTA
33
Pemrograman Visual
Analog1.Checked := False; lbljam.visible := True; Caption := 'Jam Digital'; PaintBox1.Visible := False; Timer1.OnTimer := JamDigital; end;
procedure TForm1.FormActivate(Sender: TObject); begin Timer1.OnTimer := JamDigital; end; procedure TForm1.Selesai1Click(Sender: TObject); begin Close; end; procedure TForm1.Jalan1Click(Sender: TObject); begin Jalan1.Checked := True; Berhenti1.Checked := False; Timer1.Enabled := True; end; procedure TForm1.Berhenti1Click(Sender: TObject); begin Jalan1.Checked := False; Berhenti1.Checked := True; Timer1.Enabled := False; end; procedure TForm1.Tentang1Click(Sender: TObject); begin Application.MessageBox('Buatan Orang Muslim !','Jam...',64); end;
End.
STMIK EL RAHMA YOGYAKARTA
34
Pemrograman Visual
BAB VI DATA BASE Bahasan: Tujuan:
Data Base Menggunakan Delphi 1. Mahasiswa Dapat Membuat Aplikasi Basis Data Sekaligus Laporan Dengan Delphi 2. Mahasiswa Dapat Membuat Aplikasi Utuh Dengan Delphi
A. MEMBUAT TABLE Untuk membuat table dengan menggunakan delphi, anda membutuhkan sebuah program bantual lain yang menjadi satu dengan delphi yaitu Database Desktop. Cara untuk membuat table, bisa anda lakukan dengan mengikuti langkah-langkah dibawah ini: 3. Dari program delphi, pilih menu Tools | DataBase Desktop. 4. Tunggu beberapa saat hingga muncul jendela Database Desktop.
Gambar 6.1. Jendela Database Desktop. 5.
Dari jendela tersebut, anda pilih menu Tools | Alias Manager.
STMIK EL RAHMA YOGYAKARTA
35
Pemrograman Visual
Gambar 6.2 Jendela Alias Manager. 6. 7. 8. 9.
Klik tombol New. Pada isian Database alias: anda ketikkan nama aliasnya misalkan Akademik. Driver type: anda pilih STANDAR. Path: diisi dengan letak penyimpanan tabel anda. Jika anda tidak hapal nama direktorinya, silahkan klik tombol Browse untuk mencarinya. 10. Klik tombol OK, ketika muncul konfirmasi, anda pilih tombol Yes.
Gambar 6.3. Jendela Konfirmasi. 11. Kemudian anda pilih menu File | Working Directory... 12. Setelah muncul jendela Set Working Directory, anda pilih Akademik pada bagian Aliases: 13. Jika tidak muncul, kemungkinan ada kesalahan ketika anda membuat Alias Manager.
Gambar 6.4. Jendela Working Directory. 14. Klik tombol OK. 15. Pilih menu File | New | Table.
STMIK EL RAHMA YOGYAKARTA
36
Pemrograman Visual
Gambar 6.5. Jendela Create Table. 16. Ketika muncul jendela Create Table, anda pilih type table Paradox 7, kemudian klik tombol OK 17. Setelah muncul jendela Create Paradox 7 Table, anda buat struktur tabel sebagai berikut:
Gambar 6.6. Jendela Desain Tabel. 18. Klik tombol Save As...
STMIK EL RAHMA YOGYAKARTA
37
Pemrograman Visual
Gambar 6.7. Jendela Save As 19. Pada isian File name, anda isikan nama tabelnya, misalkan Mhs, sedangkan pada bagain Alias anda pilih Akademik. 20. Klik tombol Save. 21. Buka tabel anda, dengan memilih menu File | Open | Table
Gambar 6.8. Jendela Open. 22. Ketika muncul jendela open, anda pilih table Mahasiswa 23. Pilih menu Table | Edit Data, kemudin anda masukan record seperti dibawah ini:
STMIK EL RAHMA YOGYAKARTA
38
Pemrograman Visual
Gambar 6.9. Contoh Data Yang Dimasukan Tabel Mahasiswa. 24. Pilih menu File | Close. Ketika muncul konfirmasi penyimpanan, anda pilih yes.
Gambar 6.10. Jendela Konfirmasi. 25. Pilih menu File | Exit, untuk keluar dari program Database Desktop dan kembali ke program Delphi. B. MENDESAIN FORM Untuk merancang aplikasi database ini, kita membutuhkan beberapa komponen pallete antara lain: Table, DataSource, DBGrid, dan DBNavigator. Anda bisa menambahkan komponen tersebut dari tab Data Access dan Data Control. Jangan lupa untuk menambahkan sebuah label dan dua buah Bitbtn. Atur sedemikian rupa sehingga terlihat seperti pada gambar 6.11.
STMIK EL RAHMA YOGYAKARTA
39
Pemrograman Visual
Gambar 6.11. Rancangan Form DataBase. Atur propertinya sebagai berikut: Nama Object Form1 Table1
DataSource1 DBGrid1 DBNavigator1 Bitbtn1 Bitbtn2 Label1
STMIK EL RAHMA YOGYAKARTA
Properti BorderStyle Caption DatabaseName TableName IndexFieldName Active DataSet DataSource DataSource Caption Glyph Kind Caption Font.Name Font.Size
Nilai bsDialog Basis Data... Akademik Mahasiswa.db Nim; Nama Mahasiswa True Table1 DataSource1 DataSource1 &Laporan report.bmp bkClose DATABASE MAHASISWA Verdana 20
40
Pemrograman Visual
Gambar 6.12. Rancangan Form Setelah Perubahan Properti. Sekarang coba anda jalankan form tersebut. C. REPORT Sebelum anda bisa menampilkan laporan terlebih dahulu anda harus mempersiapkan hal dibawah ini: 1. Tambahkan sebuah form baru, dengan memilih menu File | New Form. 2. Dengan menggunakan pallete QReport, masukkan beberapa komponen antara lain: a. Sebuah QuickRep b. Empat buah QRBand c. Enam buah QRLabel d. Enam buah QRDBtext e. Satu buah Table 3. Ubah propertinya sebagai berikut: Nama Objek Form1 Table1
QRBand1 QRBand2 QRBand3 QRBand4 QRLabel1 QRLabel2 QRLabel3 QRLabel4 QRLabel5 QRLabel6 QRDBtext1 QRDBtext2
STMIK EL RAHMA YOGYAKARTA
Properti Caption DatabaseName TableName IndexFieldName Active BandType BandType BandType BandType Caption Caption Caption Caption Caption Caption DataSet DataField DataSet DataField
Nilai Laporan... Akademik Mahasiswa.db Nim; Nama Mahasiswa True rbTitle rbClumnHeader rbDetail rbPageFooter NIM Nama Mahasiswa Tempat Lahir Tanggal Lahir Jurusan Alamat Table1 Nim Table1 Nama Mahasiwa
41
Pemrograman Visual
QRDBtext3 QRDBtext4 QRDBtext5 QRDBtext6 QuickRep1
4.
DataSet DataField DataSet DataField DataSet DataField DataSet DataField DataSet ReportTitle
Table1 Tempat Lahir Table1 Tanggal Lahir Table1 Jurusan Table1 Alamat Table1 Laporan Mahasiswa
Pastikan Tampilan Form anda akan terlihat seperti berikut :
Gambar 6.13. Tampilan Form Setelah Perubahan. 5. 6. 7. 8.
Aktifkan kembali Form1 anda Double Klik pada Bibtn1 (tombol Laporan), kemudian anda ketik: Form2.QuickRep1.Preview; Tekan tombol F9 Ketika muncul konfirmasi, pilih tombol yes
Gambar 6.14. Jendela Konfirmasi. 9. Tekan tombol F9 sekali lagi 10. Sekarang aplikasi anda bisa diuji coba. D. LATIHAN 1. Lengkapi laporan diatas dengan menambahkan Judul Laporan, Garis pembatas antar data, dan tanggal pencetakan laporan pada bagian footer. 2. Buat sebuah aplikasi utuh dengan menggunakan menu, grafik dan data base seperti yang telah anda buat sebelumnya.
STMIK EL RAHMA YOGYAKARTA
42