Wednesday, December 14, 2016

Bab 5. Visual Basic .NET Untuk Pemula



Form Jamak, Modul, dan Menu





Bab ini menunjukkan bagaimana menambahkan sejumlah form pada sebuah projek dan bagaimana menciptakan sebuah modul untuk memuat pelbagai prosedur dan fungsi. Bab ini juga merangkum penciptaan menu, yang memuat perintah-perintah dan sub-submenu yang dapat dipilih oleh user.


5.1 Form Jamak
KONSEP: Projek Visual Basic dapat memiliki sejumlah form. Form awal (startup) adalah sebuah form yang ditampilkan ketika projek dieksekusi. Form-form lain di dalam sebuah projek ditampilkan oleh statemen-statemen pemrograman.

Aplikasi-aplikasi yang telah Anda ciptakan sejauh ini hanya memiliki satu form pada antarmuka user. Visul Basic tidak membatasi Anda untuk hanya mempunyai satu form di dalam sebuah projek. Anda bisa menciptakan sebanyak mungkin form di dalam sebuah projek untuk digunakan sebagai kotak dialog, menampilkan pesan error, dan seterusnya. Kemudian, Anda dapat menampilkan form-form tersebut ketika diperlukan.

Aplikasi Windows Forms umumnya memiliki satu form yang diistilahkan dengan form startup. Ketika aplikasi dieksekusi, form startup secara otomatis ditampilkan. Secara default, form pertama yang Anda ciptakan pada sebuah aplikasi Windows Foms adalah form startup. Anda akan belajar hal ini pada bab ini.

Gambar 5.1 Jendela Solution Explorer dengan entri untuk Form1.vb


Nama Form dan File Form
Setiap form pada sebuah projek Visual Basic memiliki nama yang disimpan di dalam properti Name dari form (dapat dilihat pada jendela Properties ketika form diseleksi). Seperti yang Anda telah ketahui, form pertama di dalam sebuah projek secara otomatis diberi nama Form1. Ketika sebuah form diciptakan pada projek Visual Basic, kode yang berkaitan dengan form tersebut disimpan di dalam sebuah file yang memiliki nama sama dengan form tersebut, diikuti dengan ekstensi .vb. Jadi, kode untuk sebuah form dengan nama Form1 akan disimpan di dalam sebuah file dengan nama Form1.vb. Jendela Solution Explorer menunjukkan entri untuk setiap file form di dalam sebuah projek. Gambar 5.1 menunjukkan jendela Solution Explorer dengan sebuah entri untuk form dengan nama Form1.vb.


Mengganti Nama File Form
Jika Anda menggunakan jendela Solution Explorer untuk mengubah nama file form, properti Name dari form berubah secara otomatis untuk menyesuaikan nama file. Jika, misalnya, Anda mengganti nama file Form1.vb menjadi FormUtama.vb, maka properti Name dari form akan berubah dari Form1 menjadi FormUtama. Di sisi lain, jika Anda mengubah properti Name dari form, maka nama file form tidak berubah secara otomatis. Untuk mempertahankan konsistensi antara nama file form dan properti Name yang dimilikinya, Anda sebaiknya menggunakan Solution Explorer untuk mengganti nama file form. Berikut adalah bagaimana mengganti nama file form:
1.      Klik kanan pada nama file form pada jendela Solution Explorer.
2.      Sebuah menu popup akan ditampilkan, seperti ditunjukkan pada Gambar 5.2. Pilih Rename dari menu popup tersebut.

Gambar 5.2 Pengklikan-kanan pada file form


Gambar 5.3 File form diganti nama menjadi FormUtama.vb

3.      Nama dari file form disorot pada jendela Solution Explorer. Ketikkan nama baru untuk file form. Pastikan untuk mempertahankan ekstensi .vb. Gambar 5.3 menunjukkan sebuah contoh dimana Form1.vb diganti dengan FormUtama.vb. Ketika Anda memiliki beberapa form pada sebuah aplikasi, Anda sebaiknya memberikan nama unik untuk setiap form. Pada sebuah projek form jamak (multi-form), nama-nama form default yang diberikan sebagai Form1, Form2, dan seterusnya, cukup bisa menjelaskan tujuan dari setiap form.

Menambahkan Form Baru Pada Projek
Ikuti langkah-langkah berikut untuk menambahkan sebuah form baru pada projek:
1.      Klik PROJECT pada batang menu Visual Studio, dan kemudian pilih Add Windows Form… dari menu PROJECT. Jendela Add New Item, seperti ditunjukkan pada Gambar 5.4, akan ditampilkan.

Gambar 5.4 Jendela Add New Item

2.      Di bawah dari jendela Add New Item, sebuah kotak teks Name ditampilkan dimana Anda dapat menetapkan nama dari form baru. Awalnya, sebuah nama default ditampilkan. (Perhatikan bahwa pada Gambar 5.4, nama default Form1.vb diberikan. Nama aktual yang ditampilkan bisa saja berbeda). Ubah nama default yang ditampilkan pada kotak teks Name tersebut sesuai dengan nama deskriptif yang Anda inginkan. Sebagai contoh, jika Anda ingin menamai form baru dengan FormError, ketikkan FormBaru.vb pada kotak teks Name. (Pastikan Anda mempertahankan ekstensi .vb).

Gambar 5.5 Jendela Solution Explorer yang menunjukkan dua form

3.      Klik tombol Add.

Setelah menyelesaikan langkah-langkah ini, sebuah form kosong baru akan ditambahkan pada projek Anda. Form baru ditampilkan pada jendela Designer dan sebuah entri untuk file form baru ditampilkan pada jendela Solution Explorer. Jendela Solution Explorer pada Gambar 5.5 menunjukkan dua file form: FormError.vb dan FormUtama.vb.


Berpindah Form dan Kode Form
Pada saat perancangan, Anda dapat dengan mudah berpindah dari satu form ke form lain dengan mengklik entri form pada jendela Solution Explorer. Form kemudian akan ditampilkan pada jendela Designer. Anda dapat pula menggunakan tab-tab yang ditampilkan di atas dari jendela Designer untuk menampilkan form atau kode yang berbeda. Sebagai contoh, lihat Gambar 5.6, yang menunjukkan tab-tab untuk sebuah projek dengan dua form: FormError dan FormUtama. Tab-tab yang ditampilkan dengan penanda [Design] menyebabkan sebuah form ditampilkan pada jendela Designer. Tab-tab yang ditampilkan tanpa penanda [Designer] menyebabkan kode form ditampilkan pada jendela Code.

Gambar 5.6 Tab-tab pada jendela Designer dan jendela Code


Menghapus Form
Jika Anda ingin menghapus form dari sebuah projek dan menghapusnya dari disk, lakukan langkah-langkah berikut:
1.      Klik kanan pada entri form pada jendela Solution Explorer.
2.      Pada menu popup, klik Delete.

Jika Anda ingin menghapus form dari sebuah projek tetapi tidak ingin menghapusnya dari disk, lakukan langkah-langkah berikut:
1.      Klik kanan pada entri form pada jendela Solution Explorer.
2.      Pada menu popup, klik pada Exclude From Project.

atau

1.      Seleksi entri form pada jendela Solution Explorer.
2.      Klik Project pada menu, dan klik pada Exclude From Project.


Menandai Form Startup
Form pertama yang Anda ciptakan, secara default, adalah form startup. Form ini secara otomatis ditampilkan ketika aplikasi dijalankan. Untuk membuat form lain sebagai form startup, ikuti langkah-langkah berikut:
1.      Pada jendela Solution Explorer, klik kanan pada nama projek. Gambar 5.7 menunjukkan lokasi dari nama projek.

Gambar 5.7 Nama projek pada jendela Solution Explorer

2.    Pada menu popup, klik Properties. Halaman properti projek akan ditampilkan, seperti ditunjukkan pada Gambar 5.8.


Gambar 5.8 Halaman properti dari projek

3.      Pastikan tab Application diseleksi di pojok kiri dari halaman properti, seperti ditunjukkan pada Gambar 5.8. Untuk mengubah form startup, klik pada anak panah bawah ( ) pada daftar Startup form. Semua form di dalam projek akan dimunculkan. Pilih form yang akan ditampilkan pertama kali ketika program dieksekusi.
4.      Simpan projek dan klik tombol Close ( ) pada tab halaman properti.


Menciptakan Instansi dari Form
Sebuah file form memuat semua kode dari form tersebut. Ingat bahwa ketika Anda membuka sebuah form pada jendela Code, baris kode pertama dan baris kode terakhir adalah berikut:

Public Class NamaForm

End Class

Pada baris pertama, NamaForm adalah nama form. Ingat dari Bab 2 bahwa statemen-statemen ini adalah awal dan akhir dari sebuah deklarasi kelas untuk form. Semua kode untuk form (event handler, prosedur, fungsi, dan deklarasi level-kelas) harus dimuat di dalam deklarasi kelas ini.

Deklarasi kelas dari form itu sendiri tidak menciptakan sebuah form spesifik, tetapi hanyalah deskripsi dari sebuah form. Ini sama dengan cetak-biru untuk sebuah rumah. Cetak biru itu sendiri bukanlah sebuah rumah, tetapi ia merupakan deskripsi detil dari rumah. Ketika Anda menggunakan cetak biru untuk membangun sebuah rumah aktual, Anda dapat mengatakan bahwa Anda sedang membangun sebuah instansi atau contoh atau realisasi dari rumah yang dijelaskan oleh cetak biru. Jika Anda menginginkannya, Anda dapat membangun sejumlah rumah identik dari cetak biru yang sama. Setiap rumah merupakan instansi atau realisasi terpisah dari rumah yang dijelaskan oleh cetak biru. Ide ini diilustrasikan pada Gambar 5.9.

Deklarasi kelas dari form berperan dengan tujuan yang sama. Anda dapat menggunakannya untuk menciptakan satu atau lebih instansi form yang dijelaskan oleh deklarasi kelas, dan kemudian menggunakan instansi tersebut untuk menampilkan form pada layar.


Gambar 5.9 Cetak biru dan tiap instansi (realisasi)-nya


Menampilkan Form
Langkah pertama dalam menampilkan sebuah form adalah menciptakan sebuah instansi dari form. Anda menciptakan sebuah instansi dari form menggunakan statemen Dim. Bentuk umumnya adalah sebagai berikut:

Dim VariabelObjek As New NamaKelas

VariabelObjek adalah nama dari sebuah variabel objek yang mereferensi atau mengakses sebuah instansi form. Variabel objek adalah sebuah variabel yang memuat alamat memori dari sebuah objek yang dapat Anda pakai bila bekerja dengan objek. NamaKelas adalah nama kelas dari form. Sebagai contoh, diasumsikan bahwa Anda telah menambahkan sebuah form pada projek Anda dan menamainya FormError. Statemen berikut menciptakan sebuah instansi form di dalam memori:

Dim frmError As New FormError

Sekarang Anda memeriksa apa yang terjadi sebagai hasil dari statemen ini. Pertama, sebuah variabel dengan nama frmError dideklarasikan. Kemudian, bagian dari statemen yang membaca New FormError menyebabkan sebuah instansi dari form FormError akan diciptakan di dalam memori. Alamat memori dari form ditugaskan kepada variabel frmError. (Ketika sebuah variabel objek memuat alamat memori dari suatu objek, Anda dapat mengatakannya bahwa ia mereferensi objek tersebut). Anda sekarang bisa menggunakan variabel frmError untuk melakukan operasi-operasi pada form.

Statemen ini tidak menyebabkan form ditampilkan pada layar. Ia hanya menciptakan sebuah instansi dari form di dalam memori dan menugaskan alamatnya kepada variabel objek. Untuk menampilkan form pada layar, Anda harus menggunakan variabel objek tersebut untuk memanggil metode-metode dari form.

Metode ShowDialog dan Show
Sebuah form dari berupa modal atau modeless. Ketika sebuah form modal ditampilkan, tidak ada form lain pada aplikasi yang dapat menerima fokus sampai modal form tersebut ditutup. User harus menutup form modal sebelum ia dapat bekerja dengan form lain pada aplikasi. Sebuah form modeless, di sisi lain, dapat dipakai user untuk mengganti fokus ke form lain. Metode ShowDialog menyebabkan sebuah form ditampilkan sebagai sebuah form modal. Ketika metode ini dipanggil, form akan ditampilkan dan menerima fokus. Bentuk umum dari pemanggilan metode ini adalah sebagai berikut:

VariabelObjek.ShowDialog()

VariabelObjek adalah nama dari sebuah variabel objek yang mereferensi suatu instansi dari form. Sebagai contoh, kode berikut menciptakan sebuah instansi dari form FormError dan menampilkannya:

frmError.ShowDialog()

Untuk menampilkan sebuah form modeless, Anda menggunakan metode Show. Bentuk umum dari pemanggilan metode Show adalah sebagai berikut:

VariabelObjek.Show()

VariabelObjek adalah nama dari sebuah variabel objek yang mereferensi suatu instansi dari form. Sebagai contoh, kode berikut menciptakan sebuah instansi dari form FormError dan menampilkannya sebagai sebuah form modeless:

Dim frmError As New FormError
frmError.Show()

Menutup Form dengan Metode Close
Form ummumnya memiliki sebuah tombol, seperti Close atau Cancel, yang dapat dipakai user untuk menutup form. Ketika user mengklik tombol semacam itu, form akan memanggil metode Close. Metode Close menutup form dan menghapusnya dari bagian visual dari memori. Ketika sebuah form memanggil metode Close, ia umumnya melakukannya menggunakan katakunci Me, seperti ditunjukkan berikut:

Me.Close()

Katakunci Me pada Visual Basic merupakan sebuah variabel khusus yang mereferensi objek pengeksekusi saat ini. Sebagai contoh, dimisalkan bahwa sebuah form memiliki sebuah kontrol Button dengan nama tombolKeluar, dan kode dari form tersebut memuat event handler berikut:

Private Sub tombolKeluar_Click(...) Handles tombolKeluar.Click
    Me.Close()
End Sub

Diasumsikan bahwa sebuah instansi form telah diciptakan di dalam memori dan ia sekarang sedang ditampilkan pada layar. Ketika event handler ini dieksekusi, Me akan mereferensi instansi sekarang dari form. Jadi, statemen Me.Close() menyebabkan instansi sekarang dari form memanggil metode Close, yang menutup form.

Metode Hide
Metode Hide membuat sebuah form atau kontrol menjadi terlihat atau visibel, tetapi tidak menghapusnya dari memori. Metode ini memiliki efek yang sama dengan pengaturan properti Visible menjadi False. Sama seperti metode Close, sebuah form menggunakan katakunci Me untuk memanggil metode Hide, seperti Me.Hide(). Gunakan metode Hide ketika Anda ingin menghapusnya secara sementara dari layar. Setelah menyembunyikan form, Anda bisa menampilkannya kembali dengan metode ShowDialog atau Show.

Sekarang bahwa Anda telah belajar dasar-dasar pembuatan form jamak pada sebuah projek, Anda perlu berlatih dengan melakukan langkah demi langkah pada Tutorial 5.1. Pada tutorial ini, Anda akan menciptakan sebuah aplikasi sederhana yang memiliki dua form.


Tutorial 5.1: Menciptakan Sebuah Aplikasi Dengan Dua Form
Langkah 1: Ciptakan sebuah projek Windows Forms Application dengan nama Latihan Form Jamak.

Langkah 2: Pada jendela Solution Explorer, ganti nama Form1.vb dengan FormUtama.vb. (Klik kanan pada Form1.vb dan kemudian pilih Rename dari menu popup). Pengubahan nama file form menjadi FormUtama.vb juga mengubah nama form menjadi FormUtama. Jendela Solution Explorer akan tampak seperti ditunjukkan pada Gambar 5.10.

Gambar 5.10 Jendela Solution Explorer setelah pengubahan Form1.vb menjadi FormUtama.vb

Langkah 3: Pada jendela Designer, bangunlah form FormUtama seperti ditunjukkan pada Gambar 5.11. Namai kontrol Button Tampilkan Form sebagai tombolTampilkanForm dan kontrol Button Keluar sebagai tombolKeluar.

Gambar 5.11 FormUtama

Langkah 4: Lakukan hal berikut untuk menciptakan form lain dengan nama FormPesan pada projek:
·         Klik PROJECT pada batang menu, kemudian pilih submenu Add Windows Form….
·         Jendela Add Ne Item akan ditampilkan. Ketikkan FormPesan.vb sebagai namanya.
·         Klik pada tombol Add.

Seperti ditunjukkan pada Gambar 5.12, sebuah form baru dengan nama FormPesan akan ditampilkan pada jendela Designer. Perhatikan bahwa sebuah entri untuk FormPesan.vb muncul di dalam jendela Solution Explorer.

Gambar 5.12 FormPesan ditambahkan pada projek


Langkah 5: Pada jendela Designer, bangunlah FormPesan seperti ditunjukkan pada Gambar 5.13. Namai kontrol Button dengan nama tombolTutup.

Gambar 5.13 FormPesan

Langkah 6: Gunakan tab-tab di atas dari jendela Designer untuk berganti ke FormUtama.vb [Design]. Ini akan membawa FormUtama ke jendela Designer.

Langkah 7: Klik ganda pada tombol tombolTampilkanForm untuk menciptakan sebuah template kode untuk event handler Click dari tombol tersebut. Sempurnakan event handler dengan menuliskan kode tebal seperti ditunjukkan pada baris 2 sampai baris 6. (Jangan ketikkan nomor baris, karena hanya bertujuan sebagai referensi saja).

1
2
3
4
5
6
7
Private Sub tombolTampilkanForm_Click(…) Handles tombolTampilkanForm.Click
    'Menciptakan sebuah instansi dari FormPesan
    Dim frmPesan As New FormPesan

    'Menampilkan form dengan gaya modal
    frmPesan.ShowDialog()
End Sub


Amati lebih dekat kode ini. Baris 3 menciptakan sebuah instansi dari FormPesan di dalam memori dan menugaskan alamatnya kepada variabel frmPesan. Baris 6 menggunakan variabel frmPesan untuk memanggil metode ShowDialog. Ketika statemen ini dieksekusi, ia akan menampilkan form pada layar dengan gaya modal.

Langkah 8: Gunakan tab-tab di atas dari jendela Designer untuk kembali ke FormUtama.vb [Design]. Ini akan membawa FormUtama kembali ke jendela Designer.

Langkah 9: Klik ganda pada tombolKeluar untuk menciptakan sebuah template kode untuk event handler Click dari tombol. Sempurnakan event handler dengan menuliskan kode tebal berikut:

1
2
3
4
Private Sub tombolKeluar_Click(…) Handles tombolKeluar.Click
    'Menutup form
    Me.Close()
End Sub

Ketika event handler ini dieksekusi, ia akan menutup FormUtama, yang akan mengakhiri aplikasi.

Langkah 10: Gunakan tab-tab di atas dari jendela Designer untuk ke FormPesan.vb [Design]. Ini akan membawa FormPesan ke jendela Designer.

Langkah 11: Klik ganda pada tombolTutup untuk menciptakan sebuah template kode untuk event handler Click dari tombol. Sempurnakan event handler dengan menuliskan kode tebal berikut:

1
2
3
4
Private Sub tombolTutup_Click(…) Handles tombolTutup.Click
    'Menutup form
    Me.Close()
End Sub

Ketika event handler ini dieksekusi, ia akan menutup form FormPesan.

Langkah 12: Simpan projek dan kemudian jalankan. Form FormUtama akan ditampilkan, seperti ditunjukkan pada Gambar 5.14 sebelah kiri. Klik tombol Tampilkan Form. Form FormPesan akan ditampilkan, seperti ditunjukkan di sisi kanan dari Gambar 5.14.

Gambar 5.14 Form FormUtama dan FormPesan ditampilkan

Langkah 13: Pada FormPesan, klik tombol Tutup. Ini akan menutup FormPesan. Selanjutnya, klik tombol Keluar pada FormUtama untuk mengakhiri aplikasi.


Lebih Lanjut Tentang Form Modal dan Form Modeless
Anda telah belajar bahwa ketika sebuah form modal ditampilkan, tidak ada form lain pada aplikasi yang sama yang dapat menerima fokus sampai form modal ditutup atau disembunyikan. Ada aspek penting lain dari form modal. Ketika sebuah prosedur memanggil metode ShowDialog untuk menampilkan sebuah form modal, tidak ada statemen-statemen di dalam prosedur itu yang dieksekusi sampai form modal ditutup. Konsep ini diilustrasikan pada Gambar 5.15.

Gambar 5.15 Eksekusi dari statemen-statemen setelah menampilkan sebuah form modal


Ketika sebuah prosedur memanggil metode Show untuk menampilkan form modeless, statemen-statemen yang mengikuti pemanggilan metode akan dieksekusi setelah form modeless tersebut ditampilkan. Visual Basic tidak menunggu sampai form modeless ditutup sebelum mengeksekusi statemen-statemen tersebut. Konsep ini diilustrasikan pada Gambar 5.16. Tutorial 5.2 mendemonstrasikan perbedaan antara form modal dan form modeless.


Gambar 5.16 Eksekusi dari statemen-statemen setelah menampilkan sebuah form modeless


Tutorial 5.2: Menciptakan Sebuah Aplikasi Yang Menampilkan Form Modal dan Form Modeless

Langkah 1: Buka projek Demo Modal Modeless.

Langkah 2: Lihat pada jendela Solution Explorer, seperti ditunjukkan pada Gambar 5.17. Projek memiliki dua form, FormUtama dan FormPesan. FormUtama adalah form startup.

Form 5.17 Jendela Solution Explorer yang menunjukkan dua form

Langkah 3: Klik ganda pada entri FormUtama.vb pada jendela Solution Explorer. Form akan ditampilkan pada jendela Designer, seperti ditunjukkan pada Gambar 5.18.

Gambar 5.18 Form FormUtama

Langkah 4: Lihat pada form FormPesan, klik entri tersebut pada jendela Solution Explorer, seperti ditunjukkan pada Gambar 5.19. Tombol Tutup diberi nama tombolTutup.

Langkah 5: Buka jendela Code untuk melihat kode untuk form FormPesan. Lihat pada event handler tombolTutup. Kodenya adalah sebagai berikut:

Private Sub tombolTutup_Click(…) Handles tombolTutup.Click
    'Menutup form.
    Me.Close()
End Sub

Ketika prosedur ini dieksekusi, ia menutup form FormPesan.

Gambar 5.19 Form FormPesan

Langkah 6: Buka FormUtama pada jendela Designer dan klik ganda pada tombol Tampilkan Form Modal. Ini akan menciptakan template kode untuk event handler tombolModal_Click. Sempurnakan event handler dengan mengetikkan kode tebal seperti ditunjukkan pada baris 2 sampai baris 12.

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub tombolModal_Click(…) Handles tombolModal.Click
    Dim intHitung As Integer 'Kounter
    Dim frmPesan As New FormPesan 'Instansi dari FormPesan

    'Menampilkan form pesan dengan gaya modal
    frmPesan.ShowDialog()

    'Menampilkan sejumlah angka pada kotak list pada FormUtama
    'Ini akan terjadi SETELAH user menutup FormPesan
    For intHitung = 1 To 10
        listKeluaran.Items.Add(intHitung.ToString())
    Next
End Sub

Amati lebih dekat kode tersebut. Baris 2 mendeklarasikan intHitung, sebuah variabel integer yang akan dipakai sebagai kounter. Baris 3 menciptakan sebuah instansi dari form FormPesan di dalam memori, dan menugaskan alamatnya kepada sebuah variabel dengan nama frmPesan.

Baris 6 menggunakan variabel frmPesan untuk memanggil metode ShowDialog. Ini akan menampilkan FormPesan dengan gaya modal, yang berarti bahwa tida akan statemen di dalam event handler ini yang akan dieksekusi sampai FormPesan ditutup.

Setelah FormPesan ditutup, loop For…Next pada baris 10 sampai baris 12 dieksekusi. Loop tersebut menampilkan angka 1 sampai angka 10 pada kotak listKeluaran.

Langkah 7: Buka kembali FormUtama pada jendela Designer dan klik ganda pada tombol Tampilkan Form Modeless. Ini akan menciptakan sebuah template kode untuk event handler tombolModeless. Sempurnakan event handler dengan mengetikkan kode tebal seperti ditunjukkan pada baris 2 sampai baris 12.

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub tombolModeless_Click(…) Handles tombolModeless.Click
    Dim intHitung As Integer 'Kounter
    Dim frmPesan As New FormPesan 'Instansi dari FormPesan

    'Menampilkan form pesan dengan gaya modeless
    frmPesan.Show()

    'Menampilkan sejumlah angka pada kotak list pada FormUtama
    'Ini akan terjadi ketika FormPesan masih ditampilkan di layar
    For intHitung = 1 To 10
        listKeluaran.Items.Add(intHitung.ToString())
    Next
End Sub

Prosedur event tombolModeless_Click pada dasarnya melakukan operasi yang sama dengan prosedur tombolModal_Click. Prosedur ini menampilkan form FormPesan dan kemudian menampilkan angka 1 sampai 10 pada kotak list listKeluaran. Satu-satunya perbedaan adalah bahwa baris 6 menampilkan FormPesan dengan gaya modeless, menggunakan metode Show. Oleh karena itu, loop For…Next pada baris 10 sampai 12 dengan segera dieksekusi setelah FormPesan ditampilkan. Program tidak menunggu sampai user menutup FormPesan sebelum mengeksekusi loop.

Langkah 8: Jalankan aplikasi. Pada form utama, klik tombol Tampilkan Form Modal. Form FormPesan akan ditampilkan. Gambar 5.20 menunjukkan form-form yang ada, diposisikan sehingga Anda dapat melihat keduanya. Perhatikan bahwa loop For…Next belum dieksekusi karena Anda tidak melihat angka 1 sampai 10 ditampilkan pada form utama.

Gambar 5.20 Form FormUtama dan form FormPesan

Langkah 9: Klik tombol Tutup pada form FormPesan untuk menutup form tersebut. Sekarang lihat pada form FormUtama. Seperti ditunjukkan pada Gambar 5.21, loop For…Next dieksekusi segera setelah form FormPesan ditutup.

Gambar 5.21 FormUtama setelah FormPesan ditutup

Langkah 10: Klik pada tombol Bersihkan Kotak List untuk menghapus angka-angka dari kotak list.

Langkah 11: Klik pada tombol Tampilkan Form Modeless untuk menampilkan FormPesan dengan gaya modeless. Seperti ditunjukkan pada Gambar 5.22, perhatikan bahwa loop For…Next dieksekusi segera setelah form ditampilkan, tanpa menunggu Anda mengklik tombol Tutup pada FormPesan.

Gambar 5.22 Form FormUtama dan form FormPesan

Langkah 12: Klik tombol Tutup pada FormPesan untuk menutup form.

Langkah 13: Klik tombol FormUtama untuk mengakhiri aplikasi.


Event Load, Activated, FormClosing, dan FormClosed
Ada sejumlah event yang berkaitan dengan form. Pada bagian ini, Anda akan mempelajari event Load, Activated, FormClosing, dan FormClosed.

Event Load
Event Load telah dikenalkan pada Bab 3, tetapi dengan singkat. Tepat sebelum sebuah form ditampilkan, sebuah event Load terjadi. Jika Anda perlu mengeksekusi kode secara otomatis tepat sebelum sebuah form ditampilkan, Anda dapat menciptakan sebuah event handler Load, yang akan dieksekusi dalam merespon event Load. Untuk menuliskan kode di dalam sebuah event handler Load, klik ganda pada sembarang area dari form dimana tidak terdapat kontrol. Jendela Code akan ditampilkan mirip dengan template kode seperti berikut:

Private Sub FormUtama_Load(...) Handles MyBase.Load

End Sub

Anda bisa menyempurnakan template ini dengan statemen-statemen yang ingin Anda eksekusi ketika FormUtama dimuat.

Event Activated
Event Activated terjadi ketika user mengganti fokus ke form atau aplikasi lain. Berikut adalah dua contoh bagaimana event Activated terjadi.

  • Aplikasi A dan aplikasi B keduanya sedang berjalan, dan sebuah form pada aplikasi A memiliki fokus. User mengklik form pada aplikasi B. Ketika ini terjadi, event Activated terjadi untuk form pada aplikasi B.
  • Dimisalkan bahwa sebuah aplikasi memiliki form utama dan form kedua, dan form kedua ditampilkan dengan gaya modeless. Kemudian, setiap kali user mengklik sebuah form yang tidak memiliki fokus, sebuah event Activated akan terjadi untuk form tersebut.

Event Activated terjadi ketika sebuah form ditampilkan, setelah event Load. Jika Anda perlu mengeksekusi kode pada situasi ini, Anda dapat menciptakan sebuah event handler Activated, yang dieksekusi karena merespon event Activated. Untuk menciptakan event handler Activated, lakukan langkah-langkah ini.

  1. Pilih sebuah form pada jendel Designer.
  2. Pilih tombol Events pada toolbar jendela Properties (lihat Gambar 5.23). Tombol ini tampak seperti halilintar.
  3. Klik ganda pada nama event Activated pada jendela Properties. Sebuah template kode untuk event handler Activated akan diciptakan pada jendela Code, seperti ditunjukkan pada Gambar 5.24.

Gambar 5.23 Pilih ikon Events pada jendela Properties



Gambar 5.24 Prosedur event handler Activated


Event FormClosing
Event FormClosing terjadi ketika sebuah form dalam proses penutupan, tetapi tepat sebelum form ditutup. Event ini terjadi karena metode Close sedang dieksekusi, karena user menekan kunci Alt + F4, atau karena user menekan tombol Close Windows standar ( ) di pojok kanan atas dari form. Untuk mengeksekusi kode dalam merespon penutupan form, Anda bisa menciptakan event handler FormClosing. Berikut adalah langkah-langkah yang perlu dilakukan:
1.      Pilih sebuah form pada jendela Designer.
2.      Pilih tombol Events pada toolbar jendela Properties.
3.      Klik ganda pada nama event FormClosing pada jendela Properties.

Setelah melakukan langkah-langkah ini, sebuah template kode untuk event handler FormClosing diciptakan pada jendela Code, seperti ditunjukkan pada contoh berikut:

Private Sub FormUtama_FormClosing(sender As Object,
  e As FormClosingEventArgs) Handles MyBase.FormClosing

End Sub

Salah satu parameter dari event handler adalah e. Parameter ini memiliki properti Boolean dengan nama Cancel. Jika Anda menetapkan e.Cancel menjadi True, maka form akan ditutup. Kode berikut menunjukkan contoh dari teknik ini:

Private Sub FormUtama_FormClosing(sender As Object,
  e As FormClosingEventArgs) Handles MyBase.FormClosing

    If MessageBox.Show("Anda yakin?", "Konfirmasi",
      MessageBoxButtons.YesNo) = DialogResult.Yes Then
        e.Cancel = False 'Lanjutkan menutup form
    Else
        e.Cancel = True 'Tidak menutup form
    End If

End Sub

Event FormClosed
Event FormClosed terjadi setelah sebuah form ditutup. Jika Anda perlu mengeksekusi kode segera setelah sebuah form ditutup, Anda perlu menciptakan sebuah event handler FormClosed dengan melakukan langkah-langkah berikut:
1.      Pilih sebuah form pada jendela Designer.
2.      Pilih tombol Events pada toolbar jendela Properties.
3.      Klik ganda pada nama event FormClosed pada jendela Properties.

Setelah melakukan langkah-langkah ini, sebuah template kode untuk event handler FormClosed akan diciptakan pada jendela Code:

Ketika Anda menggunakan metode Me.Close untuk menutup form startup dari sebuah aplikasi, aplikasi tersebut memicu event FormClosing dan FormClosed.

Mengakses Kontrol Pada Form Berbeda
Setelah Anda menciptakan sebuah instansi form, Anda dapat mengakses setiap kontrol pada form tersebut di dalam kode. Sebagai contoh, dimisalkan bahwa sebuah aplikasi memiliki form dengan nama FormSalam, dan ia memiliki sebuah kontrol Label dengan nama labelPesan. Kode berikut menunjukkan bagaimana Anda dapat menciptakan sebuah instansi dari FormSelamat, menugaskan sebuah nilai kepada properti Text dari kontrol labelPesan, dan kemudian menampilkan form tersebut dengan gaya modal:

Dim frmSelamat As New FormSelamat
frmSelamat.labelPesan.Text = "Selamat Siang!"
frmSelamat.ShowDialog()

Statemen pertama menciptakan sebuah instansi dari FormSelamat dan menugaskan alamatnya kepada variabel frmSelamat. Pada titik ini, form eksis di dalam memori, tetapi ia belum ditampilkan pada layar. Statemen kedua menugaskan string “Selamat Siang!” kepada properti Text dari kontrol labelPesan. Perhatikan bahwa nama kontrol diawali dengan frmSelamat, yang diikuti dengan sebuah titik. Ini memberitahu Visual Basic bahwa kontrol tidak berada pada form sekarang, tetapi pada form yang direferensi oleh frmSelamat. Statemen ketiga memanggil metode ShowDialog untuk menampilkan form tersebut di layar. Ketika form ditampilkan di layar, kontrol labelPesan akan menampilkan teks Selamat Siang!.


Pada Tutorial 5.3, Anda berkesempatan untuk menciptakan sebuah aplikasi form jamak dimana di dalamnya kode pada satu form menciptakan sebuah instansi dari form lain dan menugaskan nilai-nilai kepada kontrol-kontrol pada form tersebut.

Tutorial 5.3: Mengakses Kontrol Pada Form Berbeda
Pada tutorial ini, Anda akan menciptakan sebuah aplikasi yang dapat dipakai user untuk memilih makanan dari form utama pada aplikasi, dan kemudian menampilkan form kedua yang menunjukkan informasi nutrisi dari makanan yang dipilih.
Langkah 1: Ciptakanlah sebuah projek Windows Forms Application baru dengan nama Fakta Makanan.

Langkah 2: Pada jendela Solution Explorer, ganti nama Form1.vb dengan FormUtama.vb. (Klik kanan pada Form1.vb dan kemudian pilih Rename dari menu popup). Pengubahan nama file form menjadi FormUtama.vb akan mengubah nama form menjadi FormUtama. Jendela Solution Explorer akan ditampilkan seperti pada Gambar 5.25.

Gambar 5.25 Jendela Solution Explorer setelah mengubah Form1.vb menjadi FormUtama.vb

Langkah 3: Pada jendela Designer, bangunlah form FormUtama dengan kontrol-kontrol yang ditunjukkan pada Gambar 5.26.

Langkah 4: Lakukan langkah-langkah berikut untuk menciptakan form lain dengan nama FormNutrisi di dalam projek:
·         Klik PROJECT pada batang menu, kemudian pilih Add Windows Form….
·         Jendela Add New Item akan ditampilkan. Ketikkan FormNutrisi.vb sebagai nama form.
·         Klik tombol Add.
Gambar 5.26 Form FormUtama

Langkah 5: Pada jendela Designer, bangunlah form FormNutrisi dengan kontrol-kontrol yang ditunjukkan pada Gambar 5.27. Kontrol-kontrol label diberi nama labelMakanan, labelKalori, labelLemak, dan labelKarbo yang memiliki pengaturan properti berikut:
·         AutoSize ditetapkan False.
·         BorderSytle ditetapkan Fixed3D.

Gambar 5.27 Form FormNutrisi

Langkah 6: Buka FormUtama pada jendela Designer, dan klik ganda pada tombol Tampilkan Fakta Makanan untuk menciptakan sebuah template kode untuk event handler Click. Sempurnakan event handler tersebut dengan menuliskan kode tebal berikut, yang ditunjukkan pada baris 2 sampai baris 24. (Jangan ketik nomor baris, karena ia hanya untuk referensi).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub tombolTampil_Click(…) Handles tombolTampil.Click
    'Menciptakan sebuah instansi dari FormNutrisi
    Dim frmNutrisi As New FormNutrisi

    'Menemukan tombol radio terseleksi
    If radPisang.Checked = True Then
        frmNutrisi.labelMakanan.Text = "1 Pisang"
        frmNutrisi.labelKalori.Text = "100"
        frmNutrisi.labelLemak.Text = "0.4"
        frmNutrisi.labelKarbo.Text = "27"
    ElseIf radPopcorn.Checked = True Then
        frmNutrisi.labelMakanan.Text = "1 Cangkir Popcorn"
        frmNutrisi.labelKalori.Text = "31"
        frmNutrisi.labelLemak.Text = "0.4"
        frmNutrisi.labelKarbo.Text = "6"
    ElseIf radMuffin.Checked = True Then
        frmNutrisi.labelMakanan.Text = "1 Kue Muffin Besar"
        frmNutrisi.labelKalori.Text = "385"
        frmNutrisi.labelLemak.Text = "9"
        frmNutrisi.labelKarbo.Text = "67"
    End If

    'Menampilkan FormNutrisi
    frmNutrisi.ShowDialog()
End Sub

Amati kode lebih dekat. Baris 3 menciptakan sebuah instansi dari form FormNutrisi di dalam memori dan menugaskan alamatnya kepada variabel frmNutrisi. Ingat bahwa meskipun form telah diciptakan di dalam memori, ia belum ditampilkan pada layar.

Statemen If…Else pada baris 6 menentukan apakah tombol radio radPisang dipilih atau tidak. Jika ya, statemen-statemen pada baris 7 sampai baris 10 menggunakan variabel frmNutrisi untuk menugaskan nilai-nilai kepada kontrol-kontrol Label pada form FormNutrisi. Nilai-nilai yang ditugaskan adalah nilai-nilai nutrisi untuk sebuah pisang.

Jika tombol radio radPisang tidak diseleksi, klausa ElseIf…Then pada baris 11 menentukan apakah tombol radio radPopcorn diseleksi atau tidak. Jika ya, statemen-statemen pada baris 12 sampai baris 15 menggunakan variabel frmNutrisi untuk menugaskan nilai-nilai kepada kontrol-kontrol Label pada form FormNutrisi. Nilai-nilai yang ditugaskan adalah nilai-nilai nutrisi untuk satu cangkir PopCorn.

Jika tidak satupun baik tombol radio radPisang atau tombol radio radPopcord diseleksi, maka klausa ElseIf…Then pada baris 16 menentukan apakah tombol radio radMuffin diseleksi atau tidak. Jika ya, statemen-statemen pada baris 17 sampai baris 20 menggunakan variabel frmNutrisi untuk menugaskan nilai-nilai kepada kontrol-kontrol Label pada form FormNutrisi. Nilai-nilai yang ditugaskan adalah nilai-nilai nutrisi untuk satu kue Muffin besar.

Baris 24 menggunakan variabel frmNutrisi untuk memanggil metode ShowDialog. Ketika statemen ini dieksekusi, ia akan menampilkan form FormNutrisi pada layar dengan gaya modal.

Langkah 7: Ciptakanlah event handler Click untuk tombol tombolKeluar pada form FormUtama:

Private Sub tombolKeluar_Click(…) Handles tombolKeluar.Click
    'Menutup form
    Me.Close()
End Sub

Langkah 8: Buka FormNutrisi pada jendela Designer, dan klik ganda pada tombol Tutup untuk menciptakan sebuah template kode untuk event handler Click. Sempurnakan event handler tersebut dengan menuliskan kode tebal berikut:

Private Sub tombolTutup_Click(…) Handles tombolTutup.Click
    'Menutup form
    Me.Close()
End Sub

Langkah 9: Simpan projek dan kemudian jalankan. FormUtama akan ditampilkan, seperti ditunjukkan di sisi kiri dari Gambar 5.28. Dengan tombol radio 1 Pisang diseleksi, klik pada tombol Tampilkan Fakta Makanan. Form FormNutrisi akan ditampilkan, seperti ditunjukkan di sisi kanan dari Gambar 5.28.

Gambar 5.28 Form FormUtama dan FormNutrisi ditampilkan


Langkah 10: Pada form FormNutrisi, klik pada tombol Tutup. Ini akan menutup form FormNutrisi. Coba untuk memilih tombol radio lain pada form FormUtama dan klik pada tombol Tampilkan Fakta Makanan untuk melihat informasi nutrisi pada tiap item. Ketika sudah selesai, Anda klik tombol Keluar pada form FormUtama untuk mengakhiri aplikasi.


Variabel Level-Kelas Pada Form
Meskipun variabel level-kelas pada sebuah form dapat diakses oleh semua statemen di dalam file form, ia tidak dapat diakses secara default oleh statemen-statemen di luar file form. Sebagai contoh, diasumsikan bahwa sebuah projek memiliki suatu form dengan nama FormJumlah, yang memiliki deklarasi variabel level-kelas berikut:

Dim dblTotal As Double 'Variabel level-kelas

Projek yang sama memiliki form lain yang menggunakan statemen-statemen berikut:

Dim frmJumlah As New FormJumlah
frmJumlah.dblTotal = 100.0

Meskipun statemen penugasan memiliki nama utuh dari dblTotal dengan mengawalinya dengan nama variabel objek, statemen itu tetap tidak bisa mengaksesnya karena variabel level-kelas dideklarasikan private secara default. Statemen tersebut akan menyebabkan error ketika projek dikompilasi.

Adalah memungkinkan untuk membuat variabel level-kelas tersedia bagi metode-metode di luar kelas. Ini dilakukan menggunakan katakunci Public. Berikut adalah contohnya:

Public dblTotal As Double ' Variabel level-kelas

Meskipun variabel level-kelas secara otomatis dideklarasikan private oleh statemen Dim, Anda sebaiknya mendeklarasikannya private secara eksplisit menggunakan katakunci Private. Berikut adalah contohnya:

Private dblTotal As Double

Menggunakan Prosedur Private dan Public Pada Form
Ingat dari Bab 6 bahwa sebuah prosedur atau fungsi dapat diawali dengan penspesifikasi akses opsional, seperti Private atau Public. Ketika sebuah prosedur dilabel Private, ia hanya dapat dieksekusi oleh statemen-statemen pada form yang sama. Ketika sebuah prosedur dilabel Public, ia juga dapat dieksekusi oleh statemen-statemen di luar form. Jika Anda tidak menyediakan penspesifikasi akses, prosedur didekalrasi Public secara default. Pada projek yang menggunakan form jamak, Anda sebaiknya selalu mendeklarasikan prosedur-prosedur private di dalam sebuah form kecuali jika Anda secara spesifik ingin statemen-statemen di luar form dapat mengeksekusi prosedur tersebut.

Menggunakan Sebuah Form Pada Lebih Dari Satu Projek
Setelah Anda menciptakan sebuah form, Anda tidak harus menciptakannya kembali untuk menggunakannya pada projek lain. Setelah sebuah form disimpan ke dalam suatu file, ia dapat dipakai pada projek lain. Ikuti langkah-langkah ini untuk menambahkan form yang telah ada pada sebuah projek:
1.      Dengan projek penerima dibuka pada Visual Studio, klik PROJECT pada batang menu, dan kemudian klik pada Add Existing Item.
2.      Kotak dialog Add Existing Item akan ditampilkan. Gunakan kotak dialog untuk mencari file form yang ingin Anda tambahkan pada projek. (Ingat bahwa file form diakhiri dengan ekstensi .vb). Ketika Anda menemukan file yang dicari, pilih file tersebut dan klik pada tombol Open. Sebuah salinan dari form sekarang ditambahkan pada projek dan disalin ke folder projek Anda.


5.2 Modul
KONSEP: Setiap modul memuat kode, yaitu deklarasi dan prosedur, yang digunakan oleh file-file lain pada sebuah projek.

Ketika Anda menciptakan sebuah aplikasi besar dengan beberapa form (form jamak), Anda biasanya akan menemukan bahwa kode pada beberapa form yang berbeda perlu memanggil fungsi atau prosedur yang sama. Sebagai contoh, dimisalkan bahwa Anda sedang menciptakan sebuah aplikasi untuk bisnis ritel dan pada salah satu form pada aplikasi tersebut Anda menuliskan sebuah fungsi yang menghitung pajak penjualan pada pembelian tertentu. Selanjutnya, Anda menemukan bahwa beberapa event handler di sejumlah form perlu memanggil fungsi yang sama. Apakah Anda menduplikasi fungsi pajak pada tiap form yang perlu memanggilnya? Hal itu bisa saja dilakukan. Tetapi pendekatan yang lebih baik adalah dengan menyimpan fungsi pajak penjualan di sebuah lokasi dimana semua form dapat mengaksesnya. Kemudian, Anda bisa mereduksi kode dupliksi, dan membuat pengembangan apliksi lebih mudah ketika Anda ingin memodifikasi fungsi pajak penjualan tersebut. Pada Visual Basic, lokasi semacam itu dikenal dengan modul.

Modul adalah sebuah file Visual Basic yang hanya memuat kode. Ia hanya memuat prosedur, fungsi, dan deklarasi variabel dan konstanta. Sembarang prosedur Public, fungsi, dan deklarasi yang ditempatkan di dalam sebuah modul adalah berwatak global, yang berarti bahwa ia dapat diakses oleh semua form pada projek yang sama. File modul menggunakan ekstensi .vb. Ketika sebuah modul ditambahkan ke dalam projek, namanya akan ditampilkan pada jendela Solution Explorer bersama dengan entri-entri lain untuk file-file form.


Nama Modul dan File Modul
Isi dari sebuah modul diawali dengan statemen Module dan diakhiri dengan statemen End Module. Bentuk umumnya adalah sebagai berikut:

Module NamaModul
   [Isi Modul]
End Module

NamaModul adalah nama dari modul. Ini dapat berupa sembarang pengenal yang valid. Jika Anda hanya memiliki satu modul pada projek Anda, Anda sebaiknya memberikannya nama yang dengan jelas berkaitan dengan projek tersebut. Sebagai contoh, jika sebuah projek diberi nama Entri Pesanan, maka modulnya bisa diberikan nama ModulEntriPesanan. Adalah dimungkinkan untuk memiliki sejumlah modul pada sebuah projek. Sebagai contoh, Anda bisa memiliki satu modul yang memuat prosedur-prosedur matematika dan modul lain yang memuat prosedur-prosedur untuk membaca informasi dari sebuah database. Jika projek Anda memiliki sejumlah modul, berikan setiap modul sebuah nama yang menjelaskan tujuannya.

Ketika Anda menciptakan sebuah modul, kodenya disimpan di dalam sebuah file yang dinamai dengan ekstensi .vb. Umumnya, nama file adalah nama sama dengan modul. Oleh karena itu, sebuah modul dengan nama ModulEntriPesanan disimpan dengan file ModulEntriPesanan.vb.

Lihat contoh modul berikut. Kode berikut menunjukkan isi dari sebuah modul dengan nama MatekRitel. (Nomor baris bukan bagian dari modul).

1
2
3
4
5
6
7
8
9
Module MatekRitel
    'Konstanta globa untuk laju pajak
    Public Const decLAJU_PAJAK As Decimal = 0.07D

    'Fungsi PajakPenjualan menghasilkan pajak penjualan pada pembelian tertentu
    Public Function PajakPenjualan(ByVal decBeli As Decimal) As Decimal
        Return decBeli * decLAJU_PAJAK
    End Function
 End Module

Baris 23 mendeklarasikan sebuah konstanta level-modul dengan nama decLAJU_PAJAK. (Dikatakan level-modul karena ia tidak dideklarasikan di dalam prosedur atau fungsi). Perhatikan bahwa deklarasi diawali dengan katakunci Public. Ini berarti bahwa konstanta tersebut dapat diakses oleh kode di luar modul. Hasilnya, kode di sembarang form pada projek yang sama dapat mengakses konstanta ini.

Pada baris 6 sampai baris 8, sebuah fungsi dengan nama PajakPenjualan diberikan. Perhatikan bahwa header fungsi pada baris 6 juga diawali dengan kata Public. Ini berarti bahwa fungsi ini dapat dipanggil oleh kode di luar modul. Hasilnya, kode pada sembarang form pada projek yang sama dapat memanggil fungsi ini.

Prosedur, fungsi, dan deklarasi dapat dideklarasikan sebagai Private, yang berarti bahwa ia dapat diakses hanya oleh kode pada modul yang sama.

Menambahkan Modul
Ikuti langkah-langkah berikut untuk menambahkan sebuah modul pada projek:
1.      Klik PROJECT pada batang menu dan kemudian klik Add Module. Jendela Add New Item ditampilkan pada Gambar 5.29. Perhatikan bahwa pada gambar tersebut, nama modul adalah Module1.vb yang diberikan pada kotak teks Name. Pada contoh ini, Module1.vb adalah nama default untuk file yang di dalamnya modul ini akan disimpan, dan Modul1 adalah nama default untuk modul.

Gambar 5.29 Kotak dialoh Add New Item

2.      Ubah nama default yang ditampilkan pad kotak teks Name menjadi nama yang Anda ingin berikan pada file modul baru. Sebagai contoh, jika Anda ingin menamai modul baru tersebut dengan ModulUtama, ketikkan ModulUtama.vb pada kotak teks Name.
3.      Klik tombol Add.

Sebuah modul kosong baru akan ditambahkan pada projek Anda. Modul ditampilkan pada jendela Code, dan sebuah entri untuk modul baru ini ditampilkan pada jendela Solution Explorer. Jendela pada Gambar 5.30 ini menunjukkan dua form dan satu modul: FormUtama, FormNutrisi, dan ModulUtama.

Gambar 5.30 Jendela Solution Explorer yang menunjukkan dua form dan satu modul

Setelah Anda menambahkan sebuah modul pada projek Anda, Anda bisa menuliskan kode secara langsung menggunakan jendela Code.


Variabel Level-Modul
Variabel yang dideklarasikan di dalam sebuah modul, tetapi di luar sebuah fungsi atau prosedur, dikenal sebagai variabel level-modul. Aturan-aturan yang sama tentang skop dari variabel level-kelas di dalam sebuah form berlaku untuk variabel level-modul di dalam sebuah modul.

  • Variabel level-modul di dalam sebuah modul dapat diakses oleh prosedur atau fungsi pada modul tersebut.
  • Jika variabel level-modul dideklarasikan dengan katakunci Dim atau Private, maka variabel itu tidak dapat diakses oleh statemen-statemen di luar modul. Variabel semacam itu memiliki skop modul.
  • Jika variabel level-modul dideklarasikan dengan katakunci Public, maka variabel itu dapat diakses oleh statemen-statemen di luar modul.

Variabel level-modul yang dideklarasikan Public juga dikenal dengan variabel global karena ia dapat diakses secara global, oleh sembarang statemen pada aplikasi.


Tutorial 5.4 memeriksa sebuah aplikasi yang menggunakan suatu modul.

Tutorial 5.4: Memeriksa Aplikasi yang Menggunakan Sebuah Modul
Pada tutorial ini, Anda akan memeriksa aplikasi Konverter, yang melakukan konversi-konversi sederhana antara unit metrik dan unit English. Aplikasi ini memiliki tiga form dan sebuah modul yang memuat semua fungsi konversi.
Langkah 1: Buka projek Konverter.

Langkah 2: Sebelum memeriksa kode aplikasi, Anda perlu melihat bagaimana aplikasi ini dijalankan. Jalankan apliksi. Form utama akan ditampilkan, seperti ditunjukkan pada Gambar 5.31.

Gambar 5.31 Form utama dari aplikasi

Gambar 5.32 Form utama dan form Meter Ke English dari aplikasi


Langkah 3: Klik pada tombol Konversi Meter. Form Meter Ke English akan ditampilkan, seperti ditampilkan di sisi kanan dari Gambar 5.32. Form ini memiliki sebuah kontrol TextBox untuk mengetikkan jumlah meter. Masukkan sebuah nilai pada TextBox, dan klik pada tombol Konversi Ke Inci. Sebuah kotak pesan akan ditampilkan yang menunjukkan nilai inci ekivalen. Tutup kotak pesan tersebut, dan kemudian coba klik tombol Konversi Ke Kaki dan Konversi Ke Yard. Ketika selesai, klik pada tombol Tutup untuk menutup form Meter Ke English.

Langkah 4: Kembali ke form utama, klik pada tombol Konversi Inci. Form Inci Ke Metrik akan ditampilkan, seperti ditunjukkan di sisi kanan dari Gambar 5.33. Form ini memiliki sebuah TextBox agar Anda bisa memasukkan jumlah inci. Masukkan sebuah nilai pada TextBox, dan kemudian klik pada tombol Konversi Ke Milimeter. Sebuah kotak pesan akan ditampilkan yang menunjukkan jumlah milimeter ekivalen. Tutup kotak pesan, dan kemudian coba klik tombol Konversi Ke Sentimeter dan Konversi Ke Meter. Ketika selesai, klik tombol Tutup untuk menutup form Inci Ke Metrik.

Gambar 5.33 Form utama dan form Inci Ke Metrik dari aplikasi

Langkah 5: Kembali ke form utama, klik pada tombol Keluar untuk mengakhiri aplikasi.
Langkah 6: Lihat pada Solution Explorer, seperti ditunjukkan pada Gambar 5.34, dan perhatikan bahwa projek memiliki file-file .vb verikut:
·         FormInciKeMeter.vb: Ini adalah file form untuk form dengan nama FormInciKeMetrik.
·         FormUtama.vb: Ini adalah file form untuk form dengan nama FormUtama.
·         ModulMatek.vb: Ini adalah sebuah file modul yang memuat fungsi-fungsi dan konstanta-konstanta untuk konversi matematika.
·         FormMeterKeEnglish.vb: Ini adalah file form untuk form dengan nama FormMeterKeEnglish.

Gambar 5.34 Jendela Solution Explorer


Langkah 7: Klik ganda pada entri untuk ModulMatek.vb pada jendela Solution Explorer. Ini akan membuka file ModulMatek.vb pada jendela Code. Isi file ditampilkan di sini, dengan nomor baris ditambahkan untuk referensi.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Module ModulMatek
    'Konstanta-konstanta untuk faktor-faktor konversi meter ke English
    Public Const dblMETER_KE_INCI As Double = 39.37
    Public Const dblMETER_KE_KAKI As Double = 3.28
    Public Const dblMETER_KE_YARD As Double = 1.09

    'Konstanta-konstanta untuk faktor-faktor konversi inci ke metrik
    Public Const dblINCI_KE_MM As Double = 25.4
    Public Const dblINCI_KE_CM As Double = 2.54
    Public Const dblINCI_KE_METER As Double = 0.0254

    'Fungsi MeterKeInci menerima jumlah meter sebagai argumennya
    'dan menghasilkan jumlah inci ekivalen sebagai nilai balik.
    Public Function MeterKeInci(ByVal dblMeter As Double) As Double
        Return dblMeter * dblMETER_KE_INCI
    End Function

    'Fungsi MeterKeKaki menerima jumlah meter sebagai argumennya
    'dan menghasilkan jumlah kaki ekivalen sebagai nilai balik.
    Public Function MeterKeKaki(ByVal dblMeter As Double) As Double
        Return dblMeter * dblMETER_KE_KAKI
    End Function

    'Fungsi MeterKeYard menerima jumlah meter sebagai argumennya
    'dan menghasilkan jumlah yard ekivalen sebagai nilai balik.
    Public Function MeterKeYard(ByVal dblMeter As Double) As Double
        Return dblMeter * dblMETER_KE_YARD
    End Function

    'Fungsi InciKeMM menerima jumlah inci sebagai argumennya
    'dan menghasilkan jumlah milimeter ekivalen sebagai nilai balik.
    Public Function InciKeMM(ByVal dblInci As Double) As Double
        Return dblInci * dblINCI_KE_MM
    End Function

    'Fungsi InciKeCM menerima jumlah inci sebagai argumennya
    'dan menghasilkan jumlah centimeter ekivalen sebagai nilai balik.
    Public Function InciKeCM(ByVal dblInches As Double) As Double
        Return dblInches * dblINCI_KE_CM
    End Function

    'Fungsi InciKeMeter menerima jumlah inci sebagai argumennya
    'dan menghasilkan jumlah meter ekivalen sebagai nilai balik.
    Public Function InciKeMeter(ByVal dblInci As Double) As Double
        Return dblInci * dblINCI_KE_METER
    End Function
End Module

Modul ModulMatek memuat semua kode untuk fungsi-fungsi konversi aplikasi. Simpulan kode tersebut diberikan berikut. Perhatikan bahwa semua konstanta dan fungsi di dalam file dideklarasikan Public, yang membuatnya dapat diakses secara global di dalam projek.
Baris 3 sampai baris 5 mendeklarasikan sejumlah konstanta yang digunakan dalam formula-formula untuk mengkonversi meter menjadi unit-unit English.
Baris 8 sampai baris 10 mendeklarasikan sejumlah konstanta yang dipakai dalam formula-formula untuk mengkonversi inci menjadi unit-unit metrik.

  • Fungsi MeterKeInci berada pada baris 14 sampai baris 16. Fungsi ini menerima sejumlah meter sebagai argumennya dan menghasilkan jumlah inci ekivalen sebagai nilai baliknya.
  • Fungsi MeterKeKaki berada pada baris 20 sampai baris 22. Fungsi ini menerima sejumlah meter sebagai argumennya dan menghasilkan jumlah kaki ekivalen sebagai nilai baliknya.
  • Fungsi MeterKeYard berada pada baris 26 sampai baris 28. Fungsi ini menerima sejumlah meter sebagai argumennya dan menghasilkan jumlah yard ekivalen sebagai nilai baliknya.
  • Fungsi InciKeMM berada pada baris 32 sampai baris 34. Fungsi ini menerima sejumlah inci sebagai argumennya dan menghasilkan jumlah milimeter ekivalen sebagai nilai baliknya.
  • Fungsi InciKeCM berada pada baris 38 sampai baris 40. Fungsi ini menerima sejumlah inci sebagai argumennya dan menghasilkan jumlah centimeter ekivalen sebagai nilai baliknya.
  • Fungsi InciKeMeter berada pada baris 44 sampai baris 46. Fungsi ini menerima sejumlah inci sebagai argumennya dan menghasilkan jumlah meter ekivalen sebagai nilai baliknya.

Langkah 8: Sekarang, lihat bagaimana fungsi-fungsi dalam ModulMatek.vb dipanggil oleh statemen-statemen pada form-form dari aplikasi. Buka form FormMeterKeEnglish pada jendela Code. (Salah satu cara melakukannya adalah dengan mengklik-kanan FormMeterKeEnglish pada jendela Solution Explorer, dan kemudian pilih View Code dari menu popup). Gambar 5.35 menunjukkan event handler tombolKonversiKeInci_Click. Perhatikan statemen yang memanggil fungsi MeterKeInci, yang disimpan di dalam file ModulMatek.vb.

Gambar 5.35 Pemanggilan terhadap fungsi MeterKeInci pada event handler tombolKonversiKeInci_Click

Gulung ke bawah untuk melihat tombolKonversiKeKaki_Click, yang ditampilkan pada Gambar 5.36. Perhatikan statemen yang memanggil fungsi MeterKeKaki, yang disimpan di dalam file ModulMatek.vb.

Sekarang gulung ke bawah untuk melihat tombolKonversiKeYard_Click, yang ditampilkan pada Gambar 5.37. Perhatikan statemen yang memanggil fungsi MeterKeYard, yang disimpan di dalam file ModulMatek.vb.

Gambar 5.36 Pemanggilan terhadap fungsi MeterKeKaki pada event handler tombolKonversiKeKaki_Click

Gambar 5.37 Pemanggilan terhadap fungsi MeterKeYard pada event handler tombolKonversiKeYard_Click


Langkah 9: Sekarang, lihat bagaimana fungsi-fungsi dalam ModulMatek.vb dipanggil oleh statemen-statemen pada form-form dari aplikasi. Buka form FormInciKeMetrik pada jendela Code. (Salah satu cara melakukannya adalah dengan mengklik-kanan FormInciKeMetrik pada jendela Solution Explorer, dan kemudian pilih View Code dari menu popup). Gambar 5.38 menunjukkan event handler tombolKonversiKeMiliMeter_Click. Perhatikan statemen yang memanggil fungsi InciKeMM, yang disimpan di dalam file ModulMatek.vb.

Gulung ke bawah untuk melihat tombolKonversiKeSentimeter_Click, yang ditampilkan pada Gambar 5.39. Perhatikan statemen yang memanggil fungsi InciKeCM, yang disimpan di dalam file ModulMatek.vb.

Sekarang gulung ke bawah untuk melihat tombolKonversiKeMeter_Click, yang ditampilkan pada Gambar 5.40. Perhatikan statemen yang memanggil fungsi InciKeMeter, yang disimpan di dalam file ModulMatek.vb.


Gambar 5.38 Pemanggilan terhadap fungsi InciKeMM pada event handler tombolKonversiKeMiliMeter_Click

Gambar 5.39 Pemanggilan terhadap fungsi InciKeCM pada event handler tombolKonversiKeSentimeter_Click


Gambar 5.40 Pemanggilan terhadap fungsi InciKeMeter pada event handler tombolKonversiKeMeter_Click



Menggunakan Sebuah Modul Pada Lebih Dari Satu Projek
Adalah dimungkinkan untuk menggunakan sebuah modul pada lebih dari satu projek. Sebagai contoh, dimisalkan bahwa Anda telah menciptakan sebuah projek dengan sebuah modul yang memuat sejumlah fungsi matematika. Kemudian, Anda mendapati bahwa diri Anda sekarang sedang mengerjakan sebuah projek baru yang memerlukan banyak fungsi yang sama. Daripada menuliskan fungsi-fungsi (atau menyalinnya), Anda dapat menambahkan modul pada projek baru tersebut. Lakukan langkah-langkah berikut untuk menambahkan sebuah modul standar yang telah ada pada suatu projek:

  1. Klik PROJECT pada batang menu, dan klik submenu Add Existing Item.
  2. Kotak dialog Add Existing Item akan ditampilkan. Gunakan kotak dialog untuk mencari file modul yang ingin Anda tambahkan pada projek. Setelah Anda menemukannya, pilih file tersebut dan klik tombol Open. Modul sekarang telah ditambahkan pada projek.

5.3 Menu
KONSEP: Visual Basic dapat dipakai untuk menciptakan sebuah sistem yang memuat menu-menu drop-down untuk sembarang form pada aplikasi Anda.

Pada aplikasi-aplikasi yang telah Anda pelajari sejauh ini, user melakukan pekerjaan-pekerjaan dengan mengklik tombol-tombol. Ketika sebuah aplikasi memiliki sejumlah operasi yang bisa dipilih oleh user dari menu, sebuah sistem menu umumnya digunakan menggantikan tombol-tombol. Sistem menu adalah sekumpulan perintah yang diorganisir di dalam satu atau lebih menu drop-down. Menu designer dapat Anda pakai untuk secara visual menciptakan sebuah sistem menu yang diinginkan.

Sebelum Anda mempelajari bagaiman menggunakan menu designer, Anda perlu belajar tentang komponen-komponen umum dari sebuah sistem menu. Lihat Sistem Menu Contoh yang ditunjukkan pada Gambar 5.41.

Gambar 5.41 Sistem Menu Contoh

Sistem menu pada gambar tersebut memuat item-item berikut:

  • Nama menu: Setiap menu drop-down memiliki nama. Nama menu dicantumkan pada sebuah strip menu yang ditampilkan tepat di bawah batang judul dari form. Nama menu pada Gambar 5.41 adalah File, Edit, dan Help. User dapat mengaktivasi sebuah menu dengan mengklik nama menu. Pada gambar, menu Edit diaktivasi. Item-item menu dapat pula ditugasi kunci-kunci akses (seperti F untuk File, E untuk Edit, dan H untuk Help). User dapat pula mengaktivasi sebuah menu dengan menekan kunci Alt + kunci aksesnya.
  • Perintah menu: Menu memiliki perintah-perintah. User menyeleksi sebuah perintah dengan mengkliknya, menekan kunci aksesnya, atau menekan kunci shortcut-nya.
  • Kunci shortcut: Kunci shortcut adalah sebuah kunci atau kombinasi kunci yang menyebabkan perintah menu dieksekusi. Kunci shortcut ditampilkan pada sebuah menu di sisi kanan dari perintah terkait. Sebagai contoh, pada Gambar 5.41, Ctrl + C adalah kunci shortcut untuk perintah Copy. Ini merupakan perbedaan antara kunci shortcut dan kunci akses: kunci akses dari perintah menu hanya bekerja ketika menu terbuka, tetapi kunci shortcut dapat dieksekusi kapanpun ketika form aktif.
  • Perintah menu disabled: Anda dapat membuat sebuah perintah dengan status disabled ketika Anda tidak menginginkan user untuk memilihnya. Sebuah perintah disabled ditampilkan dengan huruf abu-abu dan tidak dapat diseleksi. Hal ini dilakukan dengan menetapkan properti Enabled dari perintah tertentu menjadi False. Pada Gambar 5.41, perintah Undo dibuat disabled.
  • Perintah menu dicentang (checked): Sebuah perintah menu checked umumnya adalah perintah yang memiliki tanda centang di sisi kiri dari perintah, yang mengindikasikan opsi diaktifkan. Hal ini dilakukan dengan menetapkan properti Checked menjadi True. Ketika tidak ada centang ditampilkan di sisi kiri dari perintang, opsi dinonaktifkan. Pada Gambar 5.41, Autosave adalah sebuah perintah menu checked.
  • Submenu: Beberapa perintah pada sebuah menu sebenarnya nama dari sub-submenu. Anda dapat mengatakan bahwa sebuah perintah adalah nama dari suatu submenu ketika simbol panah kanan ( ) ditampilkan di sisi kanannya. Pengaktivasian nama dari sebuah submenu akan menampilkan submenu. Sebagai contoh, pada Gambar 5.41, pengklikan perintah Sort menyebabkan sebuah submenu ditampilkan.
  • Batang pemisah (separator bar): Batang pemisah adalah sebuah batang horisontal yang dipakai untuk memisahkan sekelompok perintah pada menu. Pada Gambar 5.41, batang pemisah dipakai untuk memisahkan perintah Copy, Cut, dan Paste menjadi satu kelompok, dan perintah Find dan Replace menjadi satu grup.

Gambar 5.42 Bagian Menus & Toolbars dari jendela Toolbox


Kontrol MenuStrip
Sistem menu dari sebuah aplikasi dikonstruksi dengan kontrol MenuStrip. Ketika form Anda ditampilkan pada jendela Designer, temukan bagian Menus & Toolbars dari jendela Toolbox (Gambar 5.42) dan klik ganda pada ikon MenuStrip. Ikon MenuStrip akan ditampilkan di sisi bawah pada jendela Designer, dengan nama default MenuStrip1.

Ketika kontrol MenuStrip diseleksi, Anda akan melihat kata Type Here ditampilkan pada sebuah strip di atas form. Anda akan memanggilnya dengan nama menu designer, sebuah perangkat yang dapat Anda pakai untuk secara visual mengedit isi menu. Anda hanya perlu mengklik di sisi dalam dari strip ini dan mengetikkan nama item yang ingin Anda tampilkan pada menu. Gambar 5.43 menunjukkan sebuah contoh dimana sebuah menu File telah ditambahkan. Seperti ditunjukkan pada gambar, Anda dapat menugaskan kunci akses pada nama menu dengan mengetikkan simbol & di depan karakter yang menjadi kunci akses.

Gambar 5.43 Menyisipkan teks pada item menu

Setiap kali Anda menambahkan sebuah item pada menu pada menu designer, Anda menciptakan sebuah objek ToolStripMenuItem. Ketika Anda memilih sebuah objek ToolStripMenuItem, Anda dapat melihat properti-propertinya yang dicantumkan pada jendela Properties. Teks yang Anda ketikkan untuk item pada menu designer akan ditampilkan di dalam properti Text dari objek.

Objek ToolStripMenuItem diberikan nama default (disimpan pada properti Name) ketika ia diciptakan, tetapi direkomendasikan bahwa Anda perlu mengubahnya untuk merefleksikan posisi setiap item pada hierarki sistem menu. Sebagai contoh, lihat sketsa sistem menu pada Gambar 5.44. Tabel 5.1 mencantumkan nama-nama yang direkomendasikan untuk objek-objek ToolStripMenuItem pada sistem menu ini, berikut dengan isi dari properti Text masing-masing.

Gambar 5.44 Sketsa sistem menu contoh

Tabel 5.1 Objek-objek ToolStripMenuItem dan properti Text masing-masing
Nama ToolStripMenuItem
Properti Text
mnuFile
mnuFileSave
mnuFilePrint
mnuFileExit
mnuHelp
mnuHelpAbout
&File
&Save
&Print
E&xit
&Help
&About

Tiap nama item menu yang dicantumkan pada Tabel 5.1 mengindikasikan di mana di dalam hierarki menu setiap kontrol berada. Nama dari tiap objek yang berkaitan dengan perintah-perintah pada menu File semuanya diawali dengan mnuFile. Sebagai contoh, perintah Save pada menu File dinamai dengan mnuFileSave. Sama halnya, objek untuk perintah About pada menu Help dinamai sebagai mnuHelpAbout.

Setiap objek ToolStripMenuItem dapat merespon event. Anda dapat menuliskan prosedur event Click untuk objek-objek tersebut.

Bagaimana Menggunakan Menu Designer
Setelah Anda menempatkan kontrol MenuStrip pada form, Anda dapat menggunakan menu designer untuk menciptakan item-item menu. Gambar 5.45 menunjukkan sebuah form dengan sebuah kontrol MenuStrip. Menu designer ditampilkan pada form pada lokasi dimana sistem menu akan ditampilkan.

Gambar 5.45 Kontrol MenuStrip diseleksi dan menu designer dimulai


Perhatikan pada Gambar 5.45 bahwa katak Type Here ditampilkan pada sebuah kotak kecil pada menu designer. Ini menandai posisi dari item menu pertama. Sebuah objek ToolStripMenuItem secara otomatis diciptakan ketika Anda mengetikkan teks ke dalam kotak tersebut. Teks yang Anda ketikkan disimpan di dalam properti Text dan ditampilkan pada strip menu. Gambar 5.46 menunjukkan menu designer setelah kata File diketikkan sebagai teks untuk item menu pertama.

Perhatikan bahwa menu designer sekarang menunjukkan dua kotak Type Here yang baru, satu di bawah dan satu lagi di sisi kanan dari objek pertama. Anda bisa mengklik salah satu kotak tersebut untuk memilihnya, dan kemudian mengetikkan teks yang ingin Anda tampilkan pada posisi tersebut.

Gambar 5.46 Objek MenuStrip dengan File sebagai teksnya


Gambar 5.47 menunjukkan menu designer dengan sebuah sistem menu yang lebih sempurna. Sistem menu tersebut memiliki menu File dan Edit.

Gambar 5.47 Menu designer dengan sejumlah item

Gambar 5.48 Jendela Properties yang menunjukkan properti-properti dari sebuah objek ToolStripMenuItem


Nama Objek ToolStripMenuItem
Menu designer menugaskan nama-nama default pada objek-objek ToolStripMenuItem ketika Anda menciptakannya. Anda dapat mengubah nama dari sebuah objek item menu dengan mengubah properti Name pada jendela Properties. Pada Gambar 5.48, jendela Properties menunjukkan properti-properti dari sebuah objek ToolStripMenuItem. Perhatikan bahwa properti Name telah diubah menjadi mnuEditCopy.

Pada buku ini, Anda menggunakan sebuah konvensi penamaan hierarkis untuk item-item menu. Sebagai contoh, nama-nama untuk semua entri di bahwa menu File akan diawali dengan mnuFile. Entri-entri pada menu Edit akan diawali dengan mnuEdit.

Kunci Shortcut
Seperti yang sebelumnya dinyatakan, kunci shortcut adalah sebuah kunci atau kombinasi kunci yang menyebabkan sebuah perintah menu dieksekusi. Tabel 5.2 mencantumkan sejumlah kunci shortcut yang umum digunakan pada aplikasi Windows.

Tabel 5.2 Sejumlah kunci shortcut yang umum digunakan pada aplikasi Windows
Kunci Shortcut
Perintah
Ctrl + S
Ctrl + P
Ctrl + C
Ctrl + X
Ctrl + V
Save
Print
Copy
Cut
Paste


Gambar 5.49 Penetapan sebuah kunci shortcut


Kunci-kunci shortcut ditampilkan pada sebuah menu di sisi kanan dari perintah-perintah terkait. Untuk menciptakan sebuah kunci shortcut untuk item menu, Anda mengklik tanda panah ke bawah yang ada di samping dari properti ShortKeys pada jendela Properties. Sebuah kotak dialog akan ditampilkan seperti ditunjukkan pada Gambar 5.49. Daftar drop-down kunci menunjukkan semua kunci shortcut yang disediakan, dan dapat Anda pakai untuk memilih kunci dari daftar tersebut. Dialog tersebut juga dapat Anda pakai untuk memilih kunci Ctrl, Shift, atau Alt (atau kombinasinya). Sebagai contoh, jika Anda ingin menugaskan Ctrl + C sebagai sebuah kunci shortcut, Anda perlu memilih kunci C pada daftar drop-down dan mencentang kotak perisksa di samping Ctrl.

Anda juga perlu memastikan bahwa properti ShowShortcut ditetapkan True. Ketika ditetapkan False, kunci shortcut tidak akan ditampilkan.


Item Menu Checked
Sejumlah program memiliki item-item menu yang hanya perlu diaktifkan atau dinonaktifkan. Sebagai contoh, dimisalkan bahwa Anda sedang menciptakan sebuah aplikasi yang berfungsi sebagai jam alarm, dan Anda ingin user untuk mengaktifkan atau menonaktifkannya dengan sebuah item menu. Pendekatan yang umum dilakukan adalah dengan memiliki sebuah item menu checked untuk alarm tersebut. Ketika tanda centang ditampilkan di samping item menu, ia mengindikasikan bahwa alarm aktif. Ketika tanda centang tidak ditampilkan di samping item menu, ia mengindikasikan bahwa alarm tidak aktif. Ketika user mengklik item menu, ia menukar statusnya antara on (aktif) atau off (tidak aktif). Jenis item menu seperti ini dikenal dengan item menu checked.

Untuk memberikan sebuah item menu kemampuan untuk bisa dicentang atau tidak ketika ia diklik oleh user, Anda perlu menetapkan properti CheckOnClick menjadi True. Anda kemudian dapat menetapkan properti Checked menjadi True atau False untuk menetapkan bagaimana item awalnya ditampilkan ketika aplikasi dijalankan. Jika Anda menetapkan properti Checked menjadi True, item akan ditampilkan dengan tanda centang di sampingnya. Jika Anda menetapkan properti Checked menjadi False, tidak ada tanda centang yang ditampilkan.

Pada kode, Anda dapat menetapkan properti Checked untuk menentukan apakah sebuah item menu dicentang atau tidak. Jika properti Checked ditetapkan True, maka ini berarti bahwa item dicentang. Jika properti Checked ditetapkan False, maka ini berarti bahwa item tidak dicentang. Kode berikut menunjukkan sebuah contohnya. Kode ini menguji properti Checked dari sebuah item menu dengan nama mnuPengaturanAlarm. Jika item dicentang, maka sebuah kotak pesan akan ditampilkan.

If mnuPengaturanAlarm.Checked = True Then
    MessageBox.Show("BANGUN!")
End If

Item Menu Disabled
Sebuah item menu disabled ditampilkan dengan huruf pudar. Anda dapat menonaktifkan sebuah item menu dengan menetapkan properti Enabled menjadi False. Sebagai contoh, aplikasi yang menyediakan perintah Cut, Copy, dan Paste umumnya menonaktifkan perintah Paste sampai sesuatu penyalinan (operasi cut atau copy) dilakukan. Jadi, properti Enabled dari item menu Paste dapat ditetapkan False pada saat perancangan (pada jendela Properties) dan kemudian ditetapkan True pad kode setelah perintah Cut atau Copy digunakan. Dengan mengasumsikan item menu Paste diberi nama mnuEditPaste, kode berikut mengktifkannya:

mnuEditPaste.Enabled = True

Batang Pemisah (Separator Bar)
Anda dapat menyisipkan batang pemisah ke dalam sebuah menu dengan salah satu dari dua cara berikut:

  • Klik kanan pada item menu tertentu. Pada menu popup yang ditampilkan, pilih Insert dan kemudian pilih Separator. Batang pemisah akan disisipkan di atas item menu tersebut.
  • Ketikkan simbol hypen (-) sebagai properti Text untuk item menu tersebut.

Submenu
Ketika sebuah item menu diseleksi pada menu designer, kotak Type Here akan ditampilkan di sisi kanannya. Gambar 5.50 menunjukkan contoh ini. Kotak ini dapat Anda pakai untuk menciptakan sebuah item submenu. Ketika Anda menciptakan sebuah submenu, tanda anak panah kanan ( ) secara otomatis akan ditampilan di samping dari item menu yang menjadi induk dari submenu.

Gambar 5.50 Menciptakan sebuah submenu


Menyisipkan Item Menu Pada Menu Yang Telah Ada
Jika Anda perlu menyisipkan sebuah item menu baru di atas item menu yang telah ada, awali menu designer, dan kemudian klik kanan pada item menu yang telah ada. Pada menu popup yang ditampilkan, pilih Insert, dan kemudian pilih MenuItem. Sebuah item menu baru akan disisipkan di atas item menu yang telah ada. Jika Anda ingin menyisipkan sebuah item menu baru di bawah dari sebuah item menu yang telah ada, awali menu designer, dan pilih menu atau submenu yang diinginkan. Sebuah kotak Type Here secara otomatis akan ditampilkan di bawahnya.

Menghapus Item Menu
Untuk menghapus sebuah item menu, awali menu designer dan lakukan salah satu prosedur berikut:
·         Klik kanan pada item menu yang ingin Anda hapus. Pada menu popup, pilih Delete.
·         Pilih item menu yang ingin Anda hapus, dan kemudian tekan kunci Delete.

Menata Kembali Item-Item Menu
Anda dapat memindahkan sebuah item menu dengan mengklik dan menggeretnya. Anda hanya perlu memilihnya pada menu designer dan menggeretnya ke lokasi yang diinginkan.
Event Click ToolStripMenuItem
Anda tidak perlu menuliskan kode untuk menampilkan menu atau submenu. Ketika user mengklik sebuah item menu yang menampilkan sebuah menu atau sebuah submenu, Visual Basic secara otomatis akan menampilkan menu atau submenu tersebut.

Jika item menu tidak memiliki menu atau submenu yang akan ditampilkan, Anda dapat memungsikannya dengan menyediakan sebuah prosedur event Click. Sebagai contoh, diasumsikan bahwa sebuah sistem menu memiliki sebuah menu File dengan perintah Exit, yang mengakhiri aplikasi. Item menu untuk perintah Exit diberi nama mnuFileExit. Berikut adalah kode untuk prosedur event Click untuk objek tersebut:

Private Sub mnuFileExit_Click(...) Handles mnuFileExit.Click
   ‘Menutup form
   Me.Close()
End Sub

Untuk menuliskan prosedur event Click untuk sebuah item menu, awali menu designer, kemudian klik ganda pada item menu yang diinginkan. Sebuah template kode untuk prosedur event Click akan diciptakan.


Pada Tutorial 5.5, Anda akan belajar menggunakan menu designer dengan menciptakan sebuah sistem menu sederhana.

Tutorial 5.5: Membangun Sebuah Menu
Pada tutorial ini, Anda menciptakan sebuah aplikasi yang mendemonstrasikan bagaimana sebuah label ditampilkan dengan warna yang berbeda. Anda membangun sebuah sistem sehingga user dapat memilih warna, yang kemudian diterapkan pada sebuah kontrol Label. Gambar 5.51 menampilkan menu sistem tersebut.

Gambar 5.51 Sistem menu yang dibangun


Langkah 1: Ciptakanlah sebuah projek Windows Forms Application dengan nama Demo Menu.

Langkah 2: Ubahlah properti Text dari form menjadi Menu Demo. Tempatkan sebuah label dengan nama labelPesan pada form dan tetapkan properti Textnya menjadi “Hallo Dunia!”, seperti ditunjukkan pada Gambar 5.52.

Gambar 5.52 Form Demo Menu

Langkah 3: Klik ganda pada perangkat MenuStrip pada jendela Toolbox untuk menambahkan sebuah kontrol MenuStrip pada form.

Kontrol, yang ditampilkan di bawah form, harus diseleksi. Jika tidak, seleksi kontrol tersebut. Menu designer sekarang dijalankan, seperti ditunjukkan pada Gambar 5.53.

Gambar 5.53 Form dengan menu designer dijalankan


Langkah 4: Pertama, Anda menciptakan item menu File. Pada kotak Type Here, ketikkan &File. Tekan kunci Enter untuk menciptakan objek. Teks File ditampilkan pada strip menu.

Langkah 5: Tetapkan properti Name untuk item menu yang baru saja Anda ciptakan. Gunakan mouse untuk memilih kata File pada menu. Properti-properti dari item menu tersebut akan ditampilkan pada jendela Properties. Ubah properti Name menjadi mnuFile.

Langkah 6: Selanjutnya, Anda akan menciptakan item menu Keluar pada menu File. Gunakan mouse untuk memilih kota Type Here di bawah item menu File. Ketikkan &Keluar dan tekan Enter untuk menciptakan objek. Teks Keluar sekarang ditampilkan pada menu File, seperti ditunjukkan pada Gambar 5.54.

Langkah 7: Selanjutnya, Anda perlu menetapkan properti-properti untuk item menu yang baru saja Anda ciptakan. Gunakan mouse untuk memilih kata Keluar. Properti-properti dari item menu ini ditampilkan pada jendela Properties. Ubah properti Name menjadi mnuFileKeluar. Pada kunci shortcut menjadi Ctrl + K.

Gambar 5.54 Item menu Keluar diciptakan

Langkah 8: Sekarang Anda siap untuk menambahkan item menu Warna. Pada kotak Type Here yang ditampilkan pada Gambar 5.55, ketikkan &Warna dan tekan Enter.

Gambar 5.55 Tempat dimana mengetikkan &Warna

Langkah 9: Tetapkan properti Name untuk item menu yang baru saja Anda ciptakan. Gunakan mouse untuk memilih kata Warna pada menu. Properti-properti dari item menu akan ditampilkan pada jendela Properties. Ubah properti Name menjadi mnuWarna.

Langkah 10: Selanjutnya, Anda akan menambahkan empat menu pertama pada menu Warna. Di bawah item menu mnuWarna, tambahkan sebuah objek dengan teks &Merah dan dengan properti Name adalah mnuWarnaMerah.

Di bawah objek mnuWarnaMerah, tambahkan sebuah objek dengan teks &Hijau dan dengan properti Name adalah mnuWarnaHijau.

Di bawah objek mnuWarnaHijau, tambahkan sebuah objek dengan teks &Biru dan dengan properti Name adalah mnuWarnaBiru.

Di bawah objek mnuWarnaBiru, tambahkan sebuah objek dengan teks H&itam dan dengan properti Name adalah mnuWarnaHitam.

Langkah 11: Ciptakan batang pemisah dengan mengetikkan hypen (-) pada kotak Type Here di bawah objek mnuWarnaHitam.

Langkah 12: Di bawah batang pemisah, tambahkan sebuah objek dengan teks Visibel dan dengan properti Name adalah mnuWarnaVisibel. Properti CheckOnClick dan properti Checked ditetapkan True. Menu Warna sekarang menjadi seperti ditampilkan pada Gambar 5.56.

Gambar 5.56 Menu Warna yang diberikan

Langkah 13: Di sisi kanan dari item menu Warna, tambahkan item menu Help dengan teks H&elp dan dengan properti Name diberikan mnuHelp.

Langkah 14: Di bawah kata Help, tambahkan sebuah item menu dengan teks &Tentang dan namai dengan mnuHelpTentang. Setelah selesai, menu Help akan seperti ditampilkan pada Gambar 5.57.

Gambar 5.57 Menu Help yang diberikan

Langkah 15: Sekarang Anda akan menuliskan prosedur-prosedur event Click untuk item-item menu, diawali dengan mnuFileKeluar. Pada menu designer, klik ganda pada kata Keluar, yang berada pada menu File. Jendela Code akan memuat sebuah template kode untuk prosedur event mnuFileKeluar_Click. Sempurnakan prosedur tersebut dengan mengetikkan kode yang ditampilkan tebal, sebagai berikut:

Private Sub mnuFileKeluar_Click(…) Handles mnuFileKeluar.Click
    'Menutup form
    Me.Close()
End Sub

Langkah 16: Ikuti prosedur yang sama untuk menuliskan prosedur-prosedur event untuk perintah-perintah pada menu Warna. Kodenya diberikan sebagai berikut:

Private Sub mnuWarnaMerah_Click(…) Handles mnuWarnaMerah.Click
    'Menetapkan warna label menjadi merah
    labelPesan.ForeColor = Color.Red
End Sub

Private Sub mnuWarnaHijau_Click(…) Handles mnuWarnaHijau.Click
    'Menetapkan warna label menjadi hijau
    labelPesan.ForeColor = Color.Green
End Sub

Private Sub mnuWarnaBiru_Click(…) Handles mnuWarnaBiru.Click
    'Menetapkan warna label menjadi biru
    labelPesan.ForeColor = Color.Blue
End Sub

Private Sub mnuWarnaHitam_Click(…) Handles mnuWarnaHitam.Click
    'Menetapkan warna label menjadi hitam
    labelPesan.ForeColor = Color.Black
End Sub

Private Sub mnuWarnaVisibel_Click(…) Handles mnuWarnaVisibel.Click
    'Membuat label terlihat atau hilang
    If mnuWarnaVisibel.Checked = True Then
        labelPesan.Visible = True
    Else
        labelPesan.Visible = False
    End If
End Sub

Amati kode prosedur mnuWarnaVisibel_Click. Prosedur ini menguji properti Checked dari objek mnuWarnaVisibel untuk menentukan apakah item menu dicentang atau tidak. Jika dicentang, user ingin membuat label terlihat sehingga properti labelPesan.Visible ditetapkan True. Sebaliknya, properti labelPesan.Visible ditetapkan False.

Langkah 17: Menu Help memiliki satu item: Tentang. Hampir semua aplikasi memiliki perintah ini, yang menampilkan sebuah kotak dialog yang dikenal dengan kotak Tentang, yang umumnya menampilkan informasi singkat tentang aplikasi. Tuliskan kode berikut, yang ditebalkan, untuk prosedur event Click dari item menu MnuHelpTentang.

Private Sub mnuHelpTentang_Click(…) Handles mnuHelpTentang.Click
    'Menampilkan sebuah kotak Tentang sederhana
    MessageBox.Show("Sebuah Demo Sistem Menu Sederhana")
End Sub

Langkah 18: Simpan projek dan jalankan. Coba untuk memilih warna yang berbeda untuk melihat bagaimana label ditampilkan. Juga uji perintah Visibel dan perintah Tentang. Ketika selesai, tekan Ctrl + K untuk mengakhiri aplikasi.


Menu Konteks
Menu konteks, atau menu popup, ditampilkan ketika user mengklik kanan pada sebuah form atau kontrol. Untuk menciptakan sebuah menu konteks, Anda perlu menambahkan kontrol ContextMenuStrip pada form. Anda melakukannya dengan sama seperti menambahkan kontrol lain: klik ganda pada ikon ContextMenuStrip pada jendela Toolbox. Sebuah kontrol ContextMenuStrip kemudian diciptakan di bawah form. Kontrol semacam itu yang pertama akan memiliki nama default ContextMenuStrip1, yang kedua akan memiliki nama default ContextMenuStrip2, dan seterusnya.

Setelah Anda menambahkan sebuah kontrol ContextMenuStrip pada form, Anda memilihnya dan kemudian menambahkan item-item menggunakan menu designer, sama seperti yang Anda lakukan pada menu biasa. Setelah Anda membangun menu konteks, Anda menambahkan prosedur Click untuk setiap item menunya. Kemudian, Anda melekatkan menu konteks dengan sebuah kontrol dengan menetapkan properti ContextMenuStrip dari kontrol tersebut menjadi nama dari kontrol ContextMenuStrip. Pada saat aplikasi dijalankan, menu konteks akan ditampilkan ketika user mengklik kanan pada kontrol terkait. Sebagai contoh, Gambar 5.58 menunjukkan sebuah menu konteks yang ditampilkan ketika user mengklik kanan pada kontrol Label.

Gambar 5.58 Sebuah contoh menu konteks


5.4 Fokus Pada Penyelesaian Permasalahan: Membangun Aplikasi Agen Travel
KONSEP: Pada bagian ini, Anda akan membangun sebuah aplikasi untuk agen perjalanan petualangan. Aplikasi ini menggunakan beberapa form, sebuah modul, dan sebuah sistem menu.

Agen Perjalanan Petualangan menawarkan dua paket untuk konsumennya:

  • Petualangan Scuba: Paket ini menawarkan enam hari di Raja Ampat dengan pelajaran-pelajaran scuba. Harga untuk paket ini adalah Rp. 30 juta per orang.
  • Petualangan Sky Dive: Paket ini menawarkan pelajaran-pelajaran sky diving selama enam-hari dengan menginap di hotel mewah. Harga untuk paket ini adalah Rp. 25 juta per orang.

Agen perjalanan ini memberikan diskon 10% untuk grup yang terdiri-dari lima orang atau lebih. Anda akan diminta untuk menciptakan sebuah aplikasi untuk menghitung biaya untuk setiap paket.

Pada Tutorial 5.6, Anda akan menciptakan sebuah aplikasi yang memiliki form-form dan modul berikut:
Form FormUtama adalah form startup dari aplikasi. Ia menyediakan sebuah menu yang dapat dipakai user untuk memilih salah satu paket yang ditawarkan.

  • Form FormScuba akan menghitung harga dari paket petualangan scuba.
  • Form FormSkyDive akan menghitung harga dari paket petualangan sky dive.
  • ModulHitungHarga akan memuat konstanta-konstanta global dan sebuah fungsi yang dipakai untuk menghitung diskon oleh FormScuba dan FormSkyDive.

Form FormUtama
Form FormUtama ditampilkan pada Gambar 5.59. Foto pantai ditampilkan pada form. Anda menampilkan citra ini pada sebuah kontrol PictureBox. Perhatikan bahwa form juga memiliki sebuah kontrol MenuStrip. Gambar 5.60 menampilkan sistem menu, berikut dengan tiap nama yang ditugaskan kepada setiap kontrol MenuItem.

Gambar 5.59 FormUtama dari aplikasi agen perjalanan petualangan


Gambar 5.60 Sistem menu


Berikut adalah simpulan dari aksi-aksi yang dilakukan oleh kontrol-kontrol MenuItem:

  • Ketika user mengklik item mnuFileExit, aplikasi akan berakhir.
  • Ketika user mengklik item mnuPaketScuba, sebuah instansi dari FormScuba akan ditampilkan. Form FormScuba akan menghitung harga dari paket perjalanan petualangan scuba.
  • Ketika user mengklik item mnuPaketSkyDiving, sebuah instansi dari FormSkyDive akan ditampilkan. Form FormSkyDive akan menghitung harga dari paket perjalanan petualangan sky dive.
  • Ketika user mengklik item mnuHelpAbout, sebuah kotak About sederhana akan ditampilkan.


Form FormScuba
Gambar 5.61 menunjukkan form FormScuba dan menampilkan nama-nama yang akan ditugaskan kepada sejumlah kontrol pada form. Ketika Anda menciptakan kontrol labelDiskon dan labelTotal, Anda akan menetapkan properti AutoSize menjadi False dan properti BorderStyle menjadi FixedSingle. Berikut adalah simpulan aksi-aksi yang dilakukan kontrol-kontrol Button:

  • Tombol tombolHitungTotal akan menggunakan nilai yang dimasukkan pada kontrol teksBanyakOrang untuk menghitung dan menampilkan diskon (jika ada) dan total biaya untuk petualangan scuba.
  • Tombol tombolReset akan membersihkan kotak teks dan label, dan memberikan fokus pada teksBanyakOrang.
  • Tombol tombolKeluar akan menutup form.

Gambar 5.61 Form FormScuba


Form FormSkyDive
Gambar 5.62 menunjukkan form FormSkyDive dan menampilkan nama-nama yang akan ditugaskan kepada sejumlah kontrol pada form. Ketika Anda menciptakan kontrol labelDiskon dan labelTotal, Anda akan menetapkan properti AutoSize menjadi False dan properti BorderStyle menjadi FixedSingle. Berikut adalah simpulan aksi-aksi yang dilakukan kontrol-kontrol Button:

  • Tombol tombolHitungTotal akan menggunakan nilai yang dimasukkan pada kontrol teksBanyakOrang untuk menghitung dan menampilkan diskon (jika ada) dan total biaya untuk petualangan sky dive.
  • Tombol tombolReset akan membersihkan kotak teks dan label, dan memberikan fokus pada teksBanyakOrang.
  • Tombol tombolKeluar akan menutup form.


Gambar 5.62 Form FormSkyDive


Tutorial 5.6: Membangun Aplikasi Agen Perjalanan Petualangan
Langkah 1: Ciptakanlah sebuah projek Windows Forms Application baru dengan nama Agen Perjalanan Petualangan.

Langkah 2: Ubah nama dari Form1 menjadi FormUtama.

Langkah 3: Tempatkan sebuah kontrol MenuStrip pada form dan ciptakan objek-objek MenuItem seperti ditunjukkan pada Gambar 5.60. Acu nama-nama dari objek-objek MenuItem dan teks yang ditampilkan oleh setiap objek.

Langkah 4: Tempatkan sebuah kontrol PictureBox pada FormUtama. Gunakan file citra yang disediakan.

Langkah 5: Ciptakan form FormScuba dan tempatkan padanya kontrol-kontrol yang ditampilkan pada Gambar 5.61. Acu nama-nama dari objek-objek MenuItem dan teks yang ditampilkan oleh setiap objek. Ketika Anda menciptakan kontrol labelDiskon dan labelTotal, tetapkan properti AutoSize menjadi False dan properti BorderStyle menjadi FizedSingle.

Langkah 6: Ciptakan form FormSkyDive dan tempatkan padanya kontrol-kontrol yang ditampilkan pada Gambar 5.61. Acu nama-nama dari objek-objek MenuItem dan teks yang ditampilkan oleh setiap objek. Ketika Anda menciptakan kontrol labelDiskon dan labelTotal, tetapkan properti AutoSize menjadi False dan properti BorderStyle menjadi FizedSingle.

Langkah 7: Ciptakanlah sebuah modul dengan nama ModulHitungHarga.vb. Gunakan jendela Code untuk menuliskan kode berikut di dalam modul.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Module ModulHitungHarga
    'Konstanta-konstanta global
    Public Const g_intMINIMUM_UNTUK_DISKON As Integer = 5
    Public Const g_decPERSEN_DISKON As Decimal = 0.1D

    'Fungsi HitungDiskon menerima sebuah total paket sebagai
    'argumennya dan menghasilkan jumlah diskon dari
    'total tersebut

    Public Function HitungDiskon(decTotal As Decimal) As Decimal
        Dim decDiskon As Decimal   'untuk menampung diskon

        'menghitung diskon
        decDiskon = decTotal * g_decPERSEN_DISKON

        'menghasilkan (menjadikan nilai balik)
        Return decDiskon
    End Function
End Module

Lihat kode di dalam modul lebih dekat. Baris 3 mendeklarasikan sebuah konstanta integer global dengan nama g_intMINIMUM_UNTUK_DISKON. Konstanta ini akan dipakai untuk jumlah orang minimum yang disyaratkan untuk diskon. Baris 4 mendeklarasikan sebuah konstanta Decimal dengan nama g_decPERSEN_DISKON. Ia akan dipakai untuk persentase diskon.

Baris 10 sampai baris 18 menunjukkan sebuah fungsi publik dengan nama HitungDiskon. Fungsi ini menerima biaya total paket sebagai argumen. Baris 14 menghitung diskon dari biaya tersebut, dan pada baris 17 menghasilkan (menjadikan nilai balik) diskon. Fungsi ini akan dipanggil oleh statemen-statemen pada form FormScuba dan FormSkyDive.

Langkah 8: Sekarang Anda akan menuliskan tiga event handler untuk form FormScuba. Buka form FormScuba pada jendela Designer dan ciptakan template kode untuk tombol tombolHitungTotal, tombolReset, dan tombolKeluar. Berikut menunjukkan kode form yang diperlukan.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Public Class FormScuba

    Private Sub tombolHitungTotal_Click(…) Handles tombolHitungTotal.Click
        'konstanta untuk harga per orang untuk paket ini
        Const decHARGA_SCUBA_PER_ORANG As Decimal = 30000000D

        'variabel lokal
        Dim intBanyakOrang As Integer 'banyak orang
        Dim decDiskon As Decimal      'jumlah diskon
        Dim decTotal As Decimal       'biaya total

        Try
            'membaca banyak orang
            intBanyakOrang = CInt(teksBanyakOrang.Text)

            'menghitung total sebelum diskon diterapkan
            decTotal = intBanyakOrang * decHARGA_SCUBA_PER_ORANG

            'menentukan apakah diskon dapat diberikan atau tidak
            If intBanyakOrang >= g_intMINIMUM_UNTUK_DISKON Then
                'menghitung jumlah diskon
                decDiskon = HitungDiskon(decTotal)

                'mengurangkan diskon dari total
                decTotal = decTotal - decDiskon
            Else
                'diskon Rp. 0.
                decDiskon = 0D
            End If

            'menampilkan hasil
            labelDiskon.Text = "Rp. " & decDiskon.ToString()
            labelTotal.Text = "Rp. " & decTotal.ToString()
        Catch ex As Exception
            'pesan error untuk masukan tak valid
            MessageBox.Show("Masukkan integer valid untuk banyak orang.")
        End Try
    End Sub

    Private Sub tombolReset_Click(…) Handles tombolReset.Click
        'membersihkan kotak teks dan label
        teksBanyakOrang.Clear()
        labelDiskon.Text = String.Empty
        labelTotal.Text = String.Empty

        'mengatur fokus
        teksBanyakOrang.Focus()
    End Sub

    Private Sub tombolKeluar_Click(…) Handles tombolKeluar.Click
        'menutup form
        Me.Close()
    End Sub
End Class

Lihat kode lebih dekat. Pada event handler tombolHitungTotal_Click, baris 5 mendeklarasikan konstanta decHARGA_SCUBA_PER_ORANG untuk merepresentasikan harga dari paket scuba, per orang. Baris 8 mendeklarasikan variabel intBanyakOrang untuk memuat banyak orang dalam paket. Baris 9 mendeklarasikan variabel decDiskon untuk memuat jumlah diskon, jika diberikan. Baris 10 mendeklarasikan variabel decTotal untuk memuat biaya total.

Sebuah statemen Try-Catch diawali pada baris 12. Di dalam blok try, baris 14 membaca nilai yang dimasukkan oleh user pada kontrol teksBanyakOrang, mengkonversinya menjadi sebuah integer, dan menugaskan hasilnya kepada variabel intBanyakOrang. Jika user memasukkan nilai tak valid, sebuah eksepsi akan dilemparkan dan program akan melompat ke statemen Catch pada baris 34. Jika itu terjadi, pesan error akan ditampilkan pada baris 36 dan prosedur berakhir.

Jika nilai yang dimasukkan oleh user adalah sebuah integer yang valid, maka biaya total dari perjalanan dihitung pada baris 17 dan ditugaskan kepada variabel decTotal. Kemudian statemen If…Then pada baris 20 menentukan apakah terdapat lima orang atau lebih dalam kelompok atau tidak. Jika ya, maka fungsi HitungDiskon (yang disimpan di dalam modul) dipanggil pada baris 22 untuk mendapatkan jumlah diskon. Nilai yang dihasilkan dari fungsi ini ditugaskan kepada decDiskon. Kemudian diskon dikurangkan dari total pada baris 25. Jika terdapat kurang dari lima orang di dalam kelompok, statemen pada baris 28 akan menetapkan decDiskon sebesar 0. Baris 32 menampilkan jumlah diskon pada kontrol labelDiskon, dan baris 33 menampilkan biaya total pada kontrol labelTotal.

Event handler tombolReset_Click membersikan setiap properti Text dari teksBanyakOrang, labelDiskon, dan labelTotal pada baris 42 sampai baris 44, dan kemudian memberikan fokus pada kontrol teksBanyakOrang pada baris 47. Event handler btnKeluar_Click menutup form.

Langkah 9: Sekarang Anda akan menuliskan tiga event handler untuk form FormSkyDive. Buka form FormSkyDive pada jendela Designer dan ciptakan template kode untuk tombol tombolHitungTotal, tombolReset, dan tombolKeluar. Berikut menunjukkan kode form yang diperlukan.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
Public Class FormSkyDive

    Private Sub tombolHitungTotal_Click(…) Handles tombolHitungTotal.Click
        'konstanta untuk harga per orang untuk paket ini
        Const decHARGA_SKYDIVE_PER_ORANG As Decimal = 25000000D

        'variabel lokal
        Dim intBanyakOrang As Integer 'banyak orang
        Dim decDiskon As Decimal      'jumlah diskon
        Dim decTotal As Decimal       'biaya total

        Try
            'membaca banyak orang
            intBanyakOrang = CInt(teksBanyakOrang.Text)

            'menghitung total sebelum diskon diterapkan
            decTotal = intBanyakOrang * decHARGA_SKYDIVE_PER_ORANG

            'menentukan apakah diskon dapat diberikan atau tidak
            If intBanyakOrang >= g_intMINIMUM_UNTUK_DISKON Then
                'menghitung jumlah diskon
                decDiskon = HitungDiskon(decTotal)

                'mengurangkan diskon dari total
                decTotal = decTotal - decDiskon
            Else
                'diskon Rp. 0.
                decDiskon = 0D
            End If

            'menampilkan hasil
            labelDiskon.Text = "Rp. " & decDiskon.ToString()
            labelTotal.Text = "Rp. " & decTotal.ToString()
        Catch ex As Exception
            'pesan error untuk masukan tak valid
            MessageBox.Show("Masukkan integer valid untuk banyak orang.")
        End Try
    End Sub

    Private Sub tombolReset_Click(…) Handles tombolReset.Click
        'membersihkan kotak teks dan label
        teksBanyakOrang.Clear()
        labelDiskon.Text = String.Empty
        labelTotal.Text = String.Empty

        'mengatur fokus
        teksBanyakOrang.Focus()
    End Sub

    Private Sub tombolKeluar_Click(…) Handles tombolKeluar.Click
        'menutup form
        Me.Close()
    End Sub
End Class

Kode ini sangat mirip dengan kode yang dituliskan pada Langkah 8, tetapi akan dijelaskan sekali lagi. Pada event handler tombolHitungTotal_Click, baris 5 mendeklarasikan konstanta decHARGA_SKYDIVE_PER_ORANG untuk merepresentasikan harga dari paket scuba, per orang. Baris 8 mendeklarasikan variabel intBanyakOrang untuk memuat banyak orang dalam paket. Baris 9 mendeklarasikan variabel decDiskon untuk memuat jumlah diskon, jika diberikan. Baris 10 mendeklarasikan variabel decTotal untuk memuat biaya total.

Sebuah statemen Try-Catch diawali pada baris 12. Di dalam blok try, baris 14 membaca nilai yang dimasukkan oleh user pada kontrol teksBanyakOrang, mengkonversinya menjadi sebuah integer, dan menugaskan hasilnya kepada variabel intBanyakOrang. Jika user memasukkan nilai tak valid, sebuah eksepsi akan dilemparkan dan program akan melompat ke statemen Catch pada baris 34. Jika itu terjadi, pesan error akan ditampilkan pada baris 36 dan prosedur berakhir.

Jika nilai yang dimasukkan oleh user adalah sebuah integer yang valid, maka biaya total dari perjalanan dihitung pada baris 17 dan ditugaskan kepada variabel decTotal. Kemudian statemen If…Then pada baris 20 menentukan apakah terdapat lima orang atau lebih dalam kelompok atau tidak. Jika ya, maka fungsi HitungDiskon (yang disimpan di dalam modul) dipanggil pada baris 22 untuk mendapatkan jumlah diskon. Nilai yang dihasilkan dari fungsi ini ditugaskan kepada decDiskon. Kemudian diskon dikurangkan dari total pada baris 25. Jika terdapat kurang dari lima orang di dalam kelompok, statemen pada baris 28 akan menetapkan decDiskon sebesar 0. Baris 32 menampilkan jumlah diskon pada kontrol labelDiskon, dan baris 33 menampilkan biaya total pada kontrol labelTotal.

Event handler tombolReset_Click membersikan setiap properti Text dari teksBanyakOrang, labelDiskon, dan labelTotal pada baris 42 sampai baris 44, dan kemudian memberikan fokus pada kontrol teksBanyakOrang pada baris 47. Event handler btnKeluar_Click menutup form.

Langkah 10: Sekarang Anda akan menuliskan beberapa evant handler untuk form FormUtama. Buka form FormUtama pada jendela Designer dan ciptakan template kode untuk setiap objek MenuItem. Berikut menunjukkan kode form ini:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Public Class FormUtama

    Private Sub mnuFileExit_Click(…) Handles mnuFileExit.Click
        'menutup form
        Me.Close()
    End Sub

    Private Sub mnuPaketScuba_Click(…) Handles mnuPaketScuba.Click
        'menciptakan sebuah instansi dari FormScuba
        Dim frmScuba As New FormScuba

        'menampilkan FormScuba dengan gaya modal
        frmScuba.ShowDialog()
    End Sub

    Private Sub mnuPaketSkyDiving_Click(…) Handles mnuPaketSkyDiving.Click
        'menciptakan sebuah instansi dari FormSkyDive
        Dim frmSkyDive As New FormSkyDive

        'menampilkan FormSkyDive dengan gaya modal
        frmSkyDive.ShowDialog()
    End Sub

    Private Sub mnuHelpAbout_Click(…) Handles mnuHelpAbout.Click
        'menampilkan kotak About sederhana
        MessageBox.Show("Aplikasi Agen Perjalanan Petualangan Versi 1.0")
    End Sub
End Class

Lihat kode lebih dekat. Pada event handler mnuFileExit_Click, baris 5 menutup form, dan mengakhiri aplikasi.

Pada event handler mnuPaketScuba_Click, baris 10 menciptakan sebuah instansi dari form FormScuba di dalam memori dan menugaskan alamatnya kepada variabel frmScuba. Baris 13 menampilkan form di layar dengan gaya modal.

Pada event handler mnuPaketSkyDiving_Click, baris 18 menciptakan sebuah instansi dari form FormSkyDive di dalam memori dan menugaskan alamatnya kepada variabel frmSkyDive. Baris 21 menampilkan form di layar dengan gaya modal.

Pada event handler mnuHelpAbout, baris 26 menampilkan sebuah kotak pesan sebagai sebuah kotak About.

Langkah 11: Simpan projek dan jalankan aplikasi. Pastikan bahwa semua menu bekerja dengan baik, dan coba pelbagai banyak orang yang berbeda untuk setiap paket untuk memastikan bahwa perhitungan dilakukan dengan benar.






No comments:

Post a Comment