Anda di halaman 1dari 32

~ Penulis persembahkan buku ini sebagai hadiah

ulang tahun “keponakan kecil” Nadin Melani Savitri ~

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


Kata Pengantar

Kiranya tidak ada kata yang pantas terucap dari penulis, selain
rasa syukur kepada Allah SWT, atas segala petunjuk,
kekuatan, dan kejernihan pikiran dalam menyusun buku ini
hingga bisa hadir di hadapan pembaca yang budiman.
Buku ini adalah buku kedua dari buku 101 Tip & Trik Visual
Basic 6.0 yang sudah diterbitkan. Tidak seperti seri sebelum-
nya, buku ini berupaya menyajikan pembahasan yang lebih
luas dan berbobot. Ini semua tentu tidak akan terwujud tanpa
motivasi serta saran dari pembaca yang budiman.
Walaupun penulis sudah berupaya semaksimal mungkin untuk
mempersembahkan yang terbaik, namun penulis menyadari
bahwa buku ini masih jauh dari kata sempurna. Oleh karena
itu, segala saran dan kritik yang membangun sangatlah
penulis harapkan, dan bisa dikirimkan ke alamat
didik_rpl@yahoo.com. Selain itu, penulis juga
menyediakan kode program buku ini di alamat
http://groups.yahoo.com/group/didik_directory (menu
File) atau http://didik.indodesain.com.
Akhir kata, terima kasih kepada pembaca yang budiman,
dan semoga hari ini jauh lebih baik dari hari-hari sebe-
lumnya.

Bojonegoro, November 2006


Penulis

vi

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


Daftar Isi

Kata Pengantar ....................................................................... v


Daftar Isi ...............................................................................vii

Bab 1 Visual Basic Dasar ............................................... 1


1 Teknik Dasar Visual Basic .................................... 1
2 Operasi String ........................................................ 7
3 Konversi................................................................. 9
4 Validasi String dan Angka................................... 10
5 Operasi Array....................................................... 12
6 Date dan Time...................................................... 14
7 Timer dan Alternatifnya....................................... 16
8 Mengirim Keystroke............................................ 17
9 Argumen Command Line .................................... 19
10 Error Handling ..................................................... 20
11 API Win32 ........................................................... 21
12 Menangguhkan Eksekusi ..................................... 23
13 Mengatur Project Visual Basic ............................ 24

Bab 2 Form dan Kontrol.............................................. 27


14 Tip Dasar Form.................................................... 27
15 Kontrol ListBox ................................................... 29
16 ComboBox AutoComplete .................................. 30
17 Menggunakan ListView....................................... 32
18 Efek CommandButton ......................................... 35
19 Scrolling ToolTip................................................. 36
20 Editor Menu......................................................... 37
21 Ikon di Menu ....................................................... 39

vii

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


22 Menu PopUp Atraktif .......................................... 41
23 Menggunakan ToolBar ........................................ 43
24 Taskbar di MDI.................................................... 47
25 Membagi Window MDI....................................... 49
26 ProgressBar di Statusbar...................................... 52
27 Docking dan Resizing Kontrol ............................ 53
28 Memindah Kontrol saat Run-time ....................... 54
29 Validasi Data ....................................................... 55
30 Kontrol Masked Edit............................................ 57
31 Menghubungkan Aplikasi ke Help ...................... 58
32 Membuat What’s This Help................................. 59
33 Ikon di System Tray............................................. 61

Bab 3 Akses dan Manipulasi Data .............................. 65


34 Objek Connection dan Recordset......................... 65
35 Membuat String Koneksi ..................................... 67
36 Teknik Dasar Akses dan Manipulasi Data........... 69
37 Menciptakan Objek Database .............................. 72
38 Meng-copy Tabel................................................. 73
39 Modifikasi Praktis................................................ 75
40 Mengolah Data BLOB ......................................... 78
41 Data Environment................................................ 79
42 Relasi Antartabel ................................................. 81
43 Ekspor/Impor Data............................................... 83
44 Konversi Recordset.............................................. 85
45 Stored Procedure.................................................. 87
46 Konkurensi dan Penguncian ................................ 88
47 Manajemen Transaksi.......................................... 90
48 Recordset Bersarang ............................................ 92
49 Data Report Tanpa Data Environment................. 94

Bab 4 Office dan VBA .................................................. 97


50 Otomasi MS Word ............................................... 97
51 Konversi File Teks ke Word.............................. 100
52 Konversi File Word ........................................... 101
53 Otomasi MS Excel............................................. 103
54 Evaluasi Ekspresi dengan MS Excel.................. 105

viii

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


55 Konversi Database Access................................. 106
56 Membuka Form Access ..................................... 107
57 Otomasi PowerPoint .......................................... 109
58 Membuka Slide PowerPoint di Form................. 110
59 Kotak Dialog Built-in ........................................ 112
60 Asisten Office .................................................... 113
61 Konversi File PDF ............................................. 115
62 Otomasi OLE ..................................................... 116

Bab 5 Grafik dan Multimedia ................................... 119


63 Informasi Dukungan Warna............................... 119
64 Menggunakan PictureBox ................................. 120
65 Scroll di PictureBox........................................... 122
66 Membuat Ikon.................................................... 123
67 Menyisipkan Teks di Gambar............................ 124
68 Manipulasi Warna.............................................. 126
69 Animasi Teks ..................................................... 128
70 Efek-Efek Penutupan Form ............................... 129
71 Membuka File GIF ............................................ 131
72 Animasi Gambar................................................ 132
73 Membuat Grafik dengan MSChart..................... 133
74 Menyimpan Grafik ke File................................. 134
75 Menangkap Gambar........................................... 135
76 Menangkap Gambar di Sekitar Kursor .............. 137
77 Mencetak Gambar.............................................. 139
78 Multimedia Player ............................................. 141
79 Resource File Multimedia.................................. 142

Bab 6 File dan Direktori ............................................ 145


80 Memilih File ...................................................... 145
81 Informasi File .................................................... 149
82 Operasi File........................................................ 150
83 Membuka dan Menyimpan File ......................... 152
84 Operasi File Biner.............................................. 153
85 Kotak Dialog Browse for Folder........................ 155
86 Operasi Folder/Direktori.................................... 157
87 Window Search Results ..................................... 160

ix

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


88 Atribut File dan Direktori .................................. 161
89 Mengasosiasikan File ke Aplikasi ..................... 163
90 Menulis dan Membaca File .ini ......................... 164
91 File System Object............................................. 166
92 Informasi Folder/Direktori dengan FSO ............ 168
93 Informasi File dengan FSO................................ 169

Bab 7 Jaringan dan Internet...................................... 171


94 Memeriksa Koneksi Internet.............................. 171
95 Informasi IP Address dan Host .......................... 173
96 Link ke Halaman Web dan Email Client ........... 174
97 Membuat Shortcut Web ..................................... 175
98 Aplikasi DHTML............................................... 176
99 Dokumen ActiveX ............................................. 178
100 Web Classes....................................................... 179
101 Mengambil Isi Web ........................................... 180
102 Membuat Web Browser ..................................... 181
103 Remote Data Recordset ..................................... 183
104 Koneksi dan Transfer Data ................................ 184
105 MSComm........................................................... 186
106 Intranet Messenger............................................. 187

Bab 8 Interaksi dengan Sistem .................................. 191


107 Informasi Sistem ................................................ 191
108 Informasi User dan Nama Komputer................. 194
109 Informasi Memori.............................................. 196
110 Informasi Sistem dengan WMI.......................... 197
111 Informasi CPU ................................................... 199
112 Informasi User dan Sistem dengan ADSI .......... 201
113 Variabel Environment........................................ 202
114 Operasi Control Panel........................................ 204
115 Menangani Aksi Mouse ..................................... 205
116 Menangani Aksi Keyboard ................................ 207
117 Blocking Input ................................................... 209
118 Menyembunyikan Program dari Task
Manager ............................................................. 211
119 Memantau Proses............................................... 211

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


120 Mengontrol Aplikasi.......................................... 214
121 Manajemen Proses ............................................. 218
122 Mengontrol Servis Windows ............................. 221
123 Restart/Shutdown Windows .............................. 223
124 Akses Registry ................................................... 226
125 Akses Registry Spesifik ..................................... 228
126 Menjalankan Aplikasi Saat Startup.................... 229
127 Logging Event ................................................... 231

Bab 9 Sekuriti ............................................................. 233


128 Memproteksi Form ............................................ 233
129 Password Generator ........................................... 235
130 Enkripsi/Dekripsi............................................... 236
131 Kombinasi Enkripsi/Dekripsi dan Password...... 238
132 Memproteksi File/Folder ................................... 240
133 Enkripsi dengan API Win32 .............................. 243
134 Modifikasi Account Sistem ............................... 245
135 Men-disable Editor Registry.............................. 247
136 Men-disable Ctrl+Alt+Del................................. 249
137 Memproteksi Aplikasi Trial............................... 251
138 Registrasi Aplikasi............................................. 253

Bab 10 Pemrograman Lanjut ...................................... 255


139 Membuat Add-in................................................ 255
140 Callback ............................................................. 258
141 Subclassing ........................................................ 259
142 Menggunakan HotKey....................................... 261
143 ActiveX DLL ..................................................... 262
144 Membuat Kontrol ActiveX ................................ 264
145 Regular Expression............................................ 266
146 Integrasi MS Agent............................................ 267
147 Modifikasi Caption Window ............................. 269
148 Regional/Localization........................................ 271
149 Jam Analog ........................................................ 274
150 Membuat Alarm/Scheduler................................ 276
Daftar Penamaan .......................................................... 279
Daftar Pustaka............................................................... 283

xi

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


1
Visual Basic Dasar

Bagian pertama ini akan menguraikan hal-hal yang sifatnya


esensial dalam pemrograman Visual Basic. Meskipun
dikatakan esensial, namun kita tidak boleh menyepelekan
begitu saja. Pada kenyataannya, teknik-teknik dasar yang
mungkin dianggap sepele seringkali mampu menyelesaikan
berbagai persoalan pelik. Oleh karena itu, untuk memu-
dahkan pembuatan program tingkat lanjut, akan lebih baik
jika kita sudah memiliki bekal dasar.

1
Teknik Dasar Visual Basic
Jika kita membahas teknik dasar Visual Basic, sebenarnya
tidak cukup hanya dengan satu bab, apalagi satu subbab.
Namun, di sini akan dibatasi agar uraiannya tidak terlalu
umum ataupun khusus. Artinya, bagian ini mencoba
menguraikan hal-hal ringan yang dianggap penting dan
sering diperlukan.

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


x Awalan Penamaan Variabel
Konsistensi sering dikaitkan dengan penulisan kode program
yang standar. Ini tentu cukup beralasan karena penulisan
kode yang konsisten menjadikan kode program lebih mudah
dibaca dan dipahami.
Sebagai contoh, dalam penamaan variabel, sangat dianjurkan
agar Anda mengacu pada standar yang telah ditetapkan.
Contohnya seperti berikut:
' Jika hanya ada satu variabel String di satu
' ruang lingkup
Dim str As String

' Jika terdapat lebih dari satu


Dim strNama As String
Dim strAlamat As String

Daftar standar penamaan selengkapnya untuk variabel yang


merepresentasikan suatu tipe data, kontrol-kontrol built-in
dan ActiveX, serta objek-objek ADO bisa Anda lihat di
lampiran.
x Hindari Tipe Variant
Tipe data Variant secara otomatis akan ditetapkan pada
suatu variabel manakala Anda tidak menetapkan tipe datanya
secara eksplisit.
' Variabel intX bertipe Variant
Dim intX, intY As Integer

' intA dan intB bertipe Integer


Dim intA As Integer, intB As Integer

Alasan utama untuk menghindari tipe data Variant adalah


karena eksekusinya yang cenderung lebih lambat dan
mengonsumsi memori lebih besar.

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


x Ruang Lingkup Variabel
Apabila variabel-variabel Anda hanya diperlukan oleh sebuah
method (prosedur/fungsi), sebaiknya deklarasikan di level
lokal. Teknik ini terkait erat dengan performa aplikasi, di
mana variabel lokal akan lebih cepat dieksekusi dibanding
variabel global.
x Konkatenasi dan Multiline
Pada saat Anda ingin menghubungkan string, gunakan
operator konkatenasi (&). Adapun jika konkatenasi meli-
batkan baris baru, sebaiknya manfaatkan karakter garis
bawah (underscore).
' Hello Indonesia adalah satu bagian
strData = "Hello " & _
"Indonesia"

' strA dan strB adalah dua bagian


Dim strA As String, _
strB As String

x Definisi Tipe Data


Anda pasti pernah menemui kode program Visual Basic yang
mendefinisikan suatu tipe data menggunakan akhiran
karakter tertentu, seperti $, %, dan sebagainya. Pendekatan
yang juga disebut definisi tipe data secara implisit ini
umumnya dilakukan untuk mempercepat eksekusi kode.
Berikut ini simbol (karakter) yang dapat digunakan sebagai
akhiran nama variabel untuk merepresentasikan tipe data.
Akhiran Tipe Data Contoh
% Integer intUsia%
& Long lng&
! Single sng!
# Double dbl#
@ Currency cur@
$ String str$

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


Perlu diperhatikan, bagian ini tidak bermaksud menyarankan
Anda untuk menggunakan pendekatan di atas, namun
sekadar memperlihatkan bagaimana implementasi definisi
secara implisit. Bagaimanapun juga, pendekatan seperti ini
seringkali membingungkan, terutama bagi yang belum
memahami makna karakter terkait.
x Verifikasi Tipe Data
Pada saat akan melakukan operasi terhadap suatu variabel,
terkadang kita ingin memeriksa tipe datanya terlebih dahulu.
Untuk memudahkan verifikasi ini, kita bisa memanfaatkan
method-method yang tersedia.
Method Keterangan (Nilai Kembalian)
IsArray() True jika variabel adalah suatu array
IsDate() True jika ekspresi dapat dikonversi ke
format tanggal
IsEmpty() True jika variabel belum diinisialisasi
IsError() True jika ekspresi merupakan nilai error
IsMissing() True jika argumen opsional belum
dilewatkan
IsNull() True jika ekspresi null
IsNumeric() True jika ekspresi dapat dievaluasi
sebagai bilangan
IsObject() True jika identifier merepresentasikan
variabel objek

x Pernyataan Kondisional
Dalam melakukan analisis dua kasus, Anda bisa meringkas
penulisan kode program dengan memanfaatkan method IIf.
Dim bStatus As Boolean
Dim intResult As Integer

' Pendekatan If (standar)


If bStatus Then
intResult = 1

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


Else
intResult = 0
End If
Print intResult

' Pendekatan IIf


intResult = IIf(bStatus, 1, 0)
Print intResult

Namun perlu diperhatikan, eksekusi method IIf cenderung


lebih lambat dibanding pernyataan kondisional If.
x Keyword Step
Disamping menyederhanakan penulisan kode program
pengulangan, keyword Step juga mampu mempercepat
eksekusi kode. Sebagai contoh, kedua program berikut akan
menghasilkan keluaran sama.
Dim i As Integer

' Mencetak bilangan ganjil 1-10


For i = 0 To 9
i = i + 1
Print i
Next i

' Menggunakan pendekatan Step


For i = 1 To 10 Step 2
Print i
Next i

x Keyword Optional
Apabila Anda ingin mendeklarasikan suatu argumen yang
sifatnya opsional (tidak wajib), gunakan keyword Optional.
' Deklarasi argumen lng sebagai opsi
Private Sub Test(str As String, _
Optional lng As Long = 1)

' ...
End Sub

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


Walaupun Anda diperkenankan untuk tidak menetapkan
nilai default dari suatu argumen opsional, namun sebaiknya
Anda menetapkannya. Langkah ini bertujuan untuk me-
mudahkan penulisan tubuh method dan meningkatkan
kompatibilitas terhadap versi Visual Basic yang baru
(VB.NET).
x Array Argumen
Kasus lain yang mungkin ditemui saat mendeklarasikan
method adalah kemampuan untuk menerima sejumlah
argumen. Kasus semacam ini bisa Anda selesaikan dengan
memanfaatkan keyword ParamArray.
Private Function Sum(ParamArray args() _
As Variant) As Double
Dim i As Integer
' array argumen adalah array berbasis 0
For i = 0 To UBound(args)
Sum = Sum + args(i)
Next i
End Function
' Ekspresi berikut valid semua
Debug.Print Sum(2, 3)
Debug.Print Sum(2, 3, 4, 5)

Perlu diingat, ParamArray harus dideklarasikan sebagai


array Variant, tidak boleh dengan tipe data lainnya. Selain
itu, suatu method hanya boleh memiliki sebuah array
argumen, dan harus berada di bagian paling akhir. Aturan
terakhir, Anda tidak boleh meletakkan argumen opsional di
depan array argumen.

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


2
Operasi String
Sudah bukan rahasia lagi, frekuensi penggunaan tipe data
String sangat tinggi sekali. Ini tentu tidak lepas dari sifat
dasarnya yang ìsederhanaî dan memiliki sejumlah operasi
yang sangat bermanfaat. Oleh karena itu, tidak ada salahnya
jika kita mengenal operasi-operasi string lebih lanjut.
x Mencetak Spasi/Karakter
Bagaimana mencetak 10 karakter kosong dengan cepat? Jika
Anda sudah mengenal method Space, tentu tidak akan
kesulitan melakukannya.
' Mencetak 10 spasi antara a dan b
Print "a" & Space$(10) & "b"

Sebagai alternatif, Anda juga bisa memanfaatkan method


String untuk tujuan serupa. Selain itu, method ini lebih
luas fungsionalitasnya.
' Mencetak 10 spasi antara a dan b
Print "a" & String$(10, " ") & "b"
' Sama, 32 adalah kode ASCII spasi
Print "a" & String$(10, 32) & "b"

' Mencetak karakter * sebanyak 10


Print String$(10, "*")

x Mencari Substring
Mencari bagian-bagian string merupakan operasi sederhana
yang implementasinya terkadang tidak sesederhana bayangan
kita. Berikut tip-tip ringan untuk menemukan substring di
suatu string.
strText = "abcdefg"

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


Print Left$(strText, 3) ' Output: abc
Print Right$(strText, 2) ' Output: fg

' Mengambil 4 karakter, dimulai dari karakter ke 3


Print Mid$(strText, 3, 4) ' Output: cdef

Anda juga bisa memanfaatkan method Mid untuk memo-


difikasi karakter di dalam string.
' Replace strText mulai karakter ke 3
Mid$(strText, 3) = "123"
Print strText
' Output: ab123fg

x Pemformatan String
Pemformatan string seringkali diperlukan guna menda-
patkan format nilai yang sesuai. Bergantung pada kebutuhan,
ada beberapa pendekatan yang bisa kita lakukan.
Dim str As String
str = "nadin savitri"

' Format huruf besar dan kecil


Print UCase$(str)
Print LCase$(str)

' Konversi ke huruf semestinya


Print StrConv(str, vbProperCase)
' Output: Nadin Savitri

Selain mengatur format huruf, Anda juga bisa menetapkan


format angka.
Dim sng As Single: sng = 2.246

' Pembulatan dan pemformatan


Print Format$(sng, "0.00") ' Output: 2,25

Print FormatNumber$(sng, 2) ' Output: 2,25

' Pembulatan dan Format currency


Print FormatCurrency$(sng, 2) ' Output: Rp2,25

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


3
Konversi
Dalam pembuatan aplikasi perangkat lunak, seringkali kita
perlu melakukan konversi, baik itu konversi tipe data
maupun konversi nilai. Untuk beberapa tujuan, operasi ini
dapat kita lakukan dengan mudah melalui method-method
built-in yang disediakan oleh class Conversion.
Tabel berikut ini memperlihatkan keyword dan method
untuk konversi berdasarkan kegunaannya.
Aksi Konversi Keyword/Method
Nilai ANSI ke string Chr, ChrW
String ke huruf Format, LCase, UCase
kecil/besar
Angka ke string Format, Str
Satu tipe data ke tipe CBool, CByte, CDate, CDbl,
data lain CDec, CInt, CLng, CSng,
CShort, CStr, CVar, Fix, Int,
Hex, Oct
Tipe Date ke tanggal, Day, Month, Year
bulan, atau tahun
Tipe Time ke jam, Hour, Minute, Second
menit, atau detik
String ke nilai ASCII Asc, AscW
String ke angka Val

Sebagai contoh, untuk mengkonversi nilai string ke angka,


gunakan method Val. Sebaliknya, manfaatkan method Str
untuk mengembalikan representasi string dari angka.
Print Val("12A") ' Output: 12
Print Str$("12") ' Output: 12

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


Apabila Anda ingin mendapatkan nilai ANSI dari suatu kode
karakter, gunakan method Chr atau ChrW. Adapun jika ingin
mendapatkan nilai ASCII, manfaatkan method Asc atau
AscW.
Print ChrW$(65) ' Output: A
Print AscW("A") ' Output: 65

Begitu pula halnya ketika Anda ingin mendapatkan nilai


heksadesimal dari tipe data desimal atau sebaliknya, gunakan
method Hex dan Val.
' Konversi Hexadecimal ke Decimal
Me.txtDec.Text = Val("&H" & Me.txtHex.Text)

' Konversi Decimal ke Hexadecimal


Me.txtHex.Text = Hex$(Me.txtDec.Text)

4
Validasi String dan Angka
Pada prinsipnya, string mampu menampung berbagai jenis
karakter sehingga fleksibel dalam penggunaannya. Namun
dibalik itu, diperlukan pekerjaan ekstra guna memperoleh
data seperti yang diharapkan. Sebagai contoh, bagaimana
memastikan bahwa user hanya mengisi huruf, angka, atau
kombinasi keduanya?
Sebagai tindakan lanjut, diperlukan langkah efektif, yaitu
validasi data. Dalam implementasinya, validasi data bisa kita
lakukan melalui berbagai pendekatan.
x Validasi Input Huruf
Untuk memastikan bahwa string masukan yang diberikan
oleh user sudah valid, kita bisa memanfaatkan operator
Like. Operator ini berfungsi mengevaluasi string yang

10

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


diberikan dan memeriksa apakah sama dengan pola yang
telah dispesifikasikan atau tidak.
Private Function IsHuruf(ByVal str As _
String) As Boolean
Dim strChar As String
Dim iLen As Integer, iCount As Integer

iLen = Len(str)
If iLen > 0 Then
' Loop sampai panjang string
For iCount = 1 To iLen
' Ambil karakter satu per satu
strChar = Mid$(str, iCount, 1)
' Jika tidak sesuai pola, berarti False
If Not strChar Like "[A-Za-z]" Then _
Exit Function
' Jika ingin menyertakan spasi,
' tambahkan di pola, misal [A-Z a-z]
Next iCount

IsHuruf = True
End If

End Function

x Validasi Input Angka


Dalam kasus ini, sebenarnya Anda bisa memanfaatkan
method built-in, yaitu IsNumeric. Namun perlu diper-
hatikan, IsNumeric juga akan mengembalikan nilai true jika
suatu ekspresi masih merepresentasikan angka, misalnya -1,
+1, atau 1.1.
Apabila Anda hanya ingin menerima masukan angka
(bilangan bulat), IsNumeric tentu kurang tepat digunakan.
Sebagai solusinya, Anda bisa menggunakan pendekatan
operator Like, seperti kasus sebelumnya. Adapun pola
untuk angka adalah [0-9], contohnya seperti berikut:
Private Function IsAngka(ByVal str As _
String) As Boolean
Dim strChar As String
Dim iLen As Integer, iCount As Integer

11

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


iLen = Len(str)
If iLen > 0 Then
For iCount = 1 To iLen
strChar = Mid$(str, iCount, 1)
If Not strChar Like "[0-9]" Then _
Exit Function
Next iCount

IsAngka = True
End If

End Function

x Kombinasi Huruf dan Angka


Mengacu pada dua contoh validasi sebelumnya, tentu sangat
mudah bagi Anda untuk mendapatkan nilai berupa kom-
binasi huruf dan angka. Lebih jelasnya, Anda tinggal mene-
tapkan pola huruf dan angka, yaitu [0-9A-Za-z].

5
Operasi Array

Array merupakan tipe data agregat yang mampu me-


nampung sejumlah variabel. Karakteristiknya yang fleksibel
sangat membantu kita dalam mengelola koleksi item
(elemen). Terkait hal ini, ada banyak operasi penting yang
lazimnya dilakukan terhadap koleksi item di dalam array.
x Split dan Join
Disamping mengisi elemen array satu per satu (berbasis
index), Anda bisa memecah bagian-bagian string kemudian
memasukkannya ke dalam array. Untuk melakukan hal ini,
manfaatkan fungsionalitas method Split. Adapun seba-
liknya, untuk menggabung elemen array gunakan method
Join.

12

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


Dim str As String
str = "Satu Dua Tiga"

Dim strArr() As String


' Memisah string, assign ke array
strArr = Split(str)

' Gabung elemen array, delimeter = spasi


Print Join$(strArr, " ")

x Iterasi Elemen
Iterasi merupakan salah satu operasi dasar yang sering
dilakukan untuk mendapatkan elemen-elemen array. Walau-
pun Anda dapat menggunakan pendekatan For...Next,
namun akan lebih praktis jika memanfaatkan pernyataan
For Each...Next.
Dim i As Integer
Dim intMax As Integer

' Mendapatkan index maksimum


intMax = UBound(strArr)
For i = 0 To intMax
Print strArr(i)
Next i

Dim vnt As Variant


For Each vnt In strArr
Print vnt
Next vnt

x Pencarian Elemen
Pada saat Anda ingin mencari suatu elemen di dalam array,
Anda bisa menggunakan method Filter. Method ini sebe-
narnya berfungsi menyaring elemen, namun juga sangat
memungkinkan untuk digunakan dalam mencari elemen.
Dim strRes() As String
' Penyaringan case-insensitive
strRes = Filter(strArr, "dua", True, _
vbTextCompare)

13

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


Dim vnt As Variant
' Ekstrak elemen yang sesuai penyaringan
For Each vnt In strRes
Print vnt
Next vnt

6
Date dan Time

Operasi tanggal dan waktu tidak hanya sebatas mendapatkan


tanggal dan waktu saat ini (current date/time). Anda mungkin
juga perlu melakukan operasi-operasi lanjut, seperti
mengembalikan tanggal/waktu, kalkulasi tanggal/waktu, dan
sebagainya. Untuk lebih jelasnya, berikut tip dalam menye-
lesaikan operasi-operasi seputar tanggal dan waktu.
x Mendapatkan Tanggal dan Waktu
Untuk mendapatkan informasi mengenai tanggal dan waktu
saat ini, lazimnya kita menggunakan method Now. Sebagai
alternatif, Anda bisa memanfaatkan properti Date dan Time
untuk mendapatkan tanggal dan waktu.
' Mendapatkan current date dan time
Print Now ' Tanggal dan waktu
Print Date ' Tanggal
Print Time ' Waktu

x Pembentukan dan Ekstraksi


Apabila Anda tidak ingin mendapatkan tanggal yang lengkap
dari pendekatan sebelumnya, Anda bisa membentuk sendiri
komponen-komponen tanggal/waktu.
' Mendapatkan bagian (DateTime) tertentu
Print Day(Now) & "-" & Month(Now) & "-" & _
Year(Now)
Print Hour(Now) & ":" & Minute(Now)

14

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


Seperti halnya ketika membentuk komponen-komponen
tanggal/waktu, ada beberapa pendekatan untuk mengekstrak
tanggal dan waktu.
' Mendapatkan bagian (DateTime) tertentu
Print Day(Now) & "-" & Month(Now) & "-" & _
Year(Now)
Print Hour(Now) & ":" & Minute(Now)

Print DatePart("d", Now) ' d= Day


Print DatePart("m", Now) ' m= Month
Print DatePart("yyyy", Now) ' yyyy= Year

x Kalkulasi Tanggal dan Waktu


Bergantung pada kebutuhan Anda, ada beberapa pendekatan
untuk mengalkulasi tanggal dan waktu. Sebagai contoh,
untuk menambah atau mengurangi tanggal/waktu, gunakan
method DateAdd.
' 3 hari kemudian dan yang lalu
Print DateAdd("d", 3, Now)
Print DateAdd("d", -3, Now)
' Untuk bulan=m, tahun=yyyy

' 3 jam kemudian


Print DateAdd("h", 3, Now)
' Untuk menit= n, detik= s

Jika Anda ingin mendapatkan informasi mengenai selisih


tanggal/waktu, gunakan method DateDiff.
' Jumlah hari sejak 20 September 2006
Print DateDiff("d", #9/20/2006#, Now)

x Pemformatan Tanggal dan Waktu


Jika diperlukan, informasi tanggal/waktu yang telah Anda
dapatkan bisa diformat sesuai dengan kebutuhan. Hal ini
diwujudkan dengan memanfaatkan method Format.
Print Format(Now, "dddd, dd mmm yyyy")

15

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


' Output: (misal) Sabtu, 29 September 2006
Print Format(Now, "hh:mm:ss")
' Output: 21:30:48

7
Timer dan Alternatifnya

Banyak contoh kasus yang memerlukan keberadaan kom-


ponen Timer untuk mendapatkan nilai interval waktu.
Disamping mampu menghasilkan nilai yang akurat, kom-
ponen ini juga mudah sekali digunakan.
Sekadar contoh sederhana, jika Anda ingin melakukan suatu
operasi dalam rentang waktu lima detik setelah kode
program berjalan, tentu Timer menjadi pilihan guna
mewujudkannya. Contoh kode programnya seperti berikut:
Private intBatas As Integer

Private Sub Command1_Click()


' Misal batas waktu = 5 detik
intBatas = 5
' Interval = 1000 milidetik (1 detik)
Me.tmr.Interval = 1000
Me.tmr.Enabled = True
End Sub

Private Sub tmr_Timer()


' Decrement batas waktu
intBatas = intBatas - 1
If intBatas <= 0 Then
Me.tmr.Enabled = False
' Unload form
Unload Me
Else
' Menampilkan hitungan mundur
Me.Caption = "TimeOut: " & intBatas
End If
End Sub

16

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


Sebagai alternatif, untuk tujuan yang sama, Anda bisa
memanfaatkan pendekatan method DateAdd dan peng-
ulangan. Tekniknya, spesifikasikan batas waktu, kemudian
lakukan pengulangan hingga waktu saat ini (current time)
melewati batas waktu.
Private Sub Command2_Click()
intBatas = 5
Dim intTOut As Integer
Dim dtm As Date
dtm = DateAdd("s", intBatas, Now)

' Loop sampai batas terlewati


Do Until Now >= dtm
DoEvents
intTOut = Second(dtm) - Second(Now)
' Hitungan mundur
Me.Caption = "TimeOut: " & intTOut
Loop

' Unload form


Unload Me
End Sub

Alternatif lain yang bisa Anda gunakan adalah melalui


pendekatan method Timer. Method read-only ini akan
mengembalikan nilai (detik) Single yang telah lewat sejak
waktu tengah malam.

8
Mengirim Keystroke

Dalam beberapa kasus spesifik, Anda mungkin ingin mengi-


rim keystroke ke aplikasi. Sebagai contoh, secara otomatis
memindahkan fokus ke kontrol lain ketika batas pengisian
TextBox sudah maksimal, mengubah perilaku key, dan
sebagainya.

17

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


Untuk mendukung operasi-operasi di atas, manfaatkan
method SendKeys. Method ini berfungsi mengirim
keystroke ke window yang saat itu sedang mendapatkan
fokus.
Private Sub Form_Load()
' Misal max panjang karakter =5
Me.txt1.MaxLength = 5
End Sub

Private Sub txt1_Change()


' Jika panjang karakter sudah terpenuhi
If Len(Me.txt1.Text) = Me.txt1.MaxLength Then

' Memindahkan fokus ke kontrol berikutnya


SendKeys ("{TAB}")
End If
End Sub

Kunci utama dalam pengiriman keystroke adalah argumen


dari method SendKeys, yakni kode key (tombol). Secara
keseluruhan, kode key mengacu pada label yang ada di
keyboard, kecuali untuk key spesifik. Di mana kode untuk
key Shift adalah +, Ctrl adalah ^, dan Alt adalah %. Jadi,
ketika Anda ingin mengirim kombinasi key Alt+F4 (menu-
tup window), gunakan key ì%{F4}î.
' Mengaktifkan window notepad
' window sudah harus terbuka
Call AppActivate("Untitled - Notepad")

' Menutup window notepad


SendKeys ("%{F4}")

18

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


9
Argumen Command Line

Jika Anda menghendaki, aplikasi Visual Basic yang Anda buat


dapat memiliki kemampuan untuk menerima argumen dari
command line. Seperti halnya program-program berbasis
teks, Anda tinggal mendefinisikan argumen di command line
setelah nama file executable program.
Kunci utama aplikasi semacam ini adalah bagaimana men-
dapatkan informasi argumen, dan ini kita lakukan dengan
memanfaatkan method Command. Setelah argumen berhasil
didapatkan, Anda bisa menggunakannya untuk mengatur
perilaku aplikasi atau untuk keperluan lainnya.
Private Sub Form_Load()
Dim strCmd As String

' Mendapatkan argumen dari command line


strCmd = Command$()

If InStrB(strCmd, "-status MAX") > 0 Then


' Jika argumen didapatkan,
' Misalkan men-set status window
Me.WindowState = 2
Me.Caption = "Argumen: " & strCmd
Else
Me.WindowState = 0
End If

End Sub

Untuk menjalankan kode program di atas, misalkan nama


file executable adalah Project1.exe, buka command prompt
dan berikan perintah Project1.exe ñstatus MAX.

19

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


10
Error Handling

Bagaimana implementasi penanganan kesalahan? Dan ba-


gaimana mendapatkan informasi yang bermanfaat terkait
dengan kesalahan yang terjadi? Apabila Anda ingin men-
dapatkan informasi detail mengenai kesalahan yang berhasil
ditangkap, gunakan method Err.
Dim dblRes As Double

On Error GoTo ErrHandler


' Ini akan menimbulkan kesalahan
' sehingga perlu di-trap
dblRes = 10 / 0

' Jika error, ini tidak akan dieksekusi


MsgBox ("Hasil: " & dblRes)

' Jika sukses, keluar dari blok


Exit Sub

ErrHandler:
' Misalkan kode kesalahan diketahui
If (Err.Number = 11) Then
MsgBox ("Pembagian dengan nol" & vbCrLf & _
"Kode Kesalahan: " & Err.Number & vbCrLf & _
"Deskripsi: " & Err.Description & vbCrLf & _
"Sumber: " & Err.Source)
Else
MsgBox ("Kode Kesalahan: " & Err.Number & _
"Deskripsi: " & Err.Description & vbCrLf & _
"Sumber: " & Err.Source)
End If

Dalam menangani kesalahan, tentunya tidak semua bagian


kode program harus diberi pernyataan On Error. Artinya,
ada saatnya kita bisa memanfaatkan fungsionalitas method.
Sebagai contoh sederhana, ketika ingin melakukan verifikasi
terhadap suatu array, akan lebih baik menggunakan method

20

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


IsArray dibanding mendefinisikan On Error sebelum
kode verifikasi.
Bagaimanapun juga, mekanisme penanganan kesalahan
memerlukan tambahan alokasi memori. Artinya, peng-
gunaan pernyataan On Error berbanding lurus terhadap
waktu eksekusi. Dengan kata lain, semakin banyak blok On
Error di suatu kode program, maka juga akan semakin
lambat eksekusinya.

11
API Win32

Bagian ini secara khusus akan menguraikan tip mengenal


Application Programming Interface (API) Windows, khu-
susnya di platform 32-bit (Win32). Ini dimaksudkan untuk
lebih mendekatkan Anda dengan fungsionalitas API Win32
dan juga terkait pembahasan-pembahasan selanjutnya.
Pada prinsipnya, API Win32 terdiri atas koleksi Dynamic-
Link Library (DLL) yang disebut DLL standar. Cara kerja
DLL standar ini berbeda dengan Componen Object Model
(COM). Idealnya, saat mengeksekusi method aplikasi ber-
basis COM, kita menggunakan COM untuk pemanggilan
prosedur yang tersedia. Di sisi lain, pada pendekatan DLL
standar, kita melakukan pemanggilan method secara lang-
sung.
x Kelebihan API Win32
Sedikitnya ada dua kelebihan yang bisa didapatkan dari pen-
dekatan API Windows. Pertama, kita dapat memperluas
fungsionalitas aplikasi, dan kedua adalah meningkatkan
performa aplikasi. Pada kenyataannya, DLL standar mampu
menghasilkan kode yang lebih cepat dan efisien.

21

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


x Fungsionalitas API Win32
API Win32 mengekspos tiga DLL utama yang mencakup
beberapa fungsionalitas spesifik, yaitu User32, Kernel32, dan
GDI32. DLL User32 (user32.dll) mengelola menu, kontrol-
kontrol, dan kotak dialog Windows. Kernel32 (kernel32.dll)
menangani tugas-tugas sistem operasi dan operasi level
rendah, seperti manajemen memori, file, proses, waktu, dan
kontrol Comm. Sementara itu, DLL terakhir (gdi32.dll),
menangani pemrosesan grafik/gambar.
x Mendeklarasikan DLL
Ada dua tahap untuk mengimplementasikan DLL standar,
yaitu deklarasi dan pemanggilan method. Sintaks pernyataan
deklarasi diperlihatkan seperti berikut:
[Public|Private] Declare Function nama_fungsi _
Lib "nama_library" [Alias "nama_alias"] _
[(argumen)]

Apabila deklarasi dilakukan di level modul, gunakan access


modifier Public, sedangkan untuk level form, sebaiknya
gunakan Private.
x Informasi dan Dokumentasi
Walaupun API Win32 berpotensi besar untuk menghasilkan
aplikasi yang kompleks, namun dokumentasinya sangat
minim. Di Visual Basic, Anda bisa memanfaatkan tool API
Text Viewer untuk melihat daftar method, tipe, serta
konstanta yang tersedia. Shortcut tool ini tersedia di
submenu Microsoft Visual Basic 6.0 Tools, atau bisa juga
diakses dari Add-in Manager.
Apabila Anda sangat tertarik mendalami API Win32 dan
kegunaannya, Anda bisa mendapatkan dokumentasi API
Win32 (Win32 Programmerís Reference) dari alamat
ftp.borland.com/pub/delphi/techpubs/delphi2/win32.zip.

22

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


Dokumentasi ini lebih detail karena menyertakan deskripsi
serta beberapa informasi tambahan.

Gambar 1.1 Menggunakan API Viewer

12
Menangguhkan Eksekusi

Dalam kasus tertentu, kita perlu sekali untuk menangguhkan


eksekusi kode, misalnya ketika melakukan sinkronisasi.
Sayangnya, method yang memiliki fungsionalitas seperti ini
tidak tersedia di Visual Basic.
Pada kenyataannya, Anda bisa memanfaatkan timer untuk
menangguhkan eksekusi dan melanjutkan kembali dalam
interval waktu tertentu. Namun, jika Anda menginginkan
pendekatan yang lebih praktis, gunakan API Win32.
' Untuk menangguhkan eksekusi
Private Declare Sub Sleep Lib "kernel32" ( _
ByVal dwMilliseconds As Long)

23

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


Private Sub Pause(ByVal sngDetik As Single)
' Menangguhkan eksekusi dalam (waktu) detik
Call Sleep(Int(sngDetik * 1000#))
End Sub

Sebenarnya Anda bisa langsung menggunakan method


Sleep, tetapi perlu diperhatikan, nilai argumennya adalah
waktu dalam satuan milidetik. Oleh karena itu, untuk lebih
memudahkan penggunaan method Sleep, kita membuat
method Pause yang menerima argumen waktu dalam satuan
detik.
Contoh penggunaan method Pause diperlihatkan sebagai
berikut:
Dim i As Integer
For i = 1 To 200
Me.Caption = i

If i = 100 Then
' Tangguhkan eksekusi selama 5 detik
Me.Caption = "Berhenti 5 detik"
Pause (5)
End If

Next i

13
Mengatur Project Visual Basic

Setiap kali kita membuat project, IDE akan menciptakan file


.vbp yang berisi informasi-informasi penting. Adapun jika
diperlukan, Anda juga bisa melakukan pengaturan spesifik
terhadap project, terlepas dari pengaturan default.

24

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com


x Mengatur Versi Aplikasi
Apabila Anda ingin mengubah ikon default yang ada di form,
gunakan properti Icon. Untuk menghasilkan tampilan yang
proporsional, sebaiknya ukuran ikon kurang lebih 14 x 14
pixel (picture element).
x Mengatur Versi Aplikasi
Untuk menandai aplikasi, sebaiknya Anda memberikan versi
yang berbeda di setiap versi rilis. Adapun cara yang praktis
adalah dengan memanfaatkan fitur IDE. Terlebih dahulu
buka kotak dialog Project Properties dari menu Project.
Setelah itu, aktifkan tab Make, kemudian beri tanda centang
di bagian Auto Increment.
x Informasi Versi
Sebelum Anda mendistribusikan aplikasi, akan lebih baik jika
Anda memberikan informasi detail mengenai aplikasi. Lang-
kah ini bisa Anda lakukan dari tab Make di kotak dialog
Project Properties. Pada bagian Version Information, pilih
Type informasi, kemudian isikan informasinya di bagian
Value.

Gambar 1.2 Informasi aplikasi

25

koleksi ebook bahasa indonesia http://ebookhost.blogspot.com

Anda mungkin juga menyukai