11.
GUI
Pengantar
GUI (graphical user interface) memampukan pengguna untuk berinteraksi
secara visual dengan sebuah program. GUI juga memberikan tampilan yang semarak
dan indah. GUI juga membuat pengguna tidak perlu mengingat sederet kunci (keystroke) dalam menjalankan aplikasi.
GUI dibangun dari komponen-komponen GUI
(yang kadangkala dikenal dengan kontrol atau widget). Komponen GUI adalah sebuah objek yang bisa berinteraksi dengan
pengguna melalui mouse atau keyboard. Beberapa komponen GUI yang
umum dijumpai dicantumkan pada Gambar 11.1.
Komponen
|
Deskripsi
|
Label
TextBox
Button
CheckBox
ComboBox
ListBox
Panel
ScrollBar
|
Sebuah area, yang di dalamnya ikon
atau teks (yang tak bisa diedit) ditampilkan.
Sebuah area, yang di dalamnya
pengguna memasukkan data dari keyboard.
Area ini juga dapat menampilkan informasi.
Sebuah area, yang memicu sebuah event ketika diklik.
Sebuah komponen, yang bisa diseleksi
atau dibiarkan tanpa diseleksi.
Sebuah daftar item, dimana pengguna
dapat memilih dengan mengklik sebuah item di dalam daftar atau dengan
mengetikkan di dalam sebuah kotak.
Sebuah area, yang menampilkan daftar
item. Pengguna dapat membuat pilihan dari daftar dengan mengklik item.
Beberapa elemen dapat diseleksi sekaligus.
Sebuah kontainer, yang di dalamnya
komponen-komponen ditempatkan.
Sebuah komponen, yang memampukan
pengguna untuk mengakses berbagai elemen yang tidak dapat dimuat oleh
kontainer kontrol.
|
Gambar 11.1 Beberapa
komponen dasar GUI
Windows
Form
Windows Form (juga dikenal
dengan WinForm) digunakan untuk
menciptakan GUI untuk program. Sebuah form
adalah elemen grafikal yang muncul pada desktop; ia dapat berupa dialog,
jendela, atau jendela MDI (multiple
document interface window). Komponen adalah sebuah instans dari suatu kelas
yang mengimplementasikan antarmuka IComponent,
yang mendefinisikan watak yang harus diimplementasikan komponen. Kontrol,
seperti tombol atau label, adalah sebuah komponen yang memiliki representasi
grafikal saat dijalankan.
Gambar 11.3 menampilkan semua komponen
dan kontrol Windows Forms yang dimuat
di dalam Toolbox. Screenshot pertama
menampilkan semua kontrol, dan screenshot terakhir menampilkan semua komponen.
Untuk menambahkan sebuah komponen atau kontrol pada Windows Form, pengguna dapat menyeleksi komponen atau kontrol dari Toolbox dan menggeretnya ke Windows Form. Perhatikan bahwa Pointer (ikon di atas daftar) bukanlah
sebuah komponen; ia memampukan programer untuk menggunakan pointer mouse.
Pada serangkaian jendela, jendela aktif
adalah jendela terdepan dan memiliki batang judul (title bar) diterangi.
Sebuah jendela menjadi jendela aktif ketika pengguna mengklik di manapun di
dalam jendela tersebut. Selama interaksi dengan jendela, jendela aktif
dikatakan memiliki fokus (focus).
Form berperan sebagai kontainer untuk
memuat komponen dan kontrol. Seperti yang terlihat pada Bab 3, ketika Anda
menggeret sebuah kontrol dari Toolbox
ke form, Visual Basic Studio .NET
membangkitkan kode untuk Anda, menginstansiasi komponen, dan menetapkan
properti dasarnya. Meskipun Anda sendiri dapat menuliskan kode tersebut, akan
jauh lebih mudah dalam menciptakan dan memodifikasi kontrol menggunakan jendela
Toolbox dan Properties dan membiarkan Visual Studio .NET menanganinya.
Ketika pengguna berinteraksi dengan
sebuah kontrol via mouse atau keyboard, event akan dibangkitkan. Secara umum, event adalah pesan yang dikirim oleh sebuah program untuk
memberitahu pada objek atau sekumpulan objek bahwa sebuah aksi telah terjadi. Sebagai
contoh, penekanan tombol OK pada MessageBox akan menghasilkan sebuah event. MessageBox menangani event
ini. Komponen MessageBox didesain
untuk menutup ketika event ditangani,
yang terjadi ketika tombol OK
diklik.
Setiap kelas yang disajikan pada bab ini
(form, komponen, dan kontrol) berada
di dalam namespace System.Windows.Forms.
Kelas Form, jendela dasar yang
digunakan oleh aplikasi Windows, sebenarnya adalah System.Windows.Forms.Form. Sama halnya, kelas Button sebenarnya adalah System.Windows.Forms.Button.
Gambar 11.3 mencantumkan beberapa properti, metode, dan event pada kelas Form.
Gambar 11.3 mencantumkan beberapa properti, metode, dan event pada kelas Form.
Properti dan Event Form
|
Deskripsi /Argumen Delegate dan Event
|
Properti
AcceptButton
AutoScroll
CancelButton
FormBorderStyle
Font
Text
-------------------------
Metode
Close
Hide
Show
-------------------------
Event
Load
|
Tombol yang terklik ketika kunci Enter ditekan.
Nilai Boolean yang membolehkan atau tak membolehkan scrollbar tampak (terlihat) ketika
dibutuhkan.
Tombol yang terklik ketika kunci Escape ditekan.
Gaya batas (border style) dari form
(yaitu, none, single, 3D, sizable).
Font dari teks yang tertampil pada form, dan font default dari kontrol
ditambahkan pada form.
Teks di dalam batang judul (title bar) pada form.
----------------------------------------------------------------------------------------------
Menutup sebuah form dan melepaskan semua sumberdaya. Form yang sudah ditutup tidak bisa dibuka kembali.
Menyembunyikan form (tidak menghancurkan form
atau melepaskan sumberdayanya).
Menampilkan form yang tersembunyi.
----------------------------------------------------------------------------------------------
Terjadi sebelum sebuah form
ditampilkan pada pengguna. Handler
untuk event ini ditampilkan di
dalam editor ketika form diklik-ganda pada Visual Studio .NET designer.
|
Gambar 11.3 Beberapa properti, metode, dan event pada kelas Form.
Model
Penanganan-Event
GUI dipicu oleh event (event driven),
yang menghasilkan event ketika pengguna program berinteraksi dengan GUI.
Interaksi yang umum terjadi mencakup menggerakkan mouse, mengklik mouse,
mengklik tombol, mengetik di dalam kotak-teks, menyeleksi sebuah item dari
menu, dan menutup jendela. Informasi event
dilewatkan kepada event handler, yang
merupakan metode yang dipanggil akibat terjadinya event. Sebagai contoh, perhatikan sebuah form yang mengubah warna
ketika tombol diklik. Pengklikan tombol menghasilkan sebuah event dan melewatkannya kepada event handler untuk tombol tersebut, menyebabkan kode event handler untuk mengubah warna form.
Event didasarkan pada
delegate, yang merupakan objek yang mereferensi metode. Delegate event bersifat multicast (kelas MulticastDelegate),
yang berarti bahwa ia merepresentasikan sekelompok delegate dengan sidik yang
sama. Delegate multicast membuat
pemanggila event dikirim secara
sekuensial ke semua delegate yang dimuat di dalam delegat multicast. Dalam model penanganan-event, delegate berperan sebagai perantara antara objek pemicu event dan metode event handler (Gambar 11.4).
Delegate memampukan kelas
menspesifikasi beberapa metode yang tidak diberi nama atau diimplementasikan
sampai kelas diinstansiasi. Sebagai contoh, para perancang kelas Form tidak menamai atau mendefenisikan
metode yang menangani event Click. Dengan menggunakan delegate,
kelas dapat menentukan kapan sebuah event
handler akan dipanggil. Para programer yang menciptakan form sendiri
kemudian dapat menamai dan mendefinisikan event
handler ini.
Begitu event dibangkitkan, sistem memanggil setiap metode (event handler) yang direferensi oleh
delegate. Setiap metode di dalam delegate harus memiliki sidik yang sama,
karena semua metode tersebut dilewatkan informasi yang sama.
Dimisalkan bahwa sebuah label akan
merespon bila diklik. Anda bisa memilih event
Click pada menu drop-down, seperti yang
ditampilkan pada Gambar 11.5. Potongan kode berikut menciptakan sebuah event handler kosong.
Private Sub lblOutput_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles
lblOutput.Click
End Sub
Ini adalah metode yang dipanggil ketika
form diklik. Anda bisa memprogram
agar form merespon event tersebut dengan menampilkannya
sebuah pesan pada MessageBox. Untuk
melakukannya, sisipkan statemen
MessageBox.Show("Label
diklik.")
ke dalam event handler. Event handler
sekarang memuat berikut:
Private Sub lblOutput_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles
lblOutput.Click
MessageBox.Show("Label diklik.")
End Sub
Anda dapat mengkompilasi dan
mengeksekusi program pada kode 11.1. Kapanpun label diklik, sebuah kotak pesan
akan menampilkan teks “Label diklik”.
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
|
' Kode 11.1:
ContohEventSederhana.vb
' Program mendemonstrasikan
event handler sederhana.
Public Class FrmSederhana
Inherits System.Windows.Forms.Form
#Region " Windows
Form Designer generated code "
Public
Sub New()
MyBase.New()
' This call is required by the
Windows Form Designer.
InitializeComponent()
' Add any initialization after the
' InitializeComponent() call
End
Sub
' Form overrides dispose to clean up the
component list.
Protected
Overrides Sub Dispose( _
ByVal
disposing As Boolean)
If
disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End
If
MyBase.Dispose(disposing)
End
Sub
Friend
WithEvents lblOutput As
System.Windows.Forms.Label
' Required by the Windows Form Designer
Private components As
System.ComponentModel.Container
' NOTE: The following procedure is
required by
' the Windows Form Designer.
' It can be modified using the Windows
Form Designer.
' Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()>
_
Private
Sub InitializeComponent()
Me.lblOutput = New System.Windows.Forms.Label()
Me.SuspendLayout()
'
'lblOutput
'
Me.lblOutput.Location
= New System.Drawing.Point(32, 48)
Me.lblOutput.Name
= "lblOutput"
Me.lblOutput.Size
= New System.Drawing.Size(168, 40)
Me.lblOutput.TabIndex
= 0
Me.lblOutput.Text
= "KLIK SAYA!"
'
'FrmSederhana
'
Me.AutoScaleBaseSize
= New System.Drawing.Size(5, 13)
Me.ClientSize
= New System.Drawing.Size(272, 237)
Me.Controls.AddRange(
_
New
System.Windows.Forms.Control() {Me.lblOutput})
Me.Name
= "FrmSederhana"
Me.Text
= "ContohEventSederhana"
Me.ResumeLayout(False)
End Sub
#End Region
'
handler untuk click event pada lblOutput
Private
Sub lblOutput_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles
lblOutput.Click
MessageBox.Show("Label diklik")
End
Sub ' lblOutput_Click
End Class ' FrmSimpleExample
|
IDE pada Visual Studio .NET
membangkitkan kode yang diapit oleh direktif preprosesor #Region dan #End Region
(baris 7-69). Kode yang perlu Anda tuliskan adalah kode penanganan event pada baris 75.
Label,
TextBox, dan Button
Label dipakai untuk menyediakan
instruksi atau informasi dan didefinisikan dengan kelas Label, yang diderivasi dari kelas Control. Sebuah Label
menampilkan teks read-only (teks yang tidak bisa dimodifikasi pengguna). Pada
saat program dijalankan, teks Label
dapat diubah dengan mengatur properti Text
pada Label. Gambar 11.6 mencantumkan
beberapa properti Label.
Kotak teks (kelas TextBox) adalah sebuah area dimana teks dapat ditampilkan oleh
program atau dimasukkan oleh pengguna via keyboard.
Kotak teks password adalah sebuah TextBox yang menyembunyikan informasi
yang dimasukkan oleh pengguna. Ketika pengguna mengetikkan karakter demi
karakter, kotak teks password hanya
menampilkan karakter-karakter *. Ketika sebuah nilai diberikan untuk properti PasswordChar, kotak teks menjadi kotak
teks password. Sebaliknya, ia hanya
menjadi kotak teks biasa.
Properti Label
|
Deskripsi
|
Font
Text
TextAlign
|
Font yang dipakai oleh teks pada
Label.
Teks yang muncul pada Label.
Penyejajaran teks Label. Ada tiga
pilihan posisi horisontal (left, center, atau right) dan tiga pilihan posisi vertikal (top, middle, atau bottom).
|
Gambar 11.7 Beberapa properti Label
Pengguna seringkali menjumpai dua jenis
kotak teks, ketika ingin masuk ke komputer atau ke Website tertentu. Kotak teks
nama-pengguna membiarkan pengguna memasukkan nama; kotak teks password membiarkan pengguna memasukkan password. Gambar 11.8 mencantumkan
beberapa properti dan event pada TextBox.
Tombol adalah sebuah kontrol yang
dipakai pengguna untuk memicu aksi tertentu. Program dapat memakai beberapa
jenis tombol, seperti checkboxes dan radio buttons. Semua jenis tombol
diderivasi dari ButtonBase
(namespace System.Windows.Forms),
yang mendefinisikan semua fitur tombol. Sekarang, hanya akan didiskusikan
mengenai kelas Button, sedangkan
jenis tombol lain akan diberikan belakangan. Teks pada sebuah Button disebut dengan label tombol (label button). Gambar 11.9 mencantumkan
beberapa properti dan event pada Button.
Properti dan Event TextBox
|
Deskripsi
|
Properti
AcceptsReturn
Multiline
PasswordChar
ReadOnly
ScrollBars
Text
-------------------------
Event
TextChanged
|
Jika True, penekanan Enter
menciptakan sebuah baris-baru (jika kotak teks dikonfigurasi menjadi multiline). Jika False, penekanan Enter
akan mengklik tombol default.
Jika True, TextBox akan
menyediakan baris jamak. Nilai default adalah False.
Jika sebuah karakter disediakan untuk
properti ini, TextBox akan menjadi
kotak teks password, dan karakter
yang dispesifikasi mengaburkan setiap karakter yang diketikkan pengguna. Jika
tidak ada karakter yang dispesifikasi, TextBox
menampilkan teks yang diketikkan.
Jika True, TextBox memiliki
warna latar keabuan, dan teksnya tidak dapat diedit. Nilai default adalah False.
Untuk kotak teks baris jamak (multiline), mengindikasikan kemunculan
batang-geser (none, horizontal, vertical, atau both).
Isi teks pada TextBox.
----------------------------------------------------------------------------------------------
Dibangkitkan ketika teks berubah pada
TextBox (yaitu, ketika pengguna
menambah atau menghapus karakter). Ketik programer mengklik-ganda kontrol TexBox pada Design, sebuah event
handler kosong untuk event ini
akan dibangkitkan.
|
Gambar 11.8 Beberapa properti dan event pada TextBox
Properti dan Event Button
|
Deskripsi
|
Properti
Text
-------------------------
Event
Click
|
Teks yang ditampilkan pada muka Button.
----------------------------------------------------------------------------------------------
Dibangkitkan ketika pengguna mengklik
kontrol. Ketika programer mengklik-ganda kontrol Button pada design view,
sebuah event handler kosong untuk event ini akan diciptakan.
|
Gambar 11.9 Beberapa properti dan event pada Button
Program pada kode 11.2 menggunakan
sebuah TextBox, sebuah Button, dan sebuah Label. Pengguna memasukkan teks pada kotak teks password dan mengklik Button,
menyebabkan teks yang dimasukkan ditampilkan pada Label. Kode 11.2 mendemonstrasikan bahwa teks yang dimasukkan ke
dalam kotak teks password tidak
dipengaruhi oleh nilai PasswordChar.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
' Kode 11.2: UjiLabelTextBoxButton.vb
' menggunakan sebuah TextBox, Label, dan Button untuk menampilkan
' teks tersembunyi pada kotak teks password.
Imports System.Windows.Forms
Public Class FrmUjiTombol
Inherits Form
Friend WithEvents txtMasukan As
TextBox ' bidang masukan
Friend WithEvents lblKeluaran As Label ' label untuk menampilkan
Friend WithEvents cmdTampil As
Button ' tombol aktivasi
' kode yang dibangkitkan oleh
Visual Studio .NET
Private Sub cmdTampil_Click(ByVal
sender As System.Object, _
ByVal e As
System.EventArgs) Handles
cmdTampil.Click
lblKeluaran.Text =
txtMasukan.Text
End Sub ' cmdTampil_Click
End Class ' FrmUjiTombol
|
Anda kemudian menetapkan properti Text pada cmdTampil menjadi “Tampilkan
Saya” dan menghapus properti Text
pada lblKeluaran dan textMasukan sehingga keduanya kosong
pada saat program dijalankan. Properti BorberStyle
pada lblKeluaran diatur menjadi Fixed3D, sehingga memberikan tampilkan
tiga dimensi. Perhatikan bahwa properti BorderStyle
untuk semua TextBox ditetapkan Fixed3D secara default. Karakter password ditetapkan menjadi karakter
asterisk pada properti PasswordChar.
Properti ini hanya bisa menerima satu karakter.
Anda menciptakan event handler untuk cmdTampil
dengan mengklik-ganda tombol Tampilkan
Saya. Ini akan membangkitkan sebuah event
handler kosong. Anda kemudian menambahkan kode event handler pada baris 20. Ketika pengguna mengklik tombol Tampilkan Saya, baris 20 akan
mendapatkan teks masukan pengguna pada txtMasukan
dan menampilkannya pada lblKeluaran.
GroupBox
dan Panel
GroupBox dan Panel menata beberapa kontrol pada GUI.
Sebagai contoh, beberapa tombol dengan fungsionalitas yang sama dapat
ditempatkan di dalam sebuah GroupBox
atau Panel di dalam Form Designer
pada Visual Studio .NET. Semua tombol tersebut serempak bergeser ketika GroupBox atau Panel digeser. Perbedaan utama antara kelas tersebut adalah bahwa GroupBox dapat menampilkan sebuah
kapsion (atau teks) dan tidak memiliki batang geser, sedangkan Panel dapat memiliki batang geser dan
tidak memiliki kapsion.
Untuk menciptakan sebuah GroupBox, Anda bisa menggeretnya dari toolbar dan menempatkannya pada sebuah form. Kemudian, Anda bisa menciptakan
beberapa kontrol dan menempatkannya di dalam GroupBox. Semua kontrol tersebut ditambahkan pada properti Controls pada GroupBox dan menjadi bagian dari kelas GroupBox. Properti Text
pada GroupBox menentukan kapsionnya.
Dua tabel berikut mencantumkan beberapa properti pada GroupBox (Gambar 11.11) dan Panel
(Gambar 11.12).
Properti GroupBox
|
Deskripsi
|
Controls
Text
|
Mencantumkan semua kontrol yang
dimuat GroupBox.
Menspesifikasi teks yang ditampilkan
di sisi atas GroupBox (kapsion).
|
Gambar 11.11 Beberapa properti GroupBox
Properti GroupBox
|
Deskripsi
|
AutoScroll
BorderStyle
Controls
|
Mengindikasikan apakah batang geser
muncul ketika Panel terlalu kecil
untuk menampilkan semua kontrol yang dimuatnya. Default adalah False.
Menetapkan tepi Panel (default None;
opsi lain adalah Fixed3D dan FixedSingle).
Mencantumkan semua kontrol yang
dimuat Panel.
|
Gambar 11.12 Beberapa properti Panel
Untuk menciptakan sebuah Panel, Anda bisa menggeretnya ke dalam form, dan menambahkan beberapa kontrol
ke dalamnya. Untuk menampilkan batang geser, tetapkan properti AutoScroll pada Panel menjadi True. Jika
Panel tidak dapat menampilkan semua
kontrol yang dimuatnya, maka batang geser akan muncul dengan sendirinya (Gambar
11.13).
Program pada kode 11.3 menggunakan
sebuah GroupBox dan sebuah Panel untuk menata beberapa tombol.
Semua tombol tersebut mengubah teks pada sebuah Label.
GroupBox (dinamakan groupBoxUtama, pada baris 10) memiliki
dua tombol, cmdHai (dilabel Hai, baris 11) dan cmdBah (dilabel Bah,
baris 12). Panel (dinamakan panelUtama, baris 18) juga memiliki dua
tombol, cmdKiri (dilabel Ujung Kiri, baris 19) dan cmdKanan (dilabel Ujung Kanan, baris 20).
Kontrol panelUtama memiliki properti
AutoScroll ditetapkan True, sehingga batang geser akan muncul
ketika isi Panel memerlukan ruang
yang lebih dari area Panel. Label (dinamakan dengan lblPesan) diinisiasi kosong.
Untuk menambahkan beberapa kontrol pada
grouBoxUtama, Visual Studio .NET
menciptakan sebuah array Windows.Forms.Control
yang memuat semua kontrol tersebut, yang kemudian dilewatkan kepada metode AddRange pada GroupBox. Sama halnya, untuk menambahkan beberapa kontrol pada panelUtama, Visual Studio .NET
menciptakan sebuah array Windows.Forms.Control
yang memuat semua kontrol tersebut, yang kemudian dilewatkan kepada metode AddRange pada Panel.
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
|
' Kode 11.3: ContohGroupBoxPanel.vb
' Menggunakan GroupBox dan
Panel untuk memuat beberapa tombol.
Imports
System.Windows.Forms
Public Class
FrmGroupBox
Inherits
Form
' GroupBox dan beberapa kontrolnya
Friend
WithEvents groupBoxUtama As
GroupBox
Friend
WithEvents cmdHai As Button
Friend
WithEvents cmdBah As Button
' menampilkan pesan
Friend
WithEvents lblPesan As Label
' Panel dan beberapa kontrolnya
Private
WithEvents panelUtama As Panel
Friend
WithEvents cmdKiri As Button
Friend
WithEvents cmdKanan As Button
' kode yang dibangkitkan Visual Studio
.NET
' beberapa event handler untuk mengubah
lblPesan
Private
Sub cmdHai_Click(ByVal sender As System.Object, _
ByVal
e As System.EventArgs) Handles cmdHai.Click
lblPesan.Text = "Hai ditekan"
End
Sub ' cmdHai_Click
' handler untuk tombol Bah
Private
Sub cmdBah_Click(ByVal sender As System.Object, _
ByVal
e As System.EventArgs) Handles cmdBah.Click
lblPesan.Text = "Bah ditekan"
End
Sub ' cmdBah_Click
' handler untuk tombol Kiri
Private
Sub cmdKiri_Click(ByVal sender
As System.Object, _
ByVal
e As System.EventArgs) Handles cmdKiri.Click
lblPesan.Text = "Ujung kiri ditekan"
End
Sub ' cmdKiri_Click
' handler untuk tombol Kiri
Private
Sub cmdKanan_Click(ByVal
sender As System.Object, _
ByVal
e As System.EventArgs) Handles cmdKanan.Click
lblPesan.Text = "Ujung kanan ditekan"
End
Sub ' cmdKanan_Click
End Class ' FrmGroupBox
|
CheckBox
dan RadioButton
Visual Basic .NET menyediakan dua
tombol keadaan, yaitu CheckBox dan RadioButton, yang dapat menjadi keadaan
on/off atau true/false. Kelas CheckBox
dan RadioButton diderivasi dari
kelas ButtonBase. Sebuah RadioButton berbeda dari CheckBox, dimana RadioButton biasanya diorganisir menjadi grup dan bahwa hanya salah
satu RadioButton pada grup yang
dapat dipilih (True).
Beberapa properti dan event dai kelas CheckBox ditampilkan pada Gambar 11.15. Program pada kode 11.4
mengijinkan pengguna untuk memilih sebuah CheckBox
untuk mengubah font pada sebuah Label.
Jika kedua CheckBox diseleksi, gaya
font adalah tebal dan italik. Ketika awal program dieksekusi, tidak ada satupun
CheckBox yang diseleksi.
Properti dan event CheckBox
|
Deskripsi
|
Properti
Checked
CheckState
Text
---------------------------
Event
CheckedChanged
CheckStateChanged
|
Mengindikasikan apakah CheckBox diseleksi atau tidak
diseleksi.
Mengindikasikan apakah CheckBox diseleksi atau tidak
diseleksi, dengan sebuah enumerasi yang memiliki nilai-nilai Checked, Unchecked, atau Indeterminate
Menspesifikasi teks yang ditampilkan
di sisi kanan CheckBox.
----------------------------------------------------------------------------------------------
Dibangkitkan ketika pengguna
mengklik-ganda kontrol CheckBox
pada design view. Ketika pengguna
mengklik-ganda kontrol CheckBox
pada design view, sebuah event handler kosong akan
dibangkitkan.
Dibangkitkan ketika properti CheckState berubah.
|
Gambar 11.15 Beberapa properti dan event pada CheckBox
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
|
' Fig. 11.4: UjiCheckBox.vb
' Menggunakan CheckBox untuk mentoggle gaya font italic dan bold.
Imports System.Windows.Forms
Public Class FrmCheckBox
Inherits Form
' label untuk menampilkan
Friend WithEvents lblKeluaran As Label
' checkbox untuk font
Friend WithEvents chkTebal As
CheckBox
Friend WithEvents chkMiring As
CheckBox
' kode yang dibangkitkan oleh
Visual Studio .NET
' menggunakan Xor untuk
mentoggle italic
Private Sub chkMiring_CheckedChanged _
(ByVal sender As
System.Object, ByVal e As System.EventArgs) _
Handles chkMiring.CheckedChanged
lblKeluaran.Font = New Font(lblKeluaran.Font.Name, _
lblKeluaran.Font.Size,
lblKeluaran.Font.Style _
Xor FontStyle.Italic)
End Sub '
chkMiring_CheckedChanged
' menggunakan Xor untuk
mentoggle bold
Private Sub chkTebal_CheckedChanged _
(ByVal sender As
System.Object, ByVal e As System.EventArgs) _
Handles chkTebal.CheckedChanged
lblKeluaran.Font = New Font(lblKeluaran.Font.Name, _
lblKeluaran.Font.Size,
lblKeluaran.Font.Style _
Xor FontStyle.Bold)
End Sub '
chkTebal_CheckedChanged
End Class 'FrmCheckBox
|
CheckBox pertama,
dinamai chkTebal (baris 13),
memiliki properti Text yang
ditetapkan Bold. CheckBox yang lain dinamai chkMiring (baris 14) dan dilabel Miring. Properti Text pada Label, dinamai
lblKeluaran, ditetapkan menjadi Amati Perubahan Font ini.
Setelah menciptakan beberapa kontrol
yang diperlukan, Anda perlu mendefinisikan event
handlernya. Dengan mengklik-ganda CheckBox bernama chkTebal akan menciptakan event
handler kosong CheckedChanged (baris 29). Untuk memahami kode yang ditambahkan
pada event handler ini, pertama-tama
perlu didiskusikan tentang properti Font
pada lblKeluaran.
Agar font dapat diubah, programer harus
menetapkan properti Font menjadi
sebuah objek Font. Konstruktor Font (baris 23-25 dan 33-35) mengambil
nama, ukuran, dan gaya font sebagai argumen. Dua argumen pertama adalah lblKeluaran.Font.Name dan lblKeluaran.Font.Size (baris 34). Gaya
font adalah anggota enumerasi FontStyle,
yang memuat gaya Regular, Bold, Italic, Strikeout, dan Underline.
Gaya font dapat dikombinasikan menggunakan
operator bitwise. Dokumentasi FCK mengindikasikan bahwa FontStyle adalah sebuah System.FlagAttribute,
yang berarti bahwa nilai-nilai bit FontStyle
dikombinasikan menggunakan operator bitwise (pada kasus ini, menggunakan
operator Xor).
Tombol radio (didefinisikan dengan
kelas RadioButton) sama dengan CheckBox, yang selalu memiliki dua
keadaan. Namun, tombol radio normalnya selalu berada dalam sebuah grup, dimana
hanya satu tombol radio yang dapat diseleksi pada grup tersebut. Penyeleksian
salah satu tombol radio akan menyebabkan semua tombol radio yang lain di dalam
grup menjadi tidak terseleksi. Untuk mengelompokkan beberapa tombol radio
menjadi beberapa grup, Anda bisa menggunakan GroupBox atau Panel.
Beberapa properti dan event kelas RadioButton dicantumkan pada Gambar
11.17.
Properti dan event RadioButton
|
Deskripsi
|
Properti
Checked
Text
---------------------------
Event
Click
CheckedChanged
|
Mengindikasikan apakah RadioButton diseleksi atau tidak
diseleksi.
Menspesifikasi teks yang ditampilkan
di sisi kanan RadioButton.
----------------------------------------------------------------------------------------------
Dibangkitkan ketika pengguna mengklik
kontrol.
Dibangkitkan ketika pengguna
mengklik-ganda kontrol RadioButton
pada design view. Ketika pengguna
mengklik-ganda kontrol RadioButton
pada design view, sebuah event handler kosong akan
dibangkitkan.
|
Gambar 11.17 Beberapa
properti dan event pada kelas RadioButton
Program pada kode 11.5 menggunakan
beberapa tombol radio untuk menyeleksi beberapa opsi pada sebuah MessageBox. Setelah menyeleksi atribut
yang diinginkan, pengguna akan menekan tombol Tampil, menyebabkan MessageBox
muncul. Sebuah label di pojok kiri menampilkan hasil MessageBox (Yes, No, Cancel, dan lainnya).
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
|
' Kode 11.5:
UjiRadioButton.vb
' Menggunakan RadioButton
untuk memberikan opsi jendela pesan.
Imports
System.Windows.Forms
Public Class
FrmRadioButton
Inherits
Form
Private
tipeIkon As MessageBoxIcon
Private
tipeTombol As MessageBoxButtons
' group box untuk tombol dan kontrolnya
Friend
WithEvents tipeTombolGroupBox As
GroupBox
Friend
WithEvents radOk As
RadioButton
Friend
WithEvents radOkCancel As
RadioButton
Friend
WithEvents radAbortRetryIgnore As
RadioButton
Friend
WithEvents radYesNoCancel As
RadioButton
Friend
WithEvents radYesNo As
RadioButton
Friend
WithEvents radRetryCancel As
RadioButton
' group box untuk ikon dan kontrolnya
Friend
WithEvents ikonGroupBox As
GroupBox
Friend
WithEvents radAsterisk As
RadioButton
Friend WithEvents radError As
RadioButton
Friend WithEvents radExclamation As
RadioButton
Friend
WithEvents radHand As
RadioButton
Friend
WithEvents radInformation As
RadioButton
Friend
WithEvents radQuestion As
RadioButton
Friend
WithEvents radStop As
RadioButton
Friend
WithEvents radWarning As
RadioButton
' menampilkan tombol
Friend
WithEvents cmdTampil As Button
' label untuk menampilkan
Friend
WithEvents lblTampil As Label
' kode yang dibangkitkan oleh Visual
Studio .NET
' menampilkan kotak pesan dan tombol
dialog yang diklik
Private Sub cmdTampil_Click(ByVal
sender As System.Object, _
ByVal
e As System.EventArgs) _
Handles
cmdTampil.Click
Dim
dialog As DialogResult =
MessageBox.Show( _
"Ini adalah MessageBox Anda", "MessageBox Anda", _
tipeTombol, tipeIkon)
' memeriksa hasil dialog dan
menampilkannya pada label
Select
Case dialog
Case DialogResult.OK
lblTampil.Text = "OK ditekan"
Case DialogResult.Cancel
lblTampil.Text = "Cancel ditekan"
Case DialogResult.Abort
lblTampil.Text = "Abort ditekan"
Case DialogResult.Retry
lblTampil.Text = "Retry ditekan"
Case DialogResult.Ignore
lblTampil.Text = "Ignore ditekan"
Case DialogResult.Yes
lblTampil.Text = "Yes ditekan"
Case DialogResult.No
lblTampil.Text = "No ditekan"
End
Select
End Sub ' cmdTampil_Click
' menetapkan tipe tombol menjadi OK
Private
Sub radOk_CheckedChanged(ByVal
sender _
As
System.Object, ByVal e As System.EventArgs) _
Handles
radOk.CheckedChanged
tipeTombol = MessageBoxButtons.OK
End
Sub ' radOk_CheckedChanged
' menetapkan tipe tombol menjadi OkCancel
Private Sub radOkCancel_CheckedChanged(ByVal sender _
As
System.Object, ByVal e As System.EventArgs) _
Handles
radOkCancel.CheckedChanged
tipeTombol =
MessageBoxButtons.OKCancel
End
Sub ' radOkCancel_CheckedChanged
' menetapkan tipe tombol menjadi
AbortRetryIgnore
Private Sub radAbortRetryIgnore_CheckedChanged(ByVal sender As _
System.Object, ByVal e As
System.EventArgs) _
Handles
radAbortRetryIgnore.CheckedChanged
tipeTombol =
MessageBoxButtons.AbortRetryIgnore
End
Sub '
radAbortRetryIgnore_CheckedChanged
' menetapkan tipe tombol menjadi
YesNoCancel
Private
Sub radYesNoCancel_CheckedChanged(ByVal
sender _
As
System.Object, ByVal e As System.EventArgs) _
Handles
radYesNoCancel.CheckedChanged
tipeTombol =
MessageBoxButtons.YesNoCancel
End Sub '
radYesNoCancel_CheckedChanged
' menetapkan tipe tombol menjadi YesNo
Private
Sub radYesNo_CheckedChanged(ByVal
sender As _
System.Object, ByVal e As
System.EventArgs) _
Handles
radYesNo.CheckedChanged
tipeTombol = MessageBoxButtons.YesNo
End
Sub ' radYesNo_CheckedChanged
' menetapkan tipe tombol menjadi
RetryCancel
Private
Sub radRetryCancel_CheckedChanged(ByVal
sender As _
System.Object, ByVal e As
System.EventArgs) _
Handles
radRetryCancel.CheckedChanged
tipeTombol =
MessageBoxButtons.RetryCancel
End
Sub '
radRetryCancel_CheckedChanged
' menetapkan tipe ikon menjadi Asterisk
ketika Asterisk diseleksi
Private Sub radAsterisk_CheckedChanged(ByVal sender As _
System.Object, ByVal e As
System.EventArgs) _
Handles
radAsterisk.CheckedChanged
tipeIkon = MessageBoxIcon.Asterisk
End
Sub ' radAsterisk_CheckedChanged
' menetapkan tipe ikon menjadi Error
ketika Error diseleksi
Private Sub radError_CheckedChanged(ByVal sender As _
System.Object, ByVal e As
System.EventArgs) _
Handles
radError.CheckedChanged
tipeIkon = MessageBoxIcon.Error
End
Sub ' radError_CheckedChanged
' menetapkan tipe ikon menjadi
Exclamation ketika Exclamation diseleksi
Private
Sub radExclamation_CheckedChanged(ByVal
sender As _
System.Object, ByVal e As
System.EventArgs) _
Handles
radExclamation.CheckedChanged
tipeIkon = MessageBoxIcon.Exclamation
End
Sub '
radExclamation_CheckedChanged
' menetapkan tipe ikon menjadi Hand
ketika Hand diseleksi
Private
Sub radHand_CheckedChanged(ByVal
sender As _
System.Object, ByVal e As
System.EventArgs) _
Handles
radHand.CheckedChanged
tipeIkon = MessageBoxIcon.Hand
End
Sub ' radHand_CheckedChanged
' menetapkan tipe ikon menjadi
Information ketika Information diseleksi
Private Sub radInformation_CheckedChanged(ByVal sender As _
System.Object, ByVal e As
System.EventArgs) _
Handles
radInformation.CheckedChanged
tipeIkon = MessageBoxIcon.Information
End Sub '
radInformation_CheckedChanged
' menetapkan tipe ikon menjadi Question
ketika Question diseleksi
Private
Sub radQuestion_CheckedChanged(ByVal
sender As _
System.Object, ByVal e As
System.EventArgs) _
Handles
radQuestion.CheckedChanged
tipeIkon = MessageBoxIcon.Question
End
Sub ' radQuestion_CheckedChanged
' menetapkan tipe ikon menjadi Stop
ketika Stop diseleksi
Private
Sub radStop_CheckedChanged(ByVal
sender As _
System.Object, ByVal e As
System.EventArgs) _
Handles
radStop.CheckedChanged
tipeIkon = MessageBoxIcon.Stop
End
Sub ' radStop_CheckedChanged
' menetapkan tipe ikon menjadi Warning
ketika Warning diseleksi
Private
Sub radWarning_CheckedChanged(ByVal
sender As _
System.Object, ByVal e As
System.EventArgs) _
Handles
radWarning.CheckedChanged
tipeIkon = MessageBoxIcon.Warning
End
Sub ' radWarning_CheckedChanged
End Class ' FrmRadioButton
|
PictureBox
Sebuah kotak gambar (kelas PictureBox) dipakai untuk menampilkan
citra. Citra, yang ditetapkan oleh objek kelas Image, dapat berupa format bmp,
GIF (Graphics Interchange Format),
atau JPEG (Joint Photographic Expert
Group).
Properti Image menspesifikasi citra yang akan ditampilkan, dan properti SizeMode mengindikasikan bahwa citra
ditampilkan dengan gaya Normal, StretchImage, Autosize, atau CenterImage.
Gambar 11.19 mendeskripsikan beberapa properti dan event pada kelas PictureBox.
Program pada kode 11.6 menggunakan gbrImage untuk menampilkan salah satu
dari citra, yaitu citra0, citra1, atau citra2. Ketiga citra ini berada di dalam direktori citra (pada bin/citra dari projek Anda). Kapan pun penguna mengklik gbrCitra, citra akan berubah. Label (dinamai lblPrompt) pada pojok atas form menampilkan teks Klik Pada Kotak Gambar Untuk Menampilkan
Gambar.
Properti dan event PictureBox
|
Deskripsi
|
Properti
Image
SizeMode
---------------------------
Event
Click
|
Menetapkan citra yang akan
ditampilkan pada PictureBox.
Enumerasi yang mengontrol posisi dan
ukuran citra. Nilainya adalah Normal (default), StretchImage, AutoSize, dan
CenterImage. Nilai Normal
memposisikan citra di pojok kiri-atas PictureBox,
dan CenterImage menempatkan citra
di tengah. Nilai StretchImage
mengubah ukuran citra agar sesuai dengan PictureBox.
Nilai AutoSize mengubah ukuran PictureBox agar cukup untuk menampung
citra.
----------------------------------------------------------------------------------------------
Dibangkitkan ketika pengguna mengklik
kontrol.
|
Gambar 11.19 Beberapa
properti dan event pada kelas PictureBox
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
|
' Kode 11.6: UjiPictureBox.vb
' Menggunakan sebuah PictureBox untuk menampilkan citra.
Imports System.IO
Imports System.Windows.Forms
Public Class FrmPictureBox
Inherits Form
Private nomorCitra As Integer
= -1
' instruksi pada label
Friend WithEvents lblPrompt As
Label
' arae untuk menampilkan citra
Friend WithEvents gbrImage As PictureBox
' Visual Studio .NET generated
code
' mengganti citra pada
gbrImage
Private Sub gbrImage_Click(ByVal
sender As System.Object, _
ByVal e As
System.EventArgs) Handles
gbrImage.Click
' nomorCitra dari 0 to 2
nomorCitra = (nomorCitra +
1) Mod 3
' menciptakan objek Image
dari file, menampilkannya pada PictureBox
gbrImage.Image =
Image.FromFile _
(Directory.GetCurrentDirectory & "\citra\citra" & _
nomorCitra &
".bmp")
End Sub ' gbrImage_Click
End Class ' FrmPictureBox
|
Penanganan
Mouse-Event
Bagian ini akan menjelaskan penanganan mouse event, seperti, mengklik, menekan,
dan menggerak-kan. Mouse event dapat
ditangani untuk semua kontrol yang diderivasi dari System.Win-dows.Forms.Control. Informasi mouse event dilewatkan melalui kelas MouseEventArgs, dan delegate yang digunakan untuk menciptakan mouse-event handler adalah MouseEventHandler. Setiap metode
penanganan mouse-event memerlukan
sebuah Object dan sebuah objek MouseEventArgs sebagai argumen. Sebagai
contoh, event Click menggunakan delegate EventHandler
dan argumen EventArgs.
Kelas MouseEventArgs memuat informasi yang berkaitan dengan mouse event, seperti koordinat x-y
dari pointer mouse, tombol mouse (yang ditekan Right, Left atau Middle), dan jumlah berapa kali mouse
diklik. Perhatikan bahwa koordinat x-y dari objek MouseEventArgs relatif terhadap kontrol yang dibangkitkan event. Titik (0, 0) merepresentasikan
pojok kiri-atas kontrol. Beberapa mouse
event dideskripsikan pada Gambar 11.21.
Mouse Event, Delegate, dan Event Argument
|
|
Mouse Event
MouseEnter
MouseLeave
MouseDown
MouseHover
MouseMove
MouseUp
---------------------------
Properti
Button
Clicks
X
Y
|
Dibangkitkan jika kursor mouse
memasuki area kontrol.
Dibangkitkan jika kursor mouse
meninggalkan area kontrol.
Dibangkitkan jika tombol mouse
ditekan ketika kursornya di atas area kontrol.
Dibangkitkan ketika kursor mouse
berada di atas area kontrol.
Dibangkitkan jika kursor mouse
digerakkan ketika berada di dalam area kontrol.
Dibangkitkan jika tombol mouse
dilepaskan ketika kursor berada di atas area kontrol.
----------------------------------------------------------------------------------------------
Menspesifikasi tombol mouse yang
ditekan (left, right, middle, atau none).
Mengindikasikan jumlah berapa kali
tombol mouse diklik.
Koordinat-x dari event, di dalam
kontrol.
Koordinat-y dari event, di dalam
kontrol.
|
Gambar 11.21 Mouse Event, Delegate, dan Event Argument
Program pada kode 11.7 menggunakan mouse event untuk menggambar pada sebuah
form. Kapanpun pengguna menggeret mouse, sebuah garis akan tergambar pada form.
Pada baris 7, program mendeklarasikan
variabel harusGambar, yang
menentukan apakah harus menggambar pada form. Dinginkan bahwa program hanya
akan menggambar ketika tombol mouse ditekan. Jadi, di dalam event handler untuk event FrmPainter_MouseDown
(baris 28-33), harusGambar
ditetapkan True. Sesaat setelah
tombol mouse dilepas, program akan berhenti menggambar; harusGambar ditetapkan False
di dalam event handler FrmPainter_MouseUp (baris 36-41).
Kapanpun mouse bergerak, sistem
membangkitkan sebuah event MouseMove pada sebuah laju yang telah
didefinisikan oleh sistem operasi. Di dalam event
handler FrmPainter_MouseMove
(baris 18-23), program akan menggambar hanya jika harusGambar bernilai True
(mengindikasikan bahwa tombol mouse ditekan). Baris 19 menciptakan objek Graphics, yang menawarkan beberapa
metode untuk menggambar berbagai bangun. Sebagai contoh, metode FillEllipse (baris 21-22) menggambarkan
sebuah lingkaran pada tiap titik yang dilalui kursor (ketika kurson ditekan).
Parameter pertama untuk metode FillEllipse
adalah sebuah objek SolidBrush, yang
menspesifikasi warna bangun yang sedang digambar. Sebuah objek SolidBrush baru diciptakan dengan
melewatkan nilai Color kepada
konstruktor. Tipe Color memuat
berbagai konstanta warna terdefinisi, pada kasus ini, dipilih Color.BlueViolet (baris 22). SolidBrush mengisi sebuah region
eliptik.
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
|
' Kode 11.7: Painter.vb
' Menggunakan mouse untuk menggambar pada sebuah form.
Public Class FrmPainter
Inherits System.Windows.Forms.Form
Dim harusGambar As Boolean
= False
' kode yang dibangkitkan oleh
Visual Studio .NET
' menggambar jika harusGambar
bernilai True
Private Sub FrmPainter_MouseMove( _
ByVal sender As
System.Object, _
ByVal e As
System.Windows.Forms.MouseEventArgs) _
Handles MyBase.MouseMove
' menggambar jika mouse
ditekan
If harusGambar Then
Dim grafik As Graphics
= CreateGraphics()
grafik.FillEllipse _
(New SolidBrush(Color.BlueViolet), e.X, e.Y, 4, 4)
End If
End Sub ' FrmPainter_MouseMove
' menetapkan harusGambar
menjadi True
Private Sub FrmPainter_MouseDown(ByVal sender As
Object, _
ByVal e As
System.Windows.Forms.MouseEventArgs) _
Handles MyBase.MouseDown
harusGambar = True
End Sub ' FrmPainter_MouseDown
' menetapkan harusGambar
menjadi False
Private Sub FrmPainter_MouseUp(ByVal sender As
Object, _
ByVal e As
System.Windows.Forms.MouseEventArgs) _
Handles MyBase.MouseUp
harusGambar = False
End Sub ' FrmPainter_MouseUp
End Class ' FrmPainter
|
Penanganan
Keyboard-Event
Bagian ini akan menjelaskan penanganan key event, yang dibangkitkan ketika
kunci pada keyboard ditekan dan
dilepaskan. Event semacam itu dapat
ditangani oleh sembarang kontrol yang mewarisi System.Windows.Forms.Control. Ada dua jenis tipe key event. Pertama adalah event KeyPress, yang terpicu ketika sebuah kunci yang merepresentasikan
sebuah karakter ASCII ditekan (ditentukan oleh properti KeyChar). ASCII adalah sebuah himpunan 128-karakter yang
terdiri-dari simbol-simbol alfanumerik.
Keyboard Event, Delegate, dan Event Argument
|
|
Key Event
KeyDown
KeyUp
KeyPress
Properti
KeyChar
Handled
Alt
Control
Shift
Handled
KeyCode
KeyData
KeyValue
Modifiers
|
Dibangkitkan ketika kunci awalnya
ditekan.
Dibangkitkan ketika kunci dilepaskan.
Dibangkitkan ketika kunci ditekan.
Terjadi berulang kali ketika kunci ditahan.
Menghasilkan karakter ASCII untuk
kunci yang ditekan.
Mengindikasikan apakah event KeyPress telah ditangani.
Mengindikasikan apakah kunci Alt
ditekan.
Mengindikasikan apakah kunci Control ditekan.
Mengindikasikan apakah kunci Shift ditekan.
Mengindikasikan apakah event telah ditangani.
Menghasilkan kode kunci sebagai
enumerasi Keys, tidak termasuk
informasi modifier key.
Menghasilkan kode kunci, sebagai
enumerasi Keys, termasuk informasi
modifier key. Memuat semua
informasi mengenai kunci-kunci yang ditekan.
Menghasilkan kode kunci sebagai Integer, bukan sebagai enumerasi Keys. Digunakan untuk mendapatkan
representasi numerik dari kunci yang ditekan.
Menghasilkan sebuah enumerasi Keys untuk sembarang modifier key yang ditekan (Alt, Control, dan Shift).
|
Gambar 11.23 Key Event, Delegate, dan Event Argument
Namun event KeyPress tidak
memampukan Anda dalam menentukan apakah modifier
key ditekan atau tidak (seperti Shift, Alt,
dan Control). Adalah hal yang perlu
untuk menangani tipe key event yang
kedua, event KeyUp atau KeyDown,
untuk menentukan aksi semacam itu. Kelas KeyEventArgs memuat informasi tentang modifier key. Nilai enumerasi Key dapat dijadikan nilai balik, yang
menyediakan informasi tentang rentang kunci-kunci tak-ASCII. Seringkali, modifier key digunakan bersamaan dengan
mouse untuk menyeleksi informasi. KeyEventHandler
dan KeyPressEvent-Handler merupakan
dua delegate untuk tugas ini. Gambar 11.23 mencantumkan informasi tentang key event.
Kode 11.8 mendemonstrasikan kegunaan
key-event handler dalam menampilkan sebuah kunci yang ditekan oleh pengguna.
Program adalah sebuah form dengan dua Label.
Ia menampilkan kunci yang ditekan pada sebuah Label dan informasi modifier key pada Label yang lain.
Awalnya, dua Label (lblKarakter dan lblInformasi) kosong. Label lblKarakter menampilkan nilai karakter
dari kunci yang ditekan, sedangkan lblInformasi
menampilkan informasi yang berkaitan dengan kunci yang ditekan. Karena event KeyDown dan KeyPress
menyampaikan informasi yang berbeda, FrmDemoKunci
menangani keduanya.
Event handler KeyPress (baris 18-23) mengakses
properti KeyChar dari objek KeyPressEventArgs. Ini akan
menghasilkan kunci yang ditekan sebagai sebuah Char dan menampilkan hasilnya pada lblKarakter (baris 22). Jika kunci yang ditekan bukan sebuah
karakter ASCII, maka event KeyPress tidak akan terpicu, dan lblKarakter akan tetap kosong.
Event handler KeyDown (baris 25-56) menampilkan
informasi dari objek KeyEventArgs.
Ia menguji kunci Alt, Shift, dan Control menggunakan properti Alt,
Shift, dan Control, yang masing-masing menghasilkan Boolean, yaitu bernilai True
jika kunci terkait ditekan, False
jika sebaliknya. Ia kemudian menampilkan properti KeyCode, KeyData, dan KeyValue.
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
|
' Kode 11.8: DemoKunci.vb
' Menampilkan informasi
tentang kunci yang ditekan.
Imports
System.Windows.Forms
Public Class
FrmDemoKunci
Inherits
Form
' KeyPressEventArgs
Friend
WithEvents lblKarakter As
Label
' KeyEventArgs
Friend
WithEvents lblInformasi As
Label
' kode yang dibangkitkan oleh Visual
Studio .NET
' event handler untuk penekanan kunci
Private
Sub FrmDemoKunci_KeyPress(ByVal
sender As System.Object, _
ByVal
e As
System.Windows.Forms.KeyPressEventArgs) _
Handles
MyBase.KeyPress
lblKarakter.Text = "Kunci yang ditekan: " &
e.KeyChar
End Sub
' menampilkan modifier key, key code, key
data dan key value
Private
Sub FrmDemoKunci_KeyDown(ByVal
sender As System.Object, _
ByVal
e As
System.Windows.Forms.KeyEventArgs) _
Handles
MyBase.KeyDown
lblInformasi.Text = ""
' jika kunci adalah Alt
If
e.Alt Then
lblInformasi.Text &= "Alt: Ya" & vbCrLf
Else
lblInformasi.Text &= "Alt: Tidak" & vbCrLf
End
If
' jika kunci adalah Shift
If
e.Shift Then
lblInformasi.Text &= "Shift: Ya" & vbCrLf
Else
lblInformasi.Text &= "Shift: Tidak" & vbCrLf
End
If
' jika kunci adalah Ctrl
If
e.Control Then
lblInformasi.Text &= "Ctrl: Ya" & vbCrLf
Else
lblInformasi.Text &= "Ctrl: Tidak" & vbCrLf
End
If
lblInformasi.Text &= "KeyCode: " &
e.KeyCode.ToString & _
vbCrLf & "KeyData: " &
e.KeyData.ToString & _
vbCrLf & "KeyValue: " & e.KeyValue
End
Sub ' FrmDemoKunci_KeyDown
' menghapus label ketika kunci dilepaskan
Private
Sub FrmDemoKunci_KeyUp(ByVal
sender As System.Object, _
ByVal
e As
System.Windows.Forms.KeyEventArgs) _
Handles
MyBase.KeyUp
lblInformasi.Text = ""
lblKarakter.Text = ""
End
Sub ' FrmDemoKunci_KeyUp
End Class '
FrmDemoKunci
|
Properti KeyCode menghasilkan sebuah enumerasi Keys, yang dikonversi menjadi sebuah String melalui metode ToString
(baris 35). Properti KeyCode
menghasilkan kunci yang ditekan, tetapi tidak menyediakan informasi tentang modifier key. Jadi, kedua huruf besar
dan huruf kecil dari “a” akan direpresentasikan sebagai kunci A.
Properti KeyData (baris 54) juga menghasilkan sebuah enumerasi Keys, tetapi properti ini mencakup data
tentang modifier key. Jadi, jika
kunci “A” tekan, KeyData akan
menunjukkan bahwa kunci A dan kunci Shift
ditekan. Selanjutnya, KeyValue (baris
47) menghasilkan kode kunci dari kunci yang ditekan sebagai nilai Integer.
Event handler KeyUp (baris 59-65) menghapus kedua
label ketika kunci dilepaskan. Seperti yang Anda dapat lihat dari keluaran,
kunci-kunci tak-ASCII tidak ditampilkan pada lblKarakter, karena event
KeyPress tidak dibangkitkan. Namun, event KeyDown masih tetap dibangkitkan, dan lblInformasi menampilkan
informasi tentang kunci. Enumerasi Keys
dapat dipakai untuk menguji kunci spesifik dengan membandingkan kunci yang
ditekan dengan KeyCode.
Latihan
1. Ciptakanlah GUI
berikut:
2. Ciptakanlah GUI
berikut:
Logika Pemrograman: Bab 11. Visual Basic .Net Belajar Dari Contoh >>>>> Download Now
ReplyDelete>>>>> Download Full
Logika Pemrograman: Bab 11. Visual Basic .Net Belajar Dari Contoh >>>>> Download LINK
>>>>> Download Now
Logika Pemrograman: Bab 11. Visual Basic .Net Belajar Dari Contoh >>>>> Download Full
>>>>> Download LINK