12.
Berbagai Projek GUI
Pengantar
Bab ini akan melanjutkan diskusi
tentang GUI, yang dimulai dengan topi lanjut yang paling sering digunakan,
menu. Menu menyajikan beberapa perintah atau opsi kepada pengguna. Kemudian
akan didiskusikan bagaimana mengembangkan menu menggunakan beberapa tool yang
disediakan Visual Studio .NET. Komponen GUI LinkLabel akan diintroduksi, yang memampukan pengguna untuk
mengklik mouse untuk menuju beberapa destinasi.
Selanjutnya akan didemonstrasikan
bagaimana memanipulasi sebuah daftar nilai melalui ListBox dan bagaimana menggabungkan beberapa checkbox di dalam sebuah CheckedListBox.
Komponen ComboBox dan TreeView juga akan dibahas.
Menu
Menu menyediakan beberapa grup, yang
masing-masing memuat beberapa perintah yang berelasi, untuk aplikasi Windows. Meskipun beberapa perintah
tersebut bergantung pada program, tetapi perintah, seperti Open dan Save, sangat
sering dijumpai pada banyak aplikasi. Menu merupakan bagian integral dari GUI,
karena dapat dipakai untuk mengorganisir perintah agar tidak tampak berserakan.
Semua item menu dapat memiliki kunci pintas (shortcut) Alt (yang juga
dikenal dengan hotkey), yang dapat
diakses dengan menekan Alt, seperti Alt + F yang mengakses menu File.
Gambar 12.1 Menu Designer
pada Visual Studio
Untuk menciptakan sebuah menu, Anda
bisa membuka Toolbox dan menggeret
sebuah kontrol MenuStrip ke dalam
form. Ini akan menciptakan sebuah menu
bar di sisi atas form dan menempatkan sebuah ikon MenuStrip di sisi bawah IDE. Untuk menyelekasi MenuStrip, Anda bisa mengklik ikon ini. Konfigurasi ini dikenal
sebagai Menu Designer, yang
membolehkan pengguna untuk menciptakan dan mengedit menu. Menu, seperti kontrol
lainnya, memiliki beberapa properti, yang dapat diakses melalui jendela Properties atau Menu Designer (Gambar 12.1).
Untuk menambahkan nama perintah, klik
kotak teks Type Here (Gambar 12.1)
dan ketikkan nama perintah menu. Setiap entri di dalam menu bertipe MenuItem dari namespace System.Windows.Forms. Kemudian, akan
muncul beberapa Type Here lagi,
seperti terlihat pada Gambar 12.2.
Gambar 12.2 Menambahkan MenuItem pada MenuStrip
Untuk menciptakan access shortcut, Anda bisa menambahkan ampersand (&) di depan karakter. Sebagai
contoh, untuk menciptakan item menu File,
ketikkan &File. Karakter
ampersand ditampilkan dengan mengetikkan &&.
Untuk menetapkan beberapa shortcut key
yang lain, Anda bisa mengujungi properti Shorcut.
Beberapa properti dan event menu dicantumkan pada Gambar 12.3.
Properti dan event MenuItem
|
Deskripsi
|
Properti
MenuItems
RightToLeft
Checked
Index
MenuItems
RadioCheck
Shortcut
ShowShortcut
Text
-----------------------
Event
Click
|
Mencantumkan beberapa MenuItem yang dimuat di dalam MenuStrip.
Menyebabkan teks ditampilkan dari
kanan ke kiri. Berguna untuk beberapa bahasa, seperti bahasa Arab, yang
dibaca dari kanan ke kiri.
Mengindikasikan apakah sebuah item
menu diseleksi (sesuai dengan properti RadioCheck).
Nilai default adalah False, yang
berarti bahwa item menu tidak diseleksi.
Menspesifikasi posisi item di dalam
menu induk. Nilai 0 menempatkan MenuItem di awal menu.
Mencantumkan beberapa item submenu
untuk item menu tertentu.
Menspesifikasi apakah item menu yang
diseleksi muncul sebagai tombol radio (lingkaran hitam) atau sebagai checkmark. True akan menampilkan tombol radio, dan False akan menampilkan checkmark;
default adalah False.
Menspesifikasi shortcut key untuk item menu.
Mengindikasikan apakah shortcut key ditampilkan di samping
teks item menu. Default adalah True,
yang menampilkan shortcut key.
Menspesifikasi teks item menu. Untuk
menciptakan sebuah access shortcut Alt, dengan mengawali karakter dengan & (misalnya, &File untuk File).
----------------------------------------------------------------------------------------------
Dibangkitkan ketika item diklik atau shortcut key digunakan. Ini merupakan event default ketika menu diklik-ganda
pada designer.
|
Gambar 12.3 Beberapa
properti dan event pada MenuItem
Kelas FrmMenu (kode 12.1) menciptakan sebuah menu sederhana pada suatu
form. Form tersebut memiliki menu File
dengan beberapa item menu Tentang
(menampilkan kotak pesan) dan Keluar
(menghentikan program). Menu juga memuat sebueh menu Format, yang mengubah teks pada sebuah label. Menu Format memiliki submenu Warna dan Font, yang mengubah warna dan jenis font teks pada label.
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
|
' Kode 12.1: UjiMenu.vb
' Menggunakan menu untuk
mengubah warna dan jenis font.
Imports
System.Windows.Forms
Public Class
FrmMenu
Inherits
Form
' label
Friend
WithEvents lblTampil As Label
' menu utama (memuat menu file dan
format)
Friend
WithEvents mnuMainMenu As
MainMenu
' menu file
Friend
WithEvents mnuFile As MenuItem
Friend
WithEvents mnuitmTentang As
MenuItem
Friend
WithEvents mnuitmKeluar As
MenuItem
' menu format
Friend
WithEvents mnuFormat As MenuItem
' submenu warna
Friend
WithEvents mnuitmWarna As
MenuItem
Friend
WithEvents mnuitmHitam As
MenuItem
Friend
WithEvents mnuitmBiru As
MenuItem
Friend
WithEvents mnuitmMerah As
MenuItem
Friend
WithEvents mnuitmHijau As
MenuItem
' submenu font
Friend
WithEvents mnuitmFont As
MenuItem
Friend
WithEvents mnuitmTimes As
MenuItem
Friend
WithEvents mnuitmCourier As
MenuItem
Friend WithEvents mnuitmComic As
MenuItem
Friend
WithEvents mnuitmDash As
MenuItem
Friend
WithEvents mnuitmBold As
MenuItem
Friend
WithEvents mnuitmItalic As
MenuItem
' kode yang dibangkitkan oleh Visual
Studio .NET
' menampilkan MessageBox
Private
Sub TentangToolStripMenuItem_Click(ByVal
sender As System.Object, _
ByVal
e As System.EventArgs) _
Handles
TentangToolStripMenuItem.Click
MessageBox.Show("Ini adalah contoh" & vbCrLf
& _
" penggunaan menu.", "Tentang",
MessageBoxButtons.OK, _
MessageBoxIcon.Information)
End
Sub '
TentangToolStripMenuItem_Click
' keluar program
Private
Sub KeluarToolStripMenuItem_Click(ByVal
sender As System.Object, _
ByVal e As System.EventArgs) _
Handles
KeluarToolStripMenuItem.Click
Application.Exit()
End
Sub '
KeluarToolStripMenuItem_Click
' mereset warna font
Private
Sub HapusWarna()
' menghapus semua checkmark
mnuitmHitam.Checked = False
mnuitmBiru.Checked = False
mnuitmMerah.Checked = False
mnuitmHijau.Checked = False
End
Sub ' HapusWarna
' memperbarui keadaan menu dan mewarnai
hitam
Private
Sub mnuitmHitam_Click(ByVal
sender As _
System.Object, ByVal e As
System.EventArgs) Handles
mnuitmHitam.Click
' mereset checkmark untuk item-item
menu warna
HapusWarna()
' menetapkan warna menjadi hitam
lblTampil.ForeColor = Color.Black
mnuitmHitam.Checked = True
End
Sub ' mnuitmHitam_Click
' memperbarui keadaan menu dan mewarnai
biru
Private
Sub mnuitmBiru_Click(ByVal
sender As _
System.Object, ByVal e As
System.EventArgs) Handles
mnuitmBiru.Click
' mereset checkmark untuk item-item
menu warna
HapusWarna()
' menetapkan warna menjadi hitam
lblTampil.ForeColor = Color.Blue
mnuitmBiru.Checked = True
End Sub ' mnuitmBiru_Click
' memperbarui keadaan menu dan mewarnai
merah
Private
Sub mnuitmMerah_Click(ByVal
sender As System.Object, _
ByVal
e As System.EventArgs) Handles mnuitmMerah.Click
' mereset checkmark untuk item-item
menu warna
HapusWarna()
' menetapkan warna menjadi hitam
lblTampil.ForeColor = Color.Red
mnuitmMerah.Checked = True
End
Sub ' mnuitmMerah_Click
' memperbarui keadaan menu dan mewarnai
hijau
Private
Sub mnuitmHijau_Click(ByVal
sender As System.Object, _
ByVal
e As System.EventArgs) Handles mnuitmHijau.Click
' mereset checkmark untuk item-item
menu warna
HapusWarna()
' menetapkan warna menjadi hitam
lblTampil.ForeColor = Color.Green
mnuitmHijau.Checked = True
End
Sub ' mnuitmHijau_Click
' reset jenis font
Private
Sub HapusFont()
' menghapus semua checkmark
mnuitmTimes.Checked = False
mnuitmCourier.Checked = False
mnuitmComic.Checked = False
End
Sub ' HapusFont
' memperbarui keadaan menu dan menetapkan
font menjadi Times New Roman
Private
Sub mnuitmTimes_Click(ByVal
sender As System.Object, _
ByVal
e As System.EventArgs) Handles mnuitmTimes.Click
' mereset checkmark untuk item-item
menu font
HapusFont()
' menetapkan font menjadi Times New
Roman
mnuitmTimes.Checked = True
lblTampil.Font = New Font("Times New Roman", 48, _
lblTampil.Font.Style)
End
Sub 'mnuitmTimes_Click
' memperbarui keadaan menu dan menetapkan
font menjadi Courier
Private
Sub mnuitmCourier_Click(ByVal
sender As System.Object, _
ByVal
e As System.EventArgs) Handles mnuitmCourier.Click
' mereset checkmark untuk item-item
menu font
HapusFont()
' menetapkan font menjadi Times New
Roman
mnuitmTimes.Checked = True
lblTampil.Font = New Font("Courier New", 48, _
lblTampil.Font.Style)
End
Sub ' mnuitmCourier_Click
' memperbarui keadaan menu dan menetapkan
font menjadi Comic Sans
Private
Sub mnuitmComic_Click(ByVal
sender As System.Object, _
ByVal
e As System.EventArgs) Handles mnuitmComic.Click
' mereset checkmark untuk item-item
menu font
HapusFont()
' menetapkan font menjadi Times New
Roman
mnuitmTimes.Checked = True
lblTampil.Font = New Font("Comic Sans MS", 48, _
lblTampil.Font.Style)
End
Sub ' mnuitmComic_Click
' toggle checkmark dan menetapkan gaya
font tebal
Private
Sub TebalToolStripMenuItem_Click( _
ByVal
sender As System.Object, ByVal e As System.EventArgs) _
Handles
mnuitmTebal.Click
' toggle checkmark
mnuitmTebal.Checked = Not mnuitmTebal.Checked
' menggunakan Xor untuk mentoggle
lblTampil.Font = New Font( _
lblTampil.Font.FontFamily, 48, _
lblTampil.Font.Style Xor
FontStyle.Bold)
End
Sub ' TebalToolStripMenuItem_Click
' toggle checkmark dan menetapkan gaya
font miring
Private
Sub MiringToolStripMenuItem_Click( _
ByVal
sender As System.Object, ByVal e As System.EventArgs) _
Handles
mnuitmMiring.Click
' toggle checkmark
mnuitmMiring.Checked = Not mnuitmMiring.Checked
' menggunakan Xor untuk mentoggle
lblTampil.Font = New Font( _
lblTampil.Font.FontFamily, 48, _
lblTampil.Font.Style Xor
FontStyle.Italic)
End
Sub ' MiringToolStripMenuItem_Click
End Class ' FrmMenu
|
Gambar 12.4 Keluaran
program pada kode 12.1
Anda memulainya dengan menggeret MenuStrip dari ToolBox ke dalam form. Kemudian, struktur menu secara keseluruhan diciptakan
menggunakan Menu Designer. Menu File (mnuFile, baris 16) memiliki item Tentang (mnuitmTentang,
baris 17) dan Keluar (mnuitmKeluar, baris 18); menu Format (mnuFormat, baris 21) memiliki dua submenu. Submenu pertama, Warna (mnuitmWarna, baris 24), memuat item menu Hitam (mnuitmHitam,
baris 25), Biru (mnuitmBiru, baris 26), Merah (mnuitmMerah, baris 27), dan Hijau
(mnuitmHijau, baris 28). Submenu
kedua, Font (mnuitmFont, baris 31), memuat item-item menu Times New Roman (mnuitmTimes,
baris 32), Courier (mnuitmCourier, baris 33), Comic Sans (mnuitmComic, baris 34), Tebal
(mnuitmTebal, baris 36), dan Miring (mnuitmMiring, baris 37).
Item menu Tentang pada menu File
menampilkan sebuah MessageBox ketika
diklik (baris 46-48). Item menu Keluar
menutup aplikasi melalui metode Shared
Exit dari kelas Application
(baris 56). Metode-metode Shared
pada kelas Application mengendalikan
eksekusi program. Metode Exit
menyebabkan aplikasi berhenti.
Anda membuat item-item pada submenu Warna (Hitam, Biru, Merah, dan Hijau) menjadi ekslusif secara mutual, dimana pengguna hanya dapat
memilih satu warna pada suatu waktu. Untuk mengindikasikan fakta ini kepada
pengguna, properti RadioCheck pada
tiap item menu Warna ditetapkan
menjadi True. Ini menyebabkan sebuah
tombol radio muncul ketika pengguna menyeleksi sebuah item menu Warna.
Setiap item menu Warna memiliki event handler
sendiri. Handler untuk warna Hitam adalah mnuitmHitam_Click (baris 70-79). Sama halnya, event handler untuk warna Biru,
Merah, dan Hijau adalah mnuitmBiru_Click
(baris 82-91), mnuitmHitam_Click (baris
94-103), dan mnuitmHitam_Click (baris
106-115). Setiap item menu Warna
harus eksklusif secara mutual, sehingga event
handler memanggil metode HapusWarna
(baris 60-67) sebelum menetapkan properti Checked
menjadi True. Metode HapusWarna menetapkan properti Checked untuk tiap warna menjadi False, untuk mencegah lebih dari satu
item menu diseleksi pada waktu yang bersamaan.
Menu Font memuat tiga item menu untuk tipe font (Courier, Times New Roman,
dan Comic Sans) dan dua item menu untuk gaya font (Tebal dan Miring). Event handler untuk item-item menu
tipe-font Times New Roman, Courier, dan Comic Sans adalah mnuitemTimes_Click
(baris 127-137), mnuitmCourier_Click
(baris 140-150), dan mnuitmComic_Click
(baris 153-163). Semua event handler
ini berperilaku sama dengan event handler
untuk item menu Warna. Setiap item
menu Font harus eksklusif secara
mutual, sehingga event handler
memanggil metode HapusWarna (baris
118-124) sebelum menetapkan properti Checked
menjadi True. Metode HapusWarna menetapkan properti Checked untuk tiap warna menjadi False, untuk mencegah lebih dari satu
item menu diseleksi pada waktu yang bersamaan.
LinkLabel
Kontrol LinkLabel menampilkan link ke sumber lain, seperti file atau
halaman Web. LinkLabel ditampilkan
sebagai teks yang bergaris-bawah (berwarna biru secara default). Ketika mouse
bergerak ke arah link tersebut, pointer berubah menjadi bentuk tangan; ini sama
dengan watak hyperlink pada halaman Web. Link dapat berubah warna untuk
mengindikasikan bahwa link tersebut baru, baru saja dikunjungi, atau aktif.
Ketika diklik, LinkLabel
membangkitkan event LinkClicked. Kelas LinkLabel diderivasi dari kelas Label dan mewarisi semua fungsionalitas kelas Label.
Properti dan event LinkLabel
|
Deskripsi
|
Properti
ActiveLinkColor
LinkArea
LinkBehavior
LinkColor
Links
LinkVisited
Text
UseMnemonic
VisitedLinkColor
-----------------------
Event
LinkClicked
|
Menspesifikasi warna dari link yang
aktif ketika diklik. Warna merah adalah warna default.
Menspesifikasi bagian teks dimana LinkLabel adalah bagian dari link.
Menspesifikasi watak link, seperti
bagaimana penampakan link ketika mouse digerakkan ke atasnya.
Menspesifikasi warna asli dari semua
link sebelum dikunjungi. Biru adalah warna default.
Mencantumkan objek-objek LinkLabel.Link, yang merupakan semua
link yang dimuat di dalam LinkLabel.
Jika True, link tampak seperti telah dikunjungi (warnanya berubah
menjadi warna yang dispesifikasi oleh properti VisitedLinkColor). Nilai default adalah False.
Menspesifikasi teks pada kontrol.
Jika True, karakter &
di dalam properti Text berperan
sebagai shortcut.
Menspesifikasi warna link yang
dikunjungi. Ungu adalah warna default.
----------------------------------------------------------------------------------------------
Dibangkitkan
ketika link diklik. Ini adalah event
default ketika kontrol diklik-ganda pada designer.
|
Gambar 12.5 Beberapa
properti dan event pada LinkLabel
Kelas FrmLinkLabel (kode 12.2) menggunakan tiga LinkLabel, untuk menghubungkan ke drive C:, Website Kompas (www.kompas.com),
dan aplikasi Notepad. Properti Text pada LinkLabel, lnklblCDrive
(baris 10), lnklblKompas (baris 11),
dan lnklblNotepad (baris 12)
mendeskripsikan setiap tujuan link.
Event handler untuk instans LinkLabel memanggil metode Start dari kelas Process (namespace System.Diagnostics).
Metode ini membolehkan Anda untuk mengeksekusi program lain dari aplikasi Anda.
Metode Start dapat mengambil sebagai
argumen file yang akan dibuka (sebuah String)
atau aplikasi yang akan dijalankan dan argumen command-line (dua String). Argumen-argumen pada metode Start berformat sama dengan perintah Run pada Windows. Untuk aplikasi,
ekstensi .exe dapat diabaikan.
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
|
' Kode 12.2: UjiLinkLabel.vb
' Menggunakan LinkLabel untuk menciptakan hyperlink.
Imports System.Windows.Forms
Public Class FrmLinkLabel
Inherits Form
' linklabel untuk drive C:\,
www.kompas.com dan Notepad
Friend WithEvents lnklblCDrive As LinkLabel
Friend WithEvents lnklblKompas As LinkLabel
Friend WithEvents lnklblNotepad As LinkLabel
' kode yang dibangkitkan oleh
Visual Studio .NET
' menjelajah drive C:\
Private Sub lnklblCDrive_LinkClicked(ByVal sender As _
System.Object, ByVal e As _
System.Windows.Forms.LinkLabelLinkClickedEventArgs) _
Handles lnklblCDrive.LinkClicked
lnklblCDrive.LinkVisited =
True
System.Diagnostics.Process.Start("C:\")
End Sub '
lnklblCDrive_LinkClicked
' mengunjungi www.kompas.com
pada Web browser
Private Sub lnklblKompas_LinkClicked(ByVal sender As _
System.Object, ByVal e As _
System.Windows.Forms.LinkLabelLinkClickedEventArgs) _
Handles lnklblKompas.LinkClicked
lnklblKompas.LinkVisited =
True
System.Diagnostics.Process.Start( _
"IExplore", "http://www.kompas.com")
End Sub '
lnklblKompas_LinkClicked
' menjalankan aplikasi Notepad
Private Sub lnklblNotepad_LinkClicked(ByVal sender As _
System.Object, ByVal e As _
System.Windows.Forms.LinkLabelLinkClickedEventArgs) _
Handles lnklblNotepad.LinkClicked
lnklblNotepad.LinkVisited
= True
' menjalankan aplikasi notepad
' full path tidak
dibutuhkan
System.Diagnostics.Process.Start("notepad")
End Sub '
lnklblNotepad_LinkClicked
End Class ' FrmLinkLabel
|
Gambar 12.6 Keluaran
program pada kode 12.2
ListBox
dan CheckedListBox
Kontrol ListBox membolehkan pengguna dalam melihat dan memilih beberapa
item pada sebuah daftar. ListBox
adalah entitas GUI statis, yang berarti bahwa pengguna tidak dapat menambahkan
beberapa item pada daftar, kecuali jika aplikasi menambahkannya secara
programatikal.
Gambar 12.7 ListBox dan CheckedListBox pada sebuah form
Kontrol CheckedListBox memperluas atau mengembangkan ListBox dengan menyertakan sebuah checkbox di samping setiap item di dalam daftar. Hal ini memampukan
pengguna untuk memilih beberapa item sekaligus, sama seperti kontrol CheckBox (pengguna juga dapat memilih
beberapa item sekaligus pada ListBox,
meskipun tidak secar default). Gambar 12.7 menampilkan ListBox dan CheckedListBox.
Pada kedua kontrol, scrollbar muncul
jika jumlah item melebihi area yang tersedia pada ListBox dan CheckedListBox.
Gambar 12.8 mencantumkan beberapa properti, metode, dan event ListBox.
Properti, metode, dan event ListBox
|
Deskripsi
|
Properti
Items
MultiColumn
SelectedIndex
SelectedIndices
SelectedItem
SelectedItems
SelectionMode
Sorted
-----------------------
Metode
GetSelected
-------------------------
Event
SelectedIndex-
Changed
|
Koleksi item pada ListBox.
Mengindikasikan apakah ListBox dapat memecah daftar menjadi
beberapa kolom. Kolom jamak mengeliminasi kebutuhan scrollbar vertikal.
Menghasilkan indeks dari item yang
diseleksi. Jika pengguna memilih beberapa item, properti ini secara acak
menghasilkan salah satu indeks yang dipilih; jika tidak ada item yang
diseleksi, properti menghasilkan -1.
Menghasilkan sebuah koleksi yang
memuat beberapa indeks dari semua item yang diseleksi.
Menghasilkan sebuah referensi yang
menunjuk ke item yang dipilih (jika terdapat beberapa item yang diseleksi, ia
menghasilkan item dengan nomor indeks terendah).
Menghasilkan sebuah koleksi yang
memuat item-item yang diseleksi.
Menentukan jumlah item yang dapat
diseleksi, dan cara dimana beberapa item dapat diseleksi sekaligus. Nilai None, One, MultiSimple
(beberapa seleksi diijinkan) atau MultiExtended
(beberapa seleksi diijinkan menggunakan kombinasi kunci arrow atau klik mouse dan kunci Shift dan Control).
Mengindikasikan apakah item-item yang
dipilih diurutkan secara alfabetikal. Penetapan nilai properti ini menjadi True akan mengurutkannya. Nilai
default adalah False.
----------------------------------------------------------------------------------------------
Mengambil sebuah indeks sebagai
argumen, dan menghasilkan True
jika item terkait diseleksi.
----------------------------------------------------------------------------------------------
Dibangkitkan ketika indeks yang
diseleksi berubah. Ini adalah event
default ketika kontrol diklik-ganda pada designer.
|
Gambar 12.8 Beberapa
properti, metode, dan event ListBox.
Kode 12.3 menggunakan kelas FrmListBox untuk menambah, menghapus,
dan membersihkan item-item dari ListBox listTampil (baris 10). Kelas FrmListBox
menggunakan TextBox txtMasukan (baris 13) untuk membolehkan
pengguna dalam mengetikkan item baru. Ketika pengguna mengklik tombol Tambah (cmdTambah pada baris 16), item baru akan muncul pada lstTampil. Sama halnya, jika pengguna
menyeleksi sebuah item dan mengklik Hapus
(cmdHapus pada baris 17), maka item
tersebut akan terhapus. Ketika diklik, Bersih
(cmdBersih pada baris 18) akan
menghapus semua entri pada lstTampil.
Pengguna dapat menghentikan aplikasi dengan mengklik Keluar (cmdKeluar pada
baris 19).
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
55
56
|
' Kode 12.3: UjiListBox.vb
' Program untuk menambah,
menghapus, dan membersihkan item pada ListBox.
Imports
System.Windows.Forms
Public Class
FrmListBox
Inherits
Form
' memuat daftar elemen oleh pengguna
Friend
WithEvents lstTampil As
ListBox
' user-input textbox
Friend
WithEvents txtMasukan As
TextBox
' tombol menambah, menghapus,
membersihkan, dan keluar
Friend
WithEvents cmdTambah As Button
Friend
WithEvents cmdHapus As Button
Friend
WithEvents cmdBersih As Button
Friend
WithEvents cmdKeluar As Button
' kode yang dibangkitkan oleh Visual
Studio .NET
' menambah item baru (teks dari kotak masukan) dan
membersihkan kotak masukan
Private
Sub cmdTambah_Click(ByVal
sender As System.Object, _
ByVal
e As System.EventArgs) Handles cmdTambah.Click
lstTampil.Items.Add(txtMasukan.Text)
txtMasukan.Text = ""
End
Sub ' cmdTambah_Click
' menghapus item jika diseleksi
Private
Sub cmdHapus_Click(ByVal
sender As System.Object, _
ByVal
e As System.EventArgs) Handles cmdHapus.Click
' menghapus hanya jika item diseleksi
If
lstTampil.SelectedIndex <> -1 Then
lstTampil.Items.RemoveAt(lstTampil.SelectedIndex)
End
If
End
Sub ' cmdHapus_Click
' menghapus semua item
Private
Sub cmdBersih_Click(ByVal
sender As System.Object, _
ByVal
e As System.EventArgs) Handles cmdBersih.Click
lstTampil.Items.Clear()
End
Sub ' cmdBersih_Click
' keluar aplikasi
Private
Sub cmdKeluar_Click(ByVal
sender As System.Object, _
ByVal
e As System.EventArgs) Handles cmdKeluar.Click
Application.Exit()
End
Sub ' cmdKeluar_Click
End Class ' FrmListBox
|
Gambar 12.9 Keluaran
program pada kode 12.3
Event handler cmdTambah_Click (baris 24-29) memanggil
metode Add dari koleksi Items pada ListBox. Metode ini mengambil sebuah String sebagai item yang akan ditambahkan pada lstTampil. Pada kasus ini, String
yang digunakan adalah teks masukan pengguna, atau txtMasukan.Text (baris 27). Setelah item ditambahkan, txtMasukan.Txt dibersihkan (baris 28).
Event handler cmdHapus_Click (baris 32-40) memanggil
metode Remove dari koleksi Items. Event handler cmdHapus_Click
pertama-tama menggunakan properti SelectedIndex
dalam menentukan indeks mana yang akan dihapus. Kecuali jika SelectedIndex kosong (-1) (baris 36),
maka handler akan menghapus item yang
berkaitan dengan indeks yang dipilih.
Event handler cmdBersih_Click (baris 43-47) memanggil
metode Clear dari koleksi Items (baris 46). Ini akan menghapus
semua entri pada lstTampil.
Terakhir, event handler cmdKeluar_Click (baris 50-54)
menghentikan aplikasi, dengan memanggil metode Application.Exit (baris 53).
Kontrol CheckedListBox diderivasi dari kelas ListBox dan menyertakan sebuah sebuah checkbox di samping setiap item. Seperti pada ListBox, item dapat ditambahkan menggunakan metode Add dan AddRange atau melalui String
Collection Editor. CheckedListBox
mengimplikasikan bahwa beberapa item dapat diseleksi bersamaan, dan beberapa
nilai yang mungkin untuk properti SelectionMode
adalah None dan One. Nilai One
mengijinkan seleksi jamak (beberapa seleksi), karena tidak ada pembatasan.
Pengguna dapat memilih sebanyak mungkin item yang diperlukan. Beberapa properti
dan event dari CheckedListBox dicantumkan pada Gambar 12.10.
Event ItemCheck dibangkitkan ketika pengguna mencentang
atau tidak mencentang sebuah item CheckedListBox.
Properti argumen event CurrentValue dan NewValue menghasilkan nilai CheckState
untuk keadaan sekarang dan keadaan baru dari item. Pembandingan nilai-nilai
tersebut memampukan programer untuk menentukan apakah item CheckedListBox dipilih atau tidak dipilih (dicentang atau tidak
dicentang). Kontrol CheckedListBox
mendapatkan properti SelectedItems
dan SelectedIndices (yang diwarisi
dari kelas ListBox). Kontrol ini
juga mencakup properti CheckedItems
dan CheckedIndices, yang
menghasilkan informasi tentang item dan indeks yang dicentang.
Properti, metode, dan event ListBox
|
Deskripsi
|
Properti
CheckedItems
CheckedIndices
SelectionMode
CurrentValue
Index
NewValue
-----------------------
Metode
GetItemChecked
-------------------------
Event
ItemCheck
|
Memuat koleksi item yang dicentang. Ini
membedakannya dari item yang diseleksi, yang diterangi (highlighted, tetapi tidak dicentang).
Menghasilkan indeks dari semua item
yang dicentang. Ini tidak sama dengan indeks yang diseleksi.
Menentukan berapa banyak item yang
dicentang. Nilai-nilai yang mungkin adalah One (mengijinkan beberapa item dicentang sekaligus) atau None (tidak mengijinkan satupun item
dicentang).
Mengindikasikan apakah item sekarang
dicentang atau tidak dicentang. Nilai-nilai yang mungkin adalah Checked, Unchecked, dan Indeterminate.
Menghasilkan indeks dari item yang
berubah.
Menspesifikasi keadaan baru dari
item.
----------------------------------------------------------------------------------------------
Mengambil sebuah indeks sebagai
argumen dan menghasilkan True jika
item terkait dicentang.
Dibangkitkan ketika sebuah item
dicentang atau tidak dicentang.
|
Gambar 12.10 Beberapa
properti, metode, dan event CheckedListBox.
Pada kode 12.4, kelas FrmCheckedListBox menggunakan sebuah CheckedListBox dan sebuah ListBox untuk menampilkan daftar buku
pilihan pengguna. CheckedListBox,
dinamai chklstMasukan (baris 10),
mengijinkan pengguna memilih beberapa judul buku. Pada String Collection Editor, item-item yang ditambahkan: C++, Java, Visual Basic, C Sharp, MATLAB, Perl, Delphi, dan Python. ListBox, dinamai
lstTampil (baris 13), menampilkan
pilihan pengguna. Pada screenshot, CheckedListBox ditempatkan di sebelah
kiri, ListBox di sebelah kanan.
Ketika pengguna mencentang atau tidak
mencentang sebuah item pada CheckedListBox
chklstMasukan, sebuah event ItemCheck dibangkitkan. Event
handler chklstMasukan (baris 18-34 menangani event ini. Struktur kontrol If/Else (baris 28-32) menentukan apakah
pengguna mencentang atau tidak mencentang sebuah item pada CheckedListBox.
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
|
' Kode 12.4: UjiCheckedListBox.vb
' Menggunakan CheckedListBox untuk menambahkan item.
Imports System.Windows.Forms
Public Class FrmCheckedListBox
Inherits Form
' daftar judul buku yang
tersedia
Friend WithEvents chklstMasukan As CheckedListBox
' menggunakan daftar seleksi
Friend WithEvents lstTampil As
ListBox
' kode yang dibangkitkan oleh
Visual Studio .NET
' item akan dibuah,
ditambahkan, atau dihapus dari lstTampil
Private Sub chklstMasukan_SelectedIndexChanged( _
ByVal sender As
System.Object, _
ByVal e As
System.EventArgs) _
Handles chklstMasukan.SelectedIndexChanged
' mendapatkan referensi
dari item yang diseleksi
Dim item As String =
chklstMasukan.SelectedItem
' jika item dicentang,
ditambahkan pada listbox
' sebaliknya dihapus dari
listbox
If e.NewValue = CheckState.Checked Then
lstTampil.Items.Add(item)
Else
lstTampil.Items.Remove(item)
End If
End
Sub '
chklstMasukan_SelectedIndexChanged
End Class ' FrmCheckedListBox
|
Gambar 12.11 Keluaran
program pada kode 12.4
ComboBox
Kontrol ComboBox mengkombinasikan fitur-fitur TextBox dengan sebuah drop-down
list. Drop-down list adalah
sebuah komponen GUI yang memuat sebuah daftar, dimana di dalamnya sebuah nilai
dapat diseleksi. Secara default, pengguna dapat memasukkan teks ke dalam kotak
teks atau mengklik anak-panah bawah untuk menampilkan item-item yang telah
didefinisikan. Jika pengguna memilih sebuah elemen dari daftar tersebut, elemen
tersebut ditampilkan pada kotak teks. Jika daftar tersebut memuat lebih banyak
elemen dari yang bisa ditampilkan, maka scrollbar
akan muncul dengan sendirinya.
Kelas FrmComboBox (kode 12.5) memampukan pengguna untuk menyeleksi sebuah
bangun untuk digambarkan menggunakan ComboBox.
Kotak combo pada contoh ini tidak bisa diedit, sehingga pengguna tidak bisa
memasukkan item sendiri.
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
' Kode 12.5:
UjiComboBox.vb
' Menggunakan ComboBox
untuk menyeleksi bangun untuk digambarkan.
Imports
System.Windows.Forms
Imports System.Drawing
Public Class
FrmComboBox
Inherits
Form
' memuat daftar bangun (lingkaran,
persegi, elips, dan pie)
Friend
WithEvents cboCitra As ComboBox
' kode yang dibangkitkan oleh Visual
Studio .NET
' mendapatkan indeks, menggambar bangun
Private
Sub cboCitra_SelectedIndexChanged( _
ByVal
sender As System.Object, _
ByVal
e As System.EventArgs) _
Handles
cboCitra.SelectedIndexChanged
' menciptakan objek Graphics, pen dan
brush
Dim
grafikKu As Graphics =
MyBase.CreateGraphics()
' menciptakan Pen menggunakan warna
DarkRed
Dim
penKu As New Pen(Color.DarkRed)
' menciptakan SolidBrush menggunakan
warna DarkRed
Dim
solidBrushKu As New SolidBrush(Color.DarkRed)
' membersihkan area penggambaran
dengan menetapkannya menjadi putih
grafikKu.Clear(Color.White)
' menemukan indeks, menggambar bangun
yang diinginkan
Select
Case cboCitra.SelectedIndex
Case 0 ' kasus lingkaran diseleksi
grafikKu.DrawEllipse(penKu,
50, 50, 150, 150)
Case 1 ' kasus persegi diseleksi
grafikKu.DrawRectangle(penKu,
50, 50, 150, 150)
Case 2 ' kasus elips diseleksi
grafikKu.DrawEllipse(penKu,
50, 85, 150, 115)
Case 3 ' kasus pie diseleksi
grafikKu.DrawPie(penKu, 50,
50, 150, 150, 0, 45)
Case 4 ' kasus lingkaran terisi diseleksi
grafikKu.FillEllipse( _
solidBrushKu, 50, 50, 150,
150)
Case 5 ' kasus persegi terisi diseleksi
grafikKu.FillRectangle( _
solidBrushKu, 50, 50, 150,
150)
Case 6 ' kasus elips terisi diseleksi
grafikKu.FillEllipse( _
solidBrushKu, 50, 85, 150,
115)
Case 7 ' kasus pie terisi diseleksi
grafikKu.FillPie( _
solidBrushKu, 50, 50, 150,
150, 0, 45)
End
Select
End
Sub '
cboCitra_SelectedIndexChanged
End Class ' FrmComboBox
|
Gambar 12.12 Keluaran
program pada kode 12.5
TreeView
Kelas FrmTreeViewDirectory (kode 12.6) menggunakan TreeView dalam menampilkan struktur direktori pada sebuah komputer.
Simpul akar adalah drive C:\, dan
setiap subfolder dari C:\ menjadi
simpul anak. Ini sama dengan yang digunakan pada Windows Explorer. Semua folder dapat diekspansi atau dilipat
menggunakan pengklikan.
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
55
56
57
58
59
60
61
62
63
64
|
' Kode 12.6:
UjiTreeViewDirectoryStructure.vb
' Menggunakan TreeView
untuk menampilkan struktur direktori.
Imports
System.Windows.Forms
Imports System.IO
Public Class
FrmTreeViewDirectory
Inherits
Form
' memuat struktur direktori drive c:\
Friend
WithEvents pohonDirektori As TreeView
' kode yang dibangkitkan oleh Visual
Studio .NET
' menambah semua subfolder dari
nilaiDirektori ke simpulInduk
Private
Sub TampilkanTreeView(ByVal nilaiDirektori As String, _
ByVal
simpulInduk As TreeNode)
' mengisi simpul sekarang dengan
subdirektori
Try
' mendapatkan semua subfolder
Dim arrayDirektori As
String() = _
Directory.GetDirectories(nilaiDirektori)
If arrayDirektori.Length <> 0 Then ' jika sedikitnya satu
Dim direktoriSekarang As
String
' untuk setiap subdirektori,
ciptakan new TreeNode,
' sebagai anak dari simpul
sekarang dan
' secara rekursif mengisi
simpul-simpul anak dengan subdirektori
For Each direktoriSekarang In
arrayDirektori
' menciptakan TreeNode
untuk simpul sekarang
Dim simpulKu As
TreeNode = _
New TreeNode(direktoriSekarang)
' menambahkan simpul
direktori sekarang ke simpul induk
simpulInduk.Nodes.Add(simpulKu)
' secara rekursif mengisi
setiap direktori
TampilkanTreeView(direktoriSekarang, simpulKu)
Next
End If
' menangkap exception
Catch
unauthorized As
UnauthorizedAccessException
simpulInduk.Nodes.Add("Akses Ditolak")
End
Try
End
Sub ' TampilkanTreeView
' dipanggil oleh sistem
Private
Sub FrmTreeViewDirectory_Load(ByVal
sender As Object, _
ByVal
e As System.EventArgs) Handles MyBase.Load
' menambahkan drive c:\ drive ke
pohonDirektori
pohonDirektori.Nodes.Add("C:\")
TampilkanTreeView("C:\", pohonDirektori.Nodes(0))
End
Sub ' FrmTreeViewDirectory_Load
End Class ' FrmTreeViewDirectory
|
Gambar 12.13 Keluaran
program pada kode 12.6
Kontrol
Tab
Programer dapat menambahkan TabControl secara visual dengan
menggeretnya ke dalam sebuah form. Untuk menambahkan TabPage pada Visual Studio .NET, Anda bisa mengklik-kanan TabControl, dan memilih Add Tab (Gambar 12.14).
Kelas FrmTab (kode 12.7) menggunakan sebuah TabControl untuk menampilkan berbagai opsi yang berkaitan dengan
teks pada label (Warna, Ukuran, dan Pesan). TabPage terakhir
menampilkan pesan Tentang, yang
mendeskripsikan kegunaan TabControl.
Gambar 12.14 Cara penambahan
TabPage pada TabControl
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
' Kode 12.7:
MenggunakanTab.vb
' Menggunakan TabControl
untuk menampilkan berbagai pengaturan.
Imports
System.Windows.Forms
Public Class
FrmTab
Inherits
Form
' label untuk merefleksikan perubahan
teks
Friend
WithEvents lblTampil As Label
' kontrol tab yang memuat tbpWarna,
' tbpUkuran, tbpPesan dan tbpTentang
Friend
WithEvents tbcOpsiTeks As
TabControl
' TabPage memuat opsi warna
Friend
WithEvents tbpWarna As TabPage
Friend
WithEvents radHitam As
RadioButton
Friend
WithEvents radMerah As
RadioButton
Friend
WithEvents radHijau As
RadioButton
' TabPage yang opsi ukuran font
Friend
WithEvents tbpUkuran As
TabPage
Friend
WithEvents radUkuran12 As
RadioButton
Friend
WithEvents radUkuran16 As
RadioButton
Friend
WithEvents radUkuran20 As
RadioButton
' TabPage yang memuat opsi teks
Friend
WithEvents tbpPesan As TabPage
Friend
WithEvents radHallo As
RadioButton
Friend
WithEvents radSlmtJalan As
RadioButton
' TabPage yang memuat pesan
Friend
WithEvents tbpTentang As
TabPage
Friend
WithEvents lblPesan As Label
' kode yang dibangkitkan oleh Visual
Studio .NET
' event handler untuk tombol radio hitam
Private
Sub radHitam_CheckedChanged( _
ByVal
sender As System.Object, ByVal e As System.EventArgs) _
Handles
radHitam.CheckedChanged
lblTampil.ForeColor = Color.Black
End
Sub ' radHitam_CheckedChanged
' event handler untuk tombol radio merah
Private
Sub radMerah_CheckedChanged( _
ByVal
sender As System.Object, ByVal e As System.EventArgs) _
Handles
radMerah.CheckedChanged
lblTampil.ForeColor = Color.Red
End
Sub ' radMerah_CheckedChanged
' event handler untuk tombol radio hijau
Private
Sub radHijau_CheckedChanged( _
ByVal
sender As System.Object, ByVal e As System.EventArgs) _
Handles
radHijau.CheckedChanged
lblTampil.ForeColor = Color.Green
End
Sub ' radHijau_CheckedChanged
' event handler untuk tombol radio 12
point
Private
Sub radUkuran12_CheckedChanged( _
ByVal
sender As System.Object, ByVal e As System.EventArgs) _
Handles
radUkuran12.CheckedChanged
lblTampil.Font = New Font(lblTampil.Font.Name, 12)
End
Sub ' radUkuran12_CheckedChanged
' event handler untuk tombol radio 16
point
Private
Sub radUkuran16_CheckedChanged( _
ByVal
sender As System.Object, ByVal e As System.EventArgs) _
Handles
radUkuran16.CheckedChanged
lblTampil.Font = New Font(lblTampil.Font.Name, 16)
End Sub '
radUkuran16_CheckedChanged
' event handler untuk tombol radio 20
point
Private
Sub radUkuran20_CheckedChanged( _
ByVal
sender As System.Object, ByVal e As System.EventArgs) _
Handles
radUkuran20.CheckedChanged
lblTampil.Font = New Font(lblTampil.Font.Name, 20)
End
Sub ' radUkuran20_CheckedChanged
' event handler untuk tombol radio pesan
"Hallo"
Private
Sub radHallo_CheckedChanged( _
ByVal
sender As System.Object, ByVal e As System.EventArgs) _
Handles
radHallo.CheckedChanged
lblTampil.Text = "Hallo!"
End
Sub ' radHallo_CheckedChanged
' event handler untuk tombol radio pesan
"Selamat Jalan"
Private
Sub radSlmtJalan_CheckedChanged( _
ByVal
sender As System.Object, ByVal e As System.EventArgs) _
Handles
radSlmtJalan.CheckedChanged
lblTampil.Text = "Selamat Jalan"
End
Sub ' radSlmtJalan_CheckedChanged
End Class ' FrmTab
|
Gambar 12.15 Keluaran
program pada kode 12.7 (bagian 1)
Gambar 12.15 Keluaran
program pada kode 12.7 (bagian 2)
Latihan
1.
Tulislah sebuah program yang menampilkan nama-nama
propinsip pada sebuah ComboBox.
Ketika sebuah item diseleksi dari ComboBox,
hal itu akan membuat item tersebut terhapus.
2.
Modifikasi pekerjaan Anda pada No. 1 dengan
menambahkan sebuah ListBox. Ketika
pengguna menyeleksi sebuah item dari ComboBox,
maka hal itu akan membuat item tersebut terhapus dari ComboBox dan menambahkan item itu pada ListBox. Program Anda harus memastikan bahwa ComboBox memuat sedikitnya satu item. Jika tidak, tampilkan sebuah
pesan, menggunakan kotak pesan, dan hentikan eksekusi program.
3.
Tulislah sebuah program agar pengguna memasukkan
beberapa String pada sebuah TextBox. Setiap String yang dimasukkan ditambahkan ke sebuah ListBox. Pada saat setiap String ditambahkan ke ListBox, pastikan bahwa semua String terurut secara alfabetikal.
No comments:
Post a Comment