Anda di halaman 1dari 89

BAB XVI

SEPULUH PROGRAM MENARIK

Pada pembahasan kali ini, saya mengajak Anda mencoba membuat seembilan program menarik menggunakan Visual
Basic. Semua program dibuat pada template VB Enterprise Edition Control. Jadi saat Anda menjalankan Visual Basic,
pilih tempate tersebut untuk memulai project baru.

Diharapkan Anda sudah menguasai semua bahasan-bahasan sebelum bab ini.

16.1. Windows Explorer


Program ini mencontoh aplikasi Windows Explorer, untuk menampilkan folder dan file pada komputer Anda.

a. Desain Form
Buatlah folder baru di alamat: “C:\Menggali VB\Bab 16”, namai dengan “Explorer”.

Pada form, sisipkan objek ImageList, namai dengan: imgMain. Klik kanan pada imgMain, pilih: 16 x 16, pada tab
General. Klik tab Images, klik Insert Picture… Masukkan, 25 gambar ikon (ikon-ikon disediakan pada CD yang
disertakan). Ubah nama Key dari tiap-tiap Image seperti pada table di bawah ini:

Index Key Index Key


1 komputer 14 xls
2 ini 15 mdb
3 inf 16 recycle
4 mid 17 filegeneric
5 wav 18 mp3
6 bat 19 folder1
7 exe 20 folder2
8 dll 21 diska
9 imf 22 cdrom
10 txt 23 desktop
11 jpg 24 disket
12 drivelepas 25 diskanet
13 doc

Catatan:
Hati-hati dalam pemberian nama Key dari Image-Image pada ImageList.
Perbedaan huruf besar dan huruf kecil sangat berpengaruh pada hasil bersifat
(case sensitif).

Sisipkan objek kontrol dan atur propertinya seperti pada table di bawah ini:

Pengaturan Properti
Pengaturan pada: Form1
No Objek Kontrol Properti Perubahan
Name tvwExplor
2 TreeView
ImageList imgMain
Name lvwExplor
3 ListView
ImageList imgMain
Name rtbExplor
4 RichTextBox Appearance 0-rtfFlat
ScrollBar 3-rtfBoth
Name pgbExplor
5 ProgressBar
Scrolling 1-ccScrollingSmooth

Simpan semua komponen project di alamat: “C:\Menggali VB\Bab 16\Explorer”.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 1


Gambar 16.1. Desain Form Explorer.

Setelah desain form selesai, klik menu Project-References.... Pada dialog “References – Project1”, tandai kotak periksa
dari list: “Microsoft Scripting Runtime”. Jika Anda tidak menemukan list ini, klik tombol Browse.... Pada dialog “Add
References”, klik file: “scrrun.dll” (alamat menunjukkan direktori Windows\System atau Windows\System32). Klik
Open.
b. Baris Kode

Baris Kode
Baris kode pada: Form1
1 Option Explicit
'
2 Private Declare Function SendMessage _
Lib "user32" Alias "SendMessageA" ( _
ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long
'
3 Private ObjekFile As New FileSystemObject
4 Dim strPathX As String
5 Dim TwipsInHimetric!
6 Dim sPath As String
'
7 Private Sub Form_Load()
8 On Error Resume Next
9 Dim drvDrive As Drive
10 Dim strIkon As String
11 Dim strNama As String
12 Dim fldFolder As Folder
13 Dim fldDrive As Folder
'
14 TwipsInHimetric = ScaleX(1, vbTwips, _
vbHimetric)
15 For Each drvDrive In ObjekFile.Drives
16 If drvDrive.DriveType = CDRom Then
17 strIkon = "cdrom"
18 If drvDrive.IsReady Then
19 strNama = drvDrive.VolumeName
20 Else: strNama = "CD-ROM"
21 End If
22 ElseIf drvDrive.DriveType = Fixed Then
23 strIkon = "diska"
24 If drvDrive.IsReady Then
25 strNama = drvDrive.VolumeName
26 Else: strNama = "Hard Drive"
27 End If
28 ElseIf drvDrive.DriveType = Remote Then
29 strIkon = "diskanet"
30 If drvDrive.IsReady Then
31 strNama = drvDrive.ShareName
32 Else: strNama = "Network Drive"
33 End If
34 ElseIf drvDrive.DriveType = Removable _
Then
35 If drvDrive.DriveLetter = "A" Or _
drvDrive.DriveLetter = "B" Then
36 strIkon = "disket"

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 2


37 Else: strIkon = "drivelepas"
38 End If
39 If drvDrive.IsReady Then
20 strNama = drvDrive.VolumeName
21 Else
22 If drvDrive.DriveLetter = "A" Or _
drvDrive.DriveLetter = "B" Then
23 strNama = "Floppy Drive"
24 Else: strNama = "Drive Lepas"
25 End If
26 End If
27 If drvDrive.IsReady Then
28 strNama = drvDrive.VolumeName
29 Else
30 strNama = "Tidak diketahui"
31 End If
32 End If
'
33 tvwExplor.Nodes.Add , , "pc", _
"komputerku", "komputer", "komputer"
tvwExplor.Nodes.Add "pc", _
tvwChild, drvDrive.Path, _
strNama & " (" & _
UCase(drvDrive.DriveLetter) & ":)", strIkon
'
34 If drvDrive.IsReady Then
35 Set fldDrive = ObjekFile.GetFolder( _
drvDrive.RootFolder)
36 For Each fldFolder In fldDrive.SubFolders
tvwExplor.Nodes.Add drvDrive.Path, 4, _
fldFolder.Path, fldFolder.Name, "folder1"
37 Next
38 End If
39 Next
40 Me.tvwExplor.Nodes(1).Selected = True
41 End Sub

42 Private Sub Form_Resize()


43 Me.tvwExplor.Move tvwExplor.Left, _
tvwExplor.Top, tvwExplor.Width, _
Me.ScaleHeight - Me.pgbExplor.Height
44 Me.lvwExplor.Move lvwExplor.Left, _
lvwExplor.Top, Me.lvwExplor.Width, _
Me.ScaleHeight - Me.pgbExplor.Height
45 Me.pgbExplor.Move 0, Me.ScaleHeight - _
Me.pgbExplor.Height, Me.ScaleWidth, _
Me.pgbExplor.Height
46 Me.rtfExplor.Width = Me.ScaleWidth - _
Me.lvwExplor.Width - _
47 Me.tvwExplor.Width - 100
48 Me.rtfExplor.Height = Me.ScaleHeight - _
Me.pgbExplor.Height
49 End Sub

50 Private Sub lvwExplor_ItemClick( _


ByVal Item As MSComctlLib.ListItem)
51 Dim nSt As Integer
52 Me.Caption = strPathX & IIf( _
Len(strPathX) <= 4, "", "\") & Item.Text
53 LihatFile Me.Caption
54 End Sub
'
55 Private Sub tvwExplor_Collapse( _
ByVal Node As MSComctlLib.Node)
56 If Node.Image = "folder2" Then _
Node.Image = "folder1"
57 End Sub
'

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 3


58 Private Sub tvwExplor_Expand( _
ByVal Node As MSComctlLib.Node)
59 On Error Resume Next
60 Dim SubSubfolder As Folder
61 Dim Subfolder As Folder
62 Dim fldFolder As Folder
63 Dim i%
64 If Node.Image = "folder1" Then _
Node.Image = "folder2"
65 Set fldFolder = ObjekFile.GetFolder( _
Node.Key & "\")

66 For Each Subfolder In fldFolder.SubFolders


67 For Each SubSubfolder In Subfolder.SubFolders
68 tvwExplor.Nodes.Add Subfolder.Path, 4, _
39 SubSubfolder.Path, _
SubSubfolder.Name, "folder1"
70 i = i + 1
71 Me.pgbExplor.Value = i / _
72 fldFolder.SubFolders.Count * 100
73 'DoEvents
74 Next
75 If Me.pgbExplor.Value >= 100 Then
76 Me.pgbExplor.Value = 0
77 i = 0
78 End If
79 Next
80 End Sub
'
81 Private Sub tvwExplor_NodeClick( _
ByVal Node As MSComctlLib.Node)
82 On Error Resume Next
83 Dim SubSubfolder As Folder
84 Dim fldFolder As Folder
85 Dim filFile As File
86 Dim Subfolder As Folder
87 lvwExplor.ListItems.Clear
88 Set fldFolder = ObjekFile.GetFolder( _
Node.Key & "\")
89 strPathX = fldFolder
90 Me.Caption = strPathX
91 Dim xFile$, i As Integer
'
92 For Each Subfolder In fldFolder.SubFolders
93 lvwExplor.ListItems.Add , _
Subfolder.Path, Subfolder.Name, _
"folder1", "folder1"
94 i = i + 1
95 Me.pgbExplor.Value = i / _
fldFolder.SubFolders.Count * 100
96 DoEvents
97 Next
98 For Each filFile In fldFolder.Files
99 xFile = LCase(Right(filFile.Name, 3))
100 lvwExplor.ListItems.Add , _
fldFolder.Path & "\" & _
filFile.Name, filFile.Name, xFile, _
xFile
101 i = i + 1
102 Me.pgbExplor.Value = i / _
fldFolder.Files.Count * 100
'
103 If Err Then
104 lvwExplor.ListItems.Add , _
fldFolder.Path & "\" & _
filFile.Name, filFile.Name, _
"filegeneric", "filegeneric"
105 End If

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 4


106 Next
107 If Me.pgbExplor.Value >= 100 Then
108 Me.pgbExplor.Value = 0
109 i = 0
110 End If
111 End Sub
'
112 Sub LihatFile(sFile As String)
113 rtfExplor.Locked = False
114 rtfExplor.Font.Size = 8
115 rtfExplor.Text = ""
116 rtfExplor.SelAlignment = 0
117 rtfExplor.RightMargin = 0
118 sPath = sFile
119 On Error GoTo ErrHandler
120 Select Case LCase(Right$(sFile, 4))
121 Case ".bmp", ".jpg", ".gif"
122 Dim pic As StdPicture
123 Set pic = LoadPicture(sPath)
124 Clipboard.Clear
125 Clipboard.SetData pic
126 SendMessage rtfExplor.hwnd, _
&H302, 0, 0
127 Clipboard.Clear
128 rtfExplor.RightMargin = _
pic.Width \ TwipsInHimetric
129 Case ".rtf"
130 rtfExplor.LoadFile sPath, rtfRTF
131 Case ".txt"
132 rtfExplor.LoadFile sPath, _
rtfText
133 Case Else
134 rtfExplor.LoadFile sPath, _
rtfText
135 End Select
136 rtfExplor.Refresh
137 rtfExplor.Locked = True
138 Exit Sub
139 ErrHandler:
140 On Error GoTo 0
141 rtfExplor.Text = "Format tidak dikenal"
142 rtfExplor.Refresh
143 rtfExplor.Locked = True
144 End Sub

c. Tes Program
Jalankan program! Tampilan program saat berjalan, akan tampak seperti ilustrasi gambar di bawah ini.

Gambar 16.2. Program sedang berjalan, menampilkan file gambar.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 5


16.2. Kalkulator
Sepertinya tidak ada yang perlu dijelaskan, langsung saja, buat project baru pada Standard Exe. Sebelumnya, buatlah
folder baru di: “C:\Menggali VB\Bab 16”, namai dengan “Kalkulator”, untuk menyimpan project Anda.

a. Desain Form
Gambarkan sebuah objek CommandButton, namai dengan: cmdNumber, gandakan menjadi 10 buah, ubah Caption,
sesuai dengan Index-nya masing-masing.

Gambarkan lagi sebuah objek CommandButton namai dengan cmdOperator, gandakan menjadi 5 buah. Ubah properti
Caption seperti pada table di bawah ini.

Objek pada: Form1


Nama Objek Properti Perubahan
Name cmdOperator
Index 0
Command2
Caption /
TabIndex 13
Name cmdOperator
Index 1
Command2
Caption +
TabIndex 14
Name cmdOperator
Index 2
Command2
Caption x
TabIndex 15
Name cmdOperator
Index 3
Command2
Caption -
TabIndex 16
Name cmdOperator
Index 4
Command2
Caption =
TabIndex 17

Gambarkan lagi 4 (empat) buah CommandButton dan sebuah Label, atur properti seperti pada table di bawah:

Objek pada: Form1


Nama Objek Properti Perubahan
Name cmdPercent
Command1 Caption %
TabIndex 18
Name cmdDecimal
Command2 Caption .
TabIndex 19
Name cmdCancel
Command3 Caption C
TabIndex 1
Name cmdCancelEntry
Command4 Caption CE
TabIndex 2
Name lblDisplay
Caption 0.
Alignment 1-Right Justify
Label1
Putih atau warna
BackColor
terang lainnya
TabIndex 0

Sehingga tampilan akhir desain, seperti pada gambar di bawah ini.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 6


Gambar 16.3. Desain Form kalkulator.

b. Baris Kode

Baris Kode
Baris kode pada: Form1
1 Option Explicit

2 Dim Operator1, Operator2


3 Dim DecimalFlag As Integer
4 Dim NumOps As Integer
5 Dim AkhirMasukan
6 Dim JnOperator
7 Dim TempPembacaan

8 Private Sub cmdCancel_Click()


9 On Error Resume Next
10 lblDisplay = "0."
11 Operator1 = 0
12 Operator2 = 0
13 Form_Load
14 End Sub
'
15 Private Sub cmdCancelEntry_Click()
16 On Error Resume Next
17 lblDisplay = "0."
18 DecimalFlag = False
19 AkhirMasukan = "CE"
20 End Sub
'
21 Private Sub cmdDecimal_Click()
22 On Error Resume Next
23 If AkhirMasukan = "NEG" Then
24 lblDisplay = "-0."
25 ElseIf AkhirMasukan <> "NUMS" Then
26 lblDisplay = "0."
27 End If
28 DecimalFlag = True
29 AkhirMasukan = "NUMS"
30 End Sub
'
31 Private Sub cmdNomor_Click(Index As Integer)
32 On Error Resume Next
33 If Len(lblDisplay) <= 17 Then
34 If AkhirMasukan <> "NUMS" Then
35 lblDisplay = "."
36 DecimalFlag = False
37 End If
38 If DecimalFlag Then
39 lblDisplay = lblDisplay + _
cmdNomor(Index).Caption
40 Else
41 lblDisplay = Left(lblDisplay, _
InStr(lblDisplay, ".") - 1) + _
cmdNomor(Index).Caption + "."
42 End If
43 If AkhirMasukan = "NEG" Then _

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 7


lblDisplay = "-" & lblDisplay
44 AkhirMasukan = "NUMS"
45 End If
46 End Sub
'
47 Private Sub cmdOperator_Click(Index As Integer)
48 On Error Resume Next
49 TempPembacaan = lblDisplay
50 If AkhirMasukan = "NUMS" Then
51 NumOps = NumOps + 1
52 End If
53 Select Case NumOps
54 Case 0
55 If cmdOperator(Index).Caption = "-" _
And AkhirMasukan <> "NEG" Then
56 lblDisplay = "-" & lblDisplay
57 AkhirMasukan = "NEG"
58 End If
59 Case 1
60 Operator1 = lblDisplay
61 If cmdOperator(Index).Caption = "-" _
And AkhirMasukan <> "NUMS" And _
62 JnOperator <> "=" Then
63 lblDisplay = "-"
64 AkhirMasukan = "NEG"
65 End If
66 Case 2
67 Operator2 = TempPembacaan
68 Select Case JnOperator
69 Case "+"
70 Operator1 = Operator1 + Operator2
71 Case "-"
72 Operator1 = Operator1 - Operator2
73 Case "X"
74 Operator1 = Operator1 * Operator2
75 Case "/"
76 If Operator2 = 0 Then
77 MsgBox "Ga bisa membagi dengan Nol", _
48, "Kalkulator"
78 Else
79 Operator1 = Operator1 / Operator2
80 End If
81 Case "="
82 Operator1 = Operator2
83 Case "%"
84 Operator1 = Operator1 * Operator2
85 End Select
86 lblDisplay = Operator1
87 NumOps = 1
88 End Select
89 If AkhirMasukan <> "NEG" Then
90 AkhirMasukan = "OPS"
91 JnOperator = cmdOperator(Index).Caption
92 End If
93 End Sub

94 Private Sub cmdPercent_Click()


95 On Error Resume Next
96 lblDisplay = lblDisplay / 100
97 AkhirMasukan = "OPS"
98 JnOperator = "%"
99 NumOps = NumOps + 1
100 DecimalFlag = True
101 End Sub

102 Private Sub Form_KeyPress(KeyAscii As Integer)


103 If KeyAscii >= Asc("0") And _
KeyAscii <= Asc("9") Then

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 8


104 cmdNomor_Click (KeyAscii - 48)
105 ElseIf KeyAscii = Asc("/") Then
106 cmdOperator_Click (0)
107 ElseIf KeyAscii = Asc("+") Then
108 cmdOperator_Click (1)
109 ElseIf KeyAscii = Asc("*") Then
110 cmdOperator_Click (2)
111 ElseIf KeyAscii = Asc("-") Then
112 cmdOperator_Click (3)
113 ElseIf KeyAscii = Asc("=") Then
114 cmdOperator_Click (4)
115 ElseIf KeyAscii = 13 Then
116 cmdOperator_Click (4)
117 ElseIf KeyAscii = Asc("%") Then
118 cmdPercent_Click
119 ElseIf KeyAscii = Asc(".") Then
120 cmdDecimal_Click
121 End If
122 End Sub

123 Private Sub Form_Load()


124 On Error Resume Next
125 DecimalFlag = False
126 NumOps = 0
127 AkhirMasukan = "NONE"
128 JnOperator = " "
129 End Sub

c. Tes Program
Jalankan program! Cobalah untuk menggunakan Numpad pada keyboard, ini akan berfungsi seperti jika Anda
menggunakan aplikasi Calculator kepunyaan Windows.

16.3. Konversi Angka


Program kali ini, saya akan membuat suatu program untuk mengkonversi sebuah nilai (angka) menjadi jenis baru
seperti: angka Romawi, Binear, Hexadecimal, dan huruf nominal. Sebelumnya, buatlah folder di: “C:\Menggali VB\Bab
16”, dengan nama “Konversi”, untuk menyimpan project Anda.

Program ini juga hanya menggunakan satu buah form.

a. Desain Program
Pada form Gambarkan 5 (lima) buah Label, 5 (lima) buah TextBox, dan sebuah CommandButton. Ubah propertinya
seperti pada table di bawah:

Pengaturan Properti
Pengaturan pada: Form1
No Objek Kontrol Properti Perubahan
1 Label1 Caption Angka Masukan
2 Label2 Caption Konversi Romawi
3 Label3 Caption Konversi Binear
4 Label4 Caption Konversi Hexa
5 Label5 Caption Konversi Huruf
Name txtAngka
6 Text1
Alignment 1 – Right Justify
Name txtKonversi1
7 Text2
Alignment 0 – Left Justify
Name txtKonversi2
8 Text3
Alignment 1 – Right Justify
Name txtKonversi3
9 Text4
Alignment 1 – Right Justify

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 9


Name txtKonversi4
Alignment 0 – Left Justify
10 Text5
Multiline True
ScrollBar 2 – Vertical
Name cmdKonversi
11 Command1
Caption &Konversi

Tampilan akhir desain form seperti pada gambar di bawah ini.

Gambar 16.4. Desain form Konversi.

Tambahkan sebuah Module pada project Anda, namai dengan mdlKonversi.

b. Baris Kode

Baris Kode
Baris kode pada: mdlKonversi
1 Dim HurufKe(20) As Double

2 Function HurufSatuan(Angka As Double) As String


3 Select Case Angka
4 Case 1: HurufSatuan = "se"
5 Case 2: HurufSatuan = "dua"
6 Case 3: HurufSatuan = "tiga"
7 Case 4: HurufSatuan = "empat"
8 Case 5: HurufSatuan = "lima"
9 Case 6: HurufSatuan = "enam"
10 Case 7: HurufSatuan = "tujuh"
11 Case 8: HurufSatuan = "delapan"
12 Case 9: HurufSatuan = "sembilan"
13 Case 0: HurufSatuan = ""
14 End Select
15 End Function

16 Function Huruf(Angka As Double) As String


17 Dim Satuan$, Puluhan$, Ratusan$,
18 Dim Ribuan$, PuluhRibuan$, RatusRibuan$
19 Dim Jutaan$, PuluhJutaan$, RatusJutaan$
20 Dim Milyaran$, PuluhMilyaran$
21 Dim RatusMilyaran$, Panjang%, i%
22 Panjang = Len(CStr(Angka))
23 For i = 1 To 20
24 HurufKe(i) = 0
25 Next
26 For i = Panjang To 1 Step -1
27 HurufKe(i) = (Mid(CStr(Angka), _
(Panjang + 1) - i, 1))
28 Next
29 If HurufKe(1) = 1 Then
30 Satuan = "satu"
31 Else
32 Satuan = HurufSatuan(HurufKe(1))
33 End If
34 If HurufKe(2) > 1 Then
35 Puluhan = HurufSatuan(HurufKe(2)) & _
"puluh "

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 10


36 ElseIf HurufKe(2) = 1 Then
37 If HurufKe(1) > 0 Then
38 Satuan = HurufSatuan(HurufKe(1)) & _
"belas"
39 Else
40 Satuan = "sepuluh"
41 End If
42 End If
43 If HurufKe(3) > 0 Then
44 Ratusan = HurufSatuan(HurufKe(3)) & _
45 "ratus "
End If
46 If HurufKe(5) > 1 Then
47 PuluhRibuan = HurufSatuan(HurufKe(5)) & _
"puluh "
48 If HurufKe(4) > 0 Then
49 If HurufKe(4) = 1 Then
50 Ribuan = "satu ribu "
51 Else
52 Ribuan = HurufSatuan( _
HurufKe(4)) & "ribu "
53 End If
54 Else
55 Ribuan = "ribu "
56 End If
57 ElseIf HurufKe(5) = 1 Then
58 If HurufKe(4) = 0 Then
59 PuluhRibuan = HurufSatuan( _
HurufKe(4)) & "sepuluh ribu "
60 Else
61 PuluhRibuan = HurufSatuan( _
HurufKe(4)) & "belas ribu "
62 End If
63 Else
64 If HurufKe(4) > 0 Then
65 Ribuan = HurufSatuan(HurufKe(4)) & _
66 "ribu "
67 End If
68 End If
'--------------------------------------
69 If HurufKe(6) > 0 Then
70 If HurufKe(5) > 0 Then
71 RatusRibuan = HurufSatuan( _
HurufKe(6)) & "ratus "
72 ElseIf HurufKe(5) = 0 Then
73 If HurufKe(4) = 0 Then
74 RatusRibuan = HurufSatuan( _
HurufKe(6)) & "ratus ribu "
75 Else
76 RatusRibuan = HurufSatuan( _
HurufKe(6)) & "ratus "
77 End If
78 End If
79 End If
'------------------------------------
80 If HurufKe(8) > 1 Then
81 PuluhJutaan = HurufSatuan(HurufKe(8)) & _
"puluh "
82 If HurufKe(7) > 0 Then
83 If HurufKe(7) = 1 Then
84 Jutaan = "satu juta "
85 Else
86 Jutaan = HurufSatuan( _
HurufKe(7)) & "juta "
87 End If
88 Else
89 Jutaan = "juta "
90 End If

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 11


91 ElseIf HurufKe(8) = 1 Then
92 If HurufKe(7) = 0 Then
93 PuluhJutaan = HurufSatuan( _
HurufKe(7)) & "sepuluh juta "
94 Else
95 PuluhJutaan = HurufSatuan( _
HurufKe(7)) & "belas juta "
96 End If
97 Else
98 If HurufKe(7) > 0 Then
99 If HurufKe(7) = 1 Then
100 Jutaan = "satu juta "
101 Else
102 Jutaan = HurufSatuan( _
HurufKe(7)) & "juta "
103 End If
104 End If
105 End If
106 If HurufKe(9) > 0 Then
107 RatusJutaan = HurufSatuan( _
HurufKe(9)) & "ratus "
108 End If
109 If HurufKe(11) > 1 Then
110 PuluhMilyaran = HurufSatuan( _
111 HurufKe(11)) & "puluh "
112 If HurufKe(10) > 0 Then
113 If HurufKe(10) = 1 Then
114 Milyaran = "satu milyar "
115 Else
116 Milyaran = HurufSatuan( _
HurufKe(10)) & "milyar "
117 End If
118 ElseIf HurufKe(10) = 0 Then
119 PuluhMilyaran = HurufSatuan( _
HurufKe(11)) & "puluh milyar "
120 End If
121 ElseIf HurufKe(11) = 1 Then
122 If HurufKe(10) > 0 Then
123 PuluhMilyaran = HurufSatuan( _
124 HurufKe(10)) & "belas milyar "
125 ElseIf HurufKe(10) = 0 Then
126 PuluhMilyaran = "sepuluh milyar "
127 End If
128 ElseIf HurufKe(11) = 0 Then
129 If HurufKe(10) = 1 Then
130 Milyaran = "satu milyar "
131 ElseIf HurufKe(10) > 1 Then
132 Milyaran = HurufSatuan( _
HurufKe(10)) & "milyar "
133 End If
134 End If
135 If HurufKe(12) > 0 Then
136 RatusMilyaran = HurufSatuan( _
HurufKe(12)) & "ratus "
137 End If
138 Huruf = RatusMilyaran & PuluhMilyaran & _
Milyaran & RatusJutaan & _
PuluhJutaan & Jutaan & _
RatusRibuan & PuluhRibuan & _
Ribuan & Ratusan$ & Puluhan$ & Satuan
139 End Function

140 Function BASIS(IntAngka%, NBASIS%) As String


141 Dim INTNILAI&, INTLEN%, J%
142 Dim STRHASIL$, STRHEXA$, STREND$, STRSUB$
143 Do
144 INTNILAI = IntAngka Mod NBASIS
145 IntAngka = IntAngka \ NBASIS

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 12


146 Select Case INTNILAI
147 Case 10: STRHEXA = "A"
148 Case 11: STRHEXA = "B"
149 Case 12: STRHEXA = "C"
150 Case 13: STRHEXA = "D"
151 Case 14: STRHEXA = "E"
152 Case 15: STRHEXA = "F"
153 Case Else: STRHEXA = CStr(INTNILAI)
154 End Select
155 STRHASIL = STRHASIL + STRHEXA
156 Loop Until IntAngka < NBASIS
157 INTLEN = Len(STRHASIL):
158 STREND = CStr(IntAngka)
159 For J = INTLEN To 1 Step -1
160 STRSUB = STRSUB + Mid(STRHASIL, J, 1)
161 Next
162 If (Mid(STREND + STRSUB, 1, 1)) = "0" Then
163 BASIS = Mid(STREND + STRSUB, _
2, Len(STREND + STRSUB) - 1)
164 Else: BASIS = STREND + STRSUB: End If
165 End Function

166 Function ROMAN(IntAngka As Integer) As String


167 Dim i%, IntSeribu%, IntLimaRatus%
168 Dim IntSeratus%, IntLimaPuluh%
169 Dim IntSepuluh%, IntLima%, IntSatu%
170 Dim StrSeribu$, StrLimaRatus$, StrSeratus$
171 Dim StrLimaPuluh$, StrSepuluh$
172 Dim StrLima$, StrSatu$, StrRomawi$
173 IntSatu = IntAngka
174 IntSeribu = IntAngka \ 1000
175 IntSatu = IntAngka Mod 1000
176 IntLimaRatus = IntSatu \ 500
177 IntSatu = IntAngka Mod 500
178 IntSeratus = IntSatu \ 100
179 IntSatu = IntAngka Mod 100
180 IntLimaPuluh = IntSatu \ 50
181 IntSatu = IntAngka Mod 50
182 IntSepuluh = IntSatu \ 10
183 IntSatu = IntAngka Mod 10
184 IntLima = IntSatu \ 5
185 IntSatu = IntAngka Mod 5
186 For i = 0 To IntSeribu - 1
187 StrSeribu = StrSeribu + "M"
188 Next
189 If IntSeratus <> 4 Then
190 For i = 0 To IntLimaRatus - 1
191 StrLimaRatus = StrLimaRatus + "D"
192 Next
193 End If
194 For i = 0 To IntSeratus - 1
195 StrSeratus = StrSeratus + "C"
196 Next
197 If IntSeratus = 4 Then
198 If IntLimaRatus = 1 Then
199 StrSeratus = StrRomawi + "CM"
200 Else: StrSeratus = StrRomawi + "CD"
201 End If
202 End If
203 If IntSepuluh <> 4 Then
204 For i = 0 To IntLimaPuluh - 1
205 StrLimaPuluh = StrLimaPuluh + "L"
206 Next
207 End If
208 For i = 0 To IntSepuluh - 1
209 StrSepuluh = StrSepuluh + "X"
210 Next
211 If IntSepuluh = 4 Then

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 13


212 If IntLimaPuluh = 1 Then
213 StrSepuluh = StrRomawi + "XC"
214 Else: StrSepuluh = StrRomawi + "XL"
215 End If
216 End If
217 If IntSatu <> 4 Then
218 For i = 0 To IntLima - 1
219 StrLima = StrLima + "V"
220 Next
221 End If
222 For i = 0 To IntSatu - 1
223 StrSatu = StrSatu + "I"
224 Next
225 If IntSatu = 4 Then
226 If IntLima = 1 Then
227 StrSatu = StrRomawi + "IX"
228 Else: StrSatu = StrRomawi + "IV"
229 End If
230 End If
231 StrRomawi = StrSeribu + StrLimaRatus _
+ StrSeratus + StrLimaPuluh _
+ StrSepuluh + StrLima + StrSatu
232 ROMAN = StrRomawi
233 End Function

Baris kode pada: Form1


1 Option Explicit

2 Private Sub cmdKonversi_Click()


3 Me.txtKonversi1.Text = _
ROMAN(CInt(Me.txtAngka.Text))
4 Me.txtKonversi2.Text = _
BASIS(CInt(Me.txtAngka.Text), 2)
5 Me.txtKonversi3.Text = _
BASIS(CInt(Me.txtAngka.Text), 16)
6 Me.txtKonversi4.Text = _
Huruf(CDbl(Me.txtAngka.Text))
7 End Sub

c. Tes Program
Jalankan program! Ketikkan suatu nilai di Angka Masukan, misal: 1234, klik tombol Konversi. Hasil akan seperti pada
ilustrasi gambar berikut:

Gambar 16.5. Program Konversi sedang berjalan.

Catatan:
Konversi Huruf (nominal) di atas, mampu membaca hingga nominal ratusan
milyar. Tetapi pada program ini batasan atas nilai yang dapat diuji adalah
32.767. Untuk menguji nilai di atas batas tersebut, beri tanda kutip tunggal (‘)
di baris kode nomor 3, 4, dan 5 pada form (yang menandakan bahwa hanya
konversi Huruf yang dapat digunakan untuk nilai melampaui batas atas yang
ditentukan).

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 14


16.4. Text Editor
Program ini adalah untuk mengedit file rich text format (rtf) seperti program WinWord kepunyaan Windows.
Buatlah folder baru di alamat: “C:\Menggali VB\Bab 16” dengan nama “Text Editor”, untuk menyimpan project Anda.

a. Desain Form
Tempatkan sebuah RichTextBox dan sebuah ImageList pada form. Namai RichTextBox dengan rtfEditor dan ImageList
dengan imlMenu. Ubah property ImageWidth dan ImageHeight dari imlMenu, masing-masing menjadi 13. Masukkan
17 gambar pada imlMenu (gambar bisa Anda dapatkan pada CD).

Gambar 16.6. Property Pages ImageList.

Tambahkan CommonDialog, namai dengan cdlEditor. Dengan Menu Editor, buatlah beberapa menu seperti pada table di
bawah

Caption Name ShortCut CheckBox Indentasi


&Editor mnuEditor 0
&New mnuENew Ctrl + N 1
&Open mnuEOpen Ctrl + O 1
&Save mnuESave Ctrl + S 1
- Spr1 1
Cu&t mnuECut Ctrl + X 1
&Copy mnuECopy Ctrl + C 1
&Paste mnuEPaste Ctrl + V 1
- Spr2 1
&Bold mnuEBold Ctrl + B tandai 1
&Italic mnuEItalic Ctrl + I tandai 1
&Underline mnuEUnderline Ctrl + U tandai 1
- Spr3 1
&Left mnuELeft Ctrl + L tandai 1
C&enter mnuECenter Ctrl + E tandai 1
&Right mnuERoght Ctrl + R tandai 1
- Spr4 1
&Font… mnuEFont Ctrl + F 1
&Gambar… mnuEGambar Ctrl + G 1
- Spr5 1
&Quit mnuEQuit Ctrl + Q 1

Tampilan akhir desain seperti pada gambar di bawah:

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 15


Gambar 16.7. Desain form Editor.

b. Baris Kode

Baris Kode
Baris kode pada: Form1
1 Option Explicit

2 Private Declare Function SendMessage _


Lib "user32" Alias "SendMessageA" ( _
ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, lParam As Any) As Long

3 Dim TwipsInHimetric!
'
4 Private Sub EBold()
5 With Me.rtbEditor
6 If Not .SelBold Then
7 .SelBold = True
8 Else: .SelBold = False
9 End If
10 End With
11 End Sub
'
13 Private Sub EItalic()
14 With Me.rtbEditor
15 If Not .SelItalic Then
16 .SelItalic = True
17 Else: .SelItalic = False
18 End If
19 End With
20 End Sub

21 Private Sub EUnderline()


22 With Me.rtbEditor
23 If Not .SelUnderline Then
24 .SelUnderline = True
25 Else: .SelUnderline = False
26 End If
27 End With
28 End Sub

29 Private Sub ECut()


30 Clipboard.SetText Me.rtbEditor.SelRTF
31 Me.rtbEditor.SelText = vbNullString
32 End Sub

33 Private Sub ECopy()


34 Clipboard.SetText Me.rtbEditor.SelRTF
35 End Sub

36 Private Sub EPaste()


37 Me.rtbEditor.SelRTF = Clipboard.GetText
38 End Sub

39 Private Sub EOpen()


40 With Me.cdlEditor
41 .DialogTitle = "Buka File"
42 .CancelError = True
43 .FileName = ""
44 .Filter = "Rich Text Format (*.rtf)" & _
"|*.rtf|Word Document (*.doc)" & _
"|*.doc|Text Document (*.txt)" & _
"|*.txt|Semua File (*.*)|*.*"
45 On Error Resume Next
46 .ShowOpen: On Error GoTo 0
47 If .FileName = "" Then

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 16


48 Exit Sub
49 Else: Me.rtbEditor.FileName = .FileName
50 End If
51 End With
52 End Sub

53 Private Sub EFont()


54 With Me.cdlEditor
55 .Flags = &H3 Or &H100 Or &H1
56 .FontBold = Me.rtbEditor.SelBold
57 .FontItalic = Me.rtbEditor.SelItalic
58 .FontUnderline = _
rtbEditor.SelUnderline
59 .FontName = Me.rtbEditor.SelFontName
60 .FontSize = Me.rtbEditor.SelFontSize
61 .ShowFont
62 rtbEditor.SelBold = .FontBold
63 rtbEditor.SelItalic = .FontItalic
64 rtbEditor.SelUnderline = _
.FontUnderline
65 rtbEditor.SelColor = .Color
66 rtbEditor.SelFontSize = .FontSize
67 rtbEditor.SelFontName = .FontName
68 End With
69 End Sub

70 Private Sub EGambar()


71 Dim pic As StdPicture
72 With Me.cdlEditor
73 .DialogTitle = "Buka File"
74 .CancelError = True
75 .FileName = ""
76 .Filter = "Gambar JPG (*.jpg)" & _
"|*.jpg|Gambar Bmp (*.bmp)" & _
"|*.bmp"
77 On Error Resume Next
78 .ShowOpen: On Error GoTo 0
79 If .FileName = "" Then
80 Exit Sub
81 Else: Set pic = LoadPicture(.FileName)
82 Clipboard.Clear: Clipboard.SetData pic
83 SendMessage rtbEditor.hwnd, &H302, 0, 0
84 rtbEditor.SelText = vbCrLf
85 End If
86 End With
87 End Sub

88 Private Sub ERight()


89 Me.rtbEditor.SelAlignment = rtfRight
90 End Sub

91 Private Sub ECenter()


92 Me.rtbEditor.SelAlignment = rtfCenter
93 End Sub

94 Private Sub ELeft()


95 Me.rtbEditor.SelAlignment = rtfLeft
95 End Sub

96 Private Sub ESave()


97 With Me.cdlEditor
98 .DialogTitle = "Simpan File"
99 .CancelError = True
100 .FileName = ""
101 .Filter = "Rich Text File (*.rtf)" & _
102 "|*.rtf"
On Error Resume Next
103 .ShowSave: On Error GoTo 0

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 17


104 If .FileName = "" Then
105 Exit Sub
106 Else: Error Resume Next
107 Me.rtbEditor.SaveFile .FileName
108 End If
109 End With
110 End Sub

111 Private Sub ENew()


112 Me.rtbEditor.Text = ""
113 End Sub

114 Private Sub Form_Load()


115 rtbEditor_SelChange: Call TambahkanGambar Me
116 End Sub

117 Private Sub Form_Resize()


118 On Error Resume Next
119 Me.rtbEditor.Move 0, 0, Me.ScaleWidth, _
Me.ScaleHeight
120 End Sub

121 Private Sub mnuEBold_Click()


122 Call EBold
123 End Sub

124 Private Sub mnuECenter_Click()


125 Call ECenter
126 End Sub

127 Private Sub mnuECopy_Click()


128 Call ECopy
129 End Sub

130 Private Sub mnuECut_Click()


131 Call ECut
132 End Sub

133 Private Sub mnuEFont_Click()


134 Call EFont
135 End Sub

136 Private Sub mnuEGambar_Click()


137 Call EGambar
138 End Sub

139 Private Sub mnuEItalic_Click()


140 Call EItalic
141 End Sub

142 Private Sub mnuELeft_Click()


143 Call ELeft
144 End Sub

145 Private Sub mnuENew_Click()


146 Call ENew
147 End Sub

148 Private Sub mnuEOpen_Click()


149 Call EOpen
150 End Sub

151 Private Sub mnuEPaste_Click()


152 Call EPaste
153 End Sub

154 Private Sub mnuEQuit_Click()


155 Unload Me

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 18


156 End Sub

157 Private Sub mnuERight_Click()


158 Call ERight
159 End Sub

160 Private Sub mnuEUnderline_Click()


161 Call EUnderline
162 End Sub

163 Private Sub mnuESave_Click()


164 Call ESave
165 End Sub

166 Private Sub rtbEditor_MouseDown( _


Button As Integer, Shift As Integer, _
x As Single, y As Single)
167 If Button = 2 Then
168 Me.PopupMenu Me.mnuEditor, 2 Or 4
169 TambahkanGambar Me : End If
170 End Sub

171 Private Sub rtbEditor_SelChange()


172 With Me.rtbEditor
173 If .SelBold = True Then
Me.mnuEBold.Checked = True
174 Else: Me.mnuEBold.Checked = False
175 End If
176 If .SelItalic = True Then
177 Me.mnuEItalic.Checked = True
178 Else: Me.mnuEItalic.Checked = False
179 End If
180 If .SelUnderline = True Then
181 Me.mnuEUnderline.Checked = True
182 Else: Me.mnuEUnderline.Checked = False
183 End If
184 Me.mnuELeft.Checked = False
185 Me.mnuECenter.Checked = False
186 Me.mnuERight.Checked = False
187 If .SelAlignment = 0 Then
188 Me.mnuELeft.Checked = True
189 ElseIf .SelAlignment = 1 Then
190 Me.mnuERight.Checked = True
191 ElseIf .SelAlignment = 2 Then
192 Me.mnuECenter.Checked = True
193 End If
194 End With
195 Call TambahkanGambar Me
196 End Sub

c. Tes Program

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 19


Gambar 16.8. Program Editor sedang berjalan, menampilkan teks dan gambar.
Jalankan program! Bukan hanya teks yang dapat Anda sisipkan pada program Text Editor ini, Anda diperkenankan
untuk menyisipkan file gambar seperti: jpg, bmp atau gif.

Selain itu menu-menu yang ditampilkan pun lebih kelihatan menarik, karena dihiasi gambar-gambar kecil di sisi tiap-
tiap menunya.

Cobalah untuk menggunakan semua menu yang disediakan

16.5. Screen Saver


Tentunya Anda tahu definisi Screen Saver. Jika tidak tahu, Screen Saver adalah tampilan program saat Sistem Operasi
tidak menerima suatu aksi baik itu penekanan tombol keyboard ataupun pergerakkan pointer mouse.

Contoh program berikut ini, mencoba membuat sebuah file Screen Saver dengan tampilan jam analog.

Seperti biasa, buatlah sebuah folder baru di alamat: “C:\Menggali VB\Bab 16”, namai degan “Screen Saver”.

a. Desain Program
Ubah nama Project1 menjadi: “ssaverVian” (perubahan nama project sebetulnya tidak terlalu berperan, jadi boleh saja
bagi Anda untuk tidak menggantinya). Ubah Name dari Form1 menjadi: frmJAM, ubah BorderStyle menjadi: 0-None.

Gambarkan sebuah PictureBox, di dalam PictureBox tersebut gambarkan objek Line. Ubah properti Name dari Line1
dengan: linJam, dan ubah nilai properti Index menjadi: 0 (nol).

Gambarkan objek kontrol Timer. Ubah properti-properti dari PictureBox dan Timer, seperti pada table di bawah:

Objek pada: frmJAM


Nama Object Properti Pengaturan
Name picLogo
Autosize True
AutoRedraw True
Picture1 BorderStyle 0-None
DrawStyle 0-Solid
FillStyle 1-Transparent
Picture Terserah Anda
Name tmrJam
Timer1
Interval 100

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 20


Gambar 16.9. Desain form frmJAM.

Tambahkan sebuah form baru, Namai dengan: frmSET. Bila perlu ubah Caption dengan: “Settings”. Masukkan objek
control-objek control dan atur properti-propertinya seperti pada table di bawah ini:

Pengaturan Properti
Pengaturan pada: Form1
No Objek Kontrol Properti Perubahan
1 Frame Caption Tebal Jarum
2 Frame Caption Warna Jarum
3 Label1 Caption Jam
4 Label2 Caption Jam
5 Label3 Caption Menit
6 Label4 Caption Menit
7 Label5 Caption Detik
8 Label6 Caption Detik
9 Label7 Caption Alamat &Gambar
10 Text1 Name txtAlamat
11 Combo1 Name cboTebalJam
12 Combo2 Name cboTebalMenit
13 Combo3 Name cboTebalDetik
Name cmdAlamat
14 Command1
Caption …
Name cmdWarnaJam
15 Command2
Caption …
Name cmdWarnaMenit
16 Command3
Caption …
Name cmdWarnaDetik
17 Command4
Caption …
Name cmdOK
18 Command5 Caption OK
Default True
Name cmdCancel
19 Command6 Caption Cancel
Cancel True
20 CommonDialog Name dlgSet

Gambar 16.10. Desain form frmSET.

Tambahkan sebuah Module pada project Anda. Kita mulai membuat kode sumber.

b. Baris kode

Baris Kode
Baris kode pada: Module1
1 Option Explicit

2 Public Declare Function SystemParametersInfo _


Lib "user32" Alias "SystemParametersInfoA" _
(ByVal uAction As Long, ByVal uParam As Long, _
ByRef lpvParam As Any, _
ByVal fuWinIni As Long ) As Long

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 21


3 Public Declare Function ShowCursor _
Lib "user32" (ByVal bShow As Long) As Long

4 Declare Function SetWindowPos _


Lib "user32" (ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, _
ByVal X As Long, ByVal Y As Long, _
ByVal cx As Long, ByVal cy As Long, _
ByVal wFlags As Long) As Long

5 Const HWND_TOPMOST = -1
6 Const HWND_NOTOPMOST = -2
7 Const SWP_NOMOVE = &H2
8 Const SWP_NOSIZE = &H1
9 Const SWP_NOACTIVATE = &H10
10 Const SWP_SHOWWINDOW = &H40
11 Const TOPMOST_FLAGS = _
SWP_NOMOVE Or SWP_NOSIZE

12 Public Const SPI_SETSCREENSAVEACTIVE = 17

13 Sub MakeNormal(iForm As Form)


14 SetWindowPos iForm.hwnd, _
HWND_NOTOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS
15 End Sub

16 Sub MakeTopMost(iForm As Form)


17 SetWindowPos iForm.hwnd, _
HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS
18 End Sub

Baris kode pada: frmJAM


1 Option Explicit

2 Private WarnaJam&
3 Private WarnaMenit&
4 Private WarnaDetik&
5 Private TebalJam%
6 Private TebalMenit%
7 Private TebalDetik%
8 Private Alamat$

10 Sub Loading()
11 On Error Resume Next
12 Dim i, Sudut, X, Y, J
13 GetSettings
14 Me.picLogo.Picture = LoadPicture(Alamat)
15 Me.KeyPreview = True
16 MakeTopMost Me
17 Me.BackColor = 0
18 Me.linJam(0).X1 = -100
19 Me.linJam(0).X2 = -200
20 With Me.picLogo
21 .Cls
22 .PaintPicture .Picture, 0, 0, _
23 .Width, .Height
24 End With
25 Me.picLogo.AutoSize = True
26 For i = 0 To 10
27 If i > 0 Then Load linJam(i)
28 linJam(i).Visible = True
29 Next i
30 Me.picLogo.Scale (-1, 1)-(1, -1)
31 Sudut = J * 2 * Atn(1) / 15
32 linJam(J).X1 = 3 * Cos(Sudut)
33 linJam(J).Y1 = 3 * Sin(Sudut)
34 linJam(J).X2 = Cos(Sudut)

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 22


35 linJam(J).Y2 = Sin(Sudut)
36 linJam(J).BorderColor = vbBlue
37 End Sub

38 Private Sub Form_KeyDown( _


KeyCode As Integer, Shift As Integer)
39 Unload Me: End
40 End Sub

41 Private Sub Form_Load()


42 Dim X
43 X = SystemParametersInfo( _
SPI_SETSCREENSAVEACTIVE, 0, ByVal 0&, 0)
44 Select Case UCase(Mid(Command$, 2, 1))
45 Case Is = "P"
46 Unload Me: End: Exit Sub
47 Case Is = "C"
48 FSET.Show
49 Unload Me
50 Exit Sub
51 Case Is = "A"
52 MsgBox "Password tidak" & _
" disediakan", 64, "Informasi"
53 Unload Me: End: Exit Sub
54 Case Is = "S"
55 X = ShowCursor(False)
56 Me.Show
57 Case Else
58 X = ShowCursor(True)
59 Unload Me: End: Exit Sub
60 End Select
61 End Sub

61 Private Sub Form_MouseMove(Button As Integer, _


Shift As Integer, X As Single, Y As Single)
62 Me.TutupMouse X, Y
63 End Sub

64 Private Sub Form_Resize()


65 On Error Resume Next
66 Call Loading
67 Me.Move 0, 0, Screen.Width, Screen.Height
68 Me.picLogo.Move (Me.ScaleWidth - _
Me.picLogo.Width) / 2, _
(Me.ScaleHeight - Me.picLogo.Height) / 2
69 End Sub

70 Private Sub Form_Unload(Cancel As Integer)


71 Dim Ret
72 MakeNormal Me
73 Ret = SystemParametersInfo( _
SPI_SETSCREENSAVEACTIVE, 2, ByVal 0&, 0)
74 Ret = ShowCursor(True)
75 End Sub

76 Private Sub picLogo_MouseMove( _


Button As Integer, Shift As Integer, _
X As Single, Y As Single)
78 TutupMouse X, Y
79 End Sub

80 Private Sub tmrJam_Timer()


81 On Error Resume Next
82 Const LenganJam = 10
83 Const LenganJam2 = 9
84 Const LenganJam3 = 8
85 Const LenganMenit = 7
86 Const LenganMenit2 = 6

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 23


87 Const LenganMenit3 = 5
88 Const LenganDetik = 4
89 Const LenganDetik2 = 3
90 Const LenganDetik3 = 2
91 Dim Sudut
92 Static DetikAkhir
93 If Second(Now) = DetikAkhir Then Exit Sub
94 DetikAkhir = Second(Now)
95 With Me
96 Sudut = 0.5236 * (15 - (Hour(Now) + _
Minute(Now) / 60) + 0.2)
97 .linJam(LenganJam).X1 = 0
98 .linJam(LenganJam).Y1 = 0
99 .linJam(LenganJam).X2 = 0.3 * Cos(Sudut)
100 .linJam(LenganJam).Y2 = 0.3 * Sin(Sudut)
101 .linJam(LenganJam).BorderColor = _
WarnaJam
102 .linJam(LenganJam).BorderWidth = _
TebalDetik
103 Sudut = 0.5236 * (15 - (Hour(Now) + _
Minute(Now) / 60) - 0.2)
104 .linJam(LenganJam2).X1 = 0
105 .linJam(LenganJam2).Y1 = 0
106 .linJam(LenganJam2).X2 = 0.3 * _
Cos(Sudut)
107 .linJam(LenganJam2).Y2 = 0.3 * _
Sin(Sudut)
108 .linJam(LenganJam2).BorderColor = _
WarnaJam
109 .linJam(LenganJam2).BorderWidth = _
TebalDetik
110 Sudut = 0.5236 * (15 - (Hour(Now) + _
Minute(Now) / 60))
111 .linJam(LenganJam3).X1 = 0
112 .linJam(LenganJam3).Y1 = 0
113 .linJam(LenganJam3).X2 = 0.4 * _
Cos(Sudut)
115 .linJam(LenganJam3).Y2 = 0.4 * _
Sin(Sudut)
116 .linJam(LenganJam3).BorderColor = _
WarnaJam
117 .linJam(LenganJam3).BorderWidth = _
TebalDetik
118 Sudut = 0.1047 * (75 - (Minute(Now) + _
Second(Now) / 60) + 0.4)
119 .linJam(LenganMenit).X1 = 0
120 .linJam(LenganMenit).Y1 = 0
121 .linJam(LenganMenit).X2 = 0.5 * _
Cos(Sudut)
122 .linJam(LenganMenit).Y2 = 0.5 * _
Sin(Sudut)
123 .linJam(LenganMenit).BorderColor = _
WarnaMenit
124 .linJam(LenganMenit).BorderWidth = _
TebalMenit
125 Sudut = 0.1047 * (75 - (Minute(Now) + _
Second(Now) / 60) - 0.4)
126 .linJam(LenganMenit2).X1 = 0
127 .linJam(LenganMenit2).Y1 = 0
128 .linJam(LenganMenit2).X2 = 0.5 * _
Cos(Sudut)
129 .linJam(LenganMenit2).Y2 = 0.5 * _
Sin(Sudut)
130 .linJam(LenganMenit2).BorderColor = _
WarnaMenit
131 .linJam(LenganMenit2).BorderWidth = _
TebalMenit
132 Sudut = 0.1047 * (75 - (Minute(Now) + _

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 24


Second(Now) / 60))
133 .linJam(LenganMenit3).X1 = 0
134 .linJam(LenganMenit3).Y1 = 0
135 .linJam(LenganMenit3).X2 = 0.6 * Cos(Sudut)
136 .linJam(LenganMenit3).Y2 = 0.6 * Sin(Sudut)
137 .linJam(LenganMenit3).BorderColor = _
WarnaMenit
138 .linJam(LenganMenit3).BorderWidth = _
TebalMenit
139 Sudut = 0.1047 * (75 - Second(Now) + 0.2)
140 .linJam(LenganDetik).X1 = 0
141 .linJam(LenganDetik).Y1 = 0
142 .linJam(LenganDetik).X2 = 0.6 * Cos(Sudut)
143 .linJam(LenganDetik).Y2 = 0.6 * Sin(Sudut)
144 .linJam(LenganDetik).BorderColor = _
WarnaDetik
145 .linJam(LenganDetik).BorderWidth = _
TebalDetik

146 Sudut = 0.1047 * (75 - Second(Now) - 0.2)


147 .linJam(LenganDetik2).X1 = 0
148 .linJam(LenganDetik2).Y1 = 0
149 .linJam(LenganDetik2).X2 = 0.6 * Cos(Sudut)
150 .linJam(LenganDetik2).Y2 = 0.6 * Sin(Sudut)
151 .linJam(LenganDetik2).BorderColor = _
WarnaDetik
152 .linJam(LenganDetik2).BorderWidth = _
TebalDetik
153 Sudut = 0.1047 * (75 - Second(Now))
154 .linJam(LenganDetik3).X1 = 0
155 .linJam(LenganDetik3).Y1 = 0
156 .linJam(LenganDetik3).X2 = 0.7 * Cos(Sudut)
157 .linJam(LenganDetik3).Y2 = 0.7 * Sin(Sudut)
158 .linJam(LenganDetik3).BorderColor = _
WarnaDetik
159 .linJam(LenganDetik3).BorderWidth = _
TebalDetik
160 End With
161 End Sub

162 Sub GetSettings()


163 WarnaJam = CLng(VBA.GetSetting("Jam", _
"Warna", "Jam", CLng(vbRed)))
164 WarnaMenit = CLng(VBA.GetSetting("Jam", _
"Warna", "Menit", CLng(vbGreen)))
165 WarnaDetik = CLng(VBA.GetSetting("Jam", _
"Warna", "Detik", CLng(vbBlue)))
166 TebalJam = CStr( _
VBA.GetSetting("Jam", "Tebal", "Jam", "5"))
167 TebalMenit = CStr( _
VBA.GetSetting("Jam", "Tebal", "Jam", "5"))
168 TebalDetik = CStr( _
VBA.GetSetting("Jam", "Tebal", "Jam", "5"))
169 Alamat = CStr(VBA.GetSetting("Jam", _
"Alamat", "Gambar", App.Path & "\Jam.Bmp"))
170 End Sub

171 Sub TutupMouse(X As Single, Y As Single)


172 Static xAkhir, yAkhir
173 Dim xSkr, ySkr
174 xSkr = X: ySkr = Y
175 If xAkhir = 0 And yAkhir = 0 Then
176 xAkhir = xSkr
177 yAkhir = ySkr
178 Exit Sub
179 End If
180 If xSkr <> xAkhir Or ySkr <> yAkhir Then
181 Unload Me: End

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 25


182 End If
183 End Sub

Baris kode pada: frmSET


1 Option Explicit
'
2 Private Sub cmdAlamat_Click()
3 With Me.dlgSet
4 .DialogTitle = "Pilih Gambar"
5 .Flags = 4096
6 .Filter = "File Gambar|*.jpg;*.bmp;*.gif"
8 .CancelError = True
9 On Error Resume Next
10 .ShowOpen
11 If .FileName <> "" Then
12 Me.txtAlamat.Text = .FileName
13 End If
14 End With
15 End Sub

16 Private Sub cmdCancel_Click()


17 Unload Me
18 End Sub

19 Private Sub cmdOK_Click()


20 SaveSettings: Unload Me
21 End Sub

22 Private Sub cmdWarnaJam_Click()


UbahWarna Me.cmdWarnaJam
23 End Sub

24 Private Sub cmdWarnaMenit_Click()


25 UbahWarna Me.cmdWarnaMenit
26 End Sub

27 Private Sub cmdWarnaDetik_Click()


28 UbahWarna Me.cmdWarnaDetik
29 End Sub

30 Sub UbahWarna(ctl As Control)


31 With Me.dlgSet
32 .ShowColor: ctl.BackColor = .Color
33 End With
34 End Sub

35 Private Sub Form_Load()


36 Dim i As Integer
37 For i = 1 To 10
38 Me.cboTebalJam.AddItem CStr(i)
39 Me.cboTebalMenit.AddItem CStr(i)
40 Me.cboTebalDetik.AddItem CStr(i)
41 Next
42 GetSettings
43 End Sub

44 Sub SaveSettings()
45 VBA.SaveSetting "Jam", "Warna", "Jam", _
CStr(Me.cmdWarnaJam.BackColor)
46 VBA.SaveSetting "Jam", "Warna", "Menit", _
CStr(Me.cmdWarnaMenit.BackColor)
47 VBA.SaveSetting "Jam", "Warna", "Detik", _
CStr(Me.cmdWarnaDetik.BackColor)
48 VBA.SaveSetting "Jam", "Alamat", "Gambar", _
Me.txtAlamat.Text
49 VBA.SaveSetting "Jam", "Tebal", "Jam", _
Me.cboTebalJam.Text
50 VBA.SaveSetting "Jam", "Tebal", "Menit", _

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 26


Me.cboTebalMenit.Text
51 VBA.SaveSetting "Jam", "Tebal", "Detik", _
Me.cboTebalDetik.Text
52 End Sub

53 Sub GetSettings()
54 Me.cmdWarnaJam.BackColor = CLng( _
VBA.GetSetting("Jam", "Warna", "Jam", _
CLng(vbRed)))
55 Me.cmdWarnaMenit.BackColor = CLng( _
VBA.GetSetting("Jam", "Warna", "Menit", _
CLng(vbGreen)))
56 Me.cmdWarnaDetik.BackColor = CLng( _
VBA.GetSetting("Jam", "Warna", "Detik", _
CLng(vbBlue)))
57 Me.cboTebalJam.Text = CStr( _
VBA.GetSetting("Jam", "Tebal", "Jam", "5"))
58 Me.cboTebalMenit.Text = CStr( _
GetSetting("Jam", "Tebal", "Menit", "5"))
59 Me.cboTebalDetik.Text = CStr( _
GetSetting("Jam", "Tebal", "Detik", "5"))
60 Me.txtAlamat.Text = CStr( _
VBA.GetSetting("Jam", "Alamat", "Gambar", _
App.Path & "\Jam.Bmp"))
61 End Sub

c. Tes Program

Anda tidak akan dapat menjalankan program. Anda harus membuat eksekusi dari project Anda. Klik menu FileMake
ssaverVian.exe.

Pada dialog Make Prooject, Almatkan kombo “Save in:” ke: “C:\Windows\System32” (untuk OS Windows XP) atau
ke: “C:\Windows\ System” (untuk OS Windows 98). Ketikkan: “Screen.scr” di kotak: “File name”. Terakhir OK.

Gambar 16.11. Dialog Make Project.

Minimize-kan Visual Basic Anda, atau tekan variasi tombol Logo Windows + D, pada keyboard. Pada lingkungan
Desktop, klik kanan dan pilih Properties, untuk menampilkan dialog Display Properies. Klik tab: “Screen Saver”. Klik
kombo: “Scrren Saver”, pastikan ditemukan list dengan teks: “Screen”. Klik tombol Settings. Silakan ubah alamat
gambar, warna jarum, dan tebal jarum sesuai keinginan Anda. Klik OK. Klik tombol Preview. Jangan geserkan mouse
Anda!

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 27


Gambar 16.12. Dialog Display Propertis. Menampilkan form Setting.

Gambar 16.13. Potongan Tampilan Screen Saver.

Catatan:
File Screen Saver yang Anda buat tidak akan ada masalah pada OS Windows
98. Jujur saja, pada OS Windows XP (SP2) saya, Screen Saver tidak dapat
ditampilkan maksimal. Entah diakibatkan oleh OS yang rusak atau memang
OS Windows XP (SP2) tidak menerima format Screen Saver tersebut.

16.6. Paint
Mari kita mencoba membuat program pengolah grafis. Berikut ini contoh program untuk mengolah grafis seperti:
Menggambar garis, kotak, dan lingkaran. Program ini mencontoh program aplikasi Ms. Paint yang merupakan program
bawaan Windows untuk menggambar, menampilkan atau menangkap gambar/grafis.

Program sederhana ini hanya meggunakan sebuah form. Sebelumnya seperti biasa, buat folder di: “C:\Menggali VB\Bab
16”, namai dengan “Paint”.
a. Desain Form
Gambarkan 4 (empat) buah PictureBox. Ubah propertinya sebagai berikut:

Pengaturan Properti
Pengaturan pada: frmPaint
No Objek Kontrol Properti Perubahan
Name picLeft
BorderStyle 0-None
1 Picture1 Alignment 3-Align Left
Width 375
(Posisi) (Sisi kiri Form)
Name picBawah
BorderStyle 0-None
2 Picture2 Alignment 3-Align Bottom
Height 645
(Posisi) (Sisi bawah Form)
Name picGambar
AutoRedraw True
3 Picture3 BorderStyle 0-None
(Posisi) (Sisi tengah Form)
BackColor Putih

Pada picLeft gambarkan tiga buah OptionButton, ubah properti seperti pada tabel di bawah ini:

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 28


Pengaturan Properti
Pengaturan pada: frmPaint
No Objek Kontrol Properti Perubahan
Name optTool
Index 0
Height 375
4 Option1
Width 375
Style 1-Graphic
Picture Gambar berformat ico
Name optTool
Index 1
Height 375
5 Option2
Width 375
Style 1-Graphic
Picture Gambar berformat ico
Name optTool
Index 2
Height 375
6 Option3
Width 375
Style 1-Graphic
Picture Gambar berformat ico

Pada picBawah gambarkan dua buah PictureBox, empat buah Label, dan sebuah ComboBox. Ubah propertinya seperti
table di bawah.

Pengaturan Properti
Pengaturan pada: frmPaint
No Objek Kontrol Properti Perubahan
Name picPick
BackColor Hitam
7 Picture1
Height 375
Width 375
Name picColor
8 Picture2 AutoRedraw True
Width 3015
9 Label1 Caption Line Width
Name lblX
10 Label2
Caption X
Name lblY
11 Label3
Caption Y
Name lblRGB
12 Label4 AutoSize True
Caption R
Name cboLineWidth
13 Combo1
Text 1

Tampilan akhir desain seperti gambar di berikut ini:

Gambar 16.14. Form saat didesain.

b. Baris Kode

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 29


Baris Kode
Baris kode pada: frmPaint
1 Option Explicit

2 Dim X1!, Y1!, Y1!, Y2!, cX!, cY!, LX!, LY!,


3 Dim PusatX!, PusatY!, Aspek!, Radius!, nTool%
4 Dim WarnaDasar As OLE_COLOR
5 Dim Seret As Boolean

6 Private Sub cboLineWidth_Change()


7 Me.picGambar.DrawWidth = _
Val(Me.cboLineWidth.Text)
8 End Sub

9 Private Sub cboLineWidth_Click()


10 Me.picGambar.DrawWidth = _
Val(Me.cboLineWidth.Text)
11 End Sub

12 Private Sub Form_Unload(Cancel As Integer)


13 On Error Resume Next
14 VB.SavePicture Me.picGambar.Image, _
"C:\Gambar.bmp"
15 End Sub

16 Private Sub optTool_Click(Index As Integer)


17 If Me.optTool(Index).Value = True Then
18 nTool = Index
19 End If
20 End Sub

21 Private Sub Form_Load()


22 Dim i As Integer
23 nTool = 100
24 BikinWarna
25 With Me.cboLineWidth
26 .AddItem "1"
27 For i = 2 To 20 Step 2
28 .AddItem i
29 Next
30 End With
31 End Sub

32 Private Sub Form_Resize()


33 Me.picGambar.Move picKiri.Width, 0, _
Me.ScaleWidth - Me.picKiri.Width, _
Me.ScaleHeight - Me.picBawah.Height
34 End Sub

35 Private Sub picColor_MouseUp( _


Button As Integer, Shift As Integer, _
X As Single, Y As Single)
36 picPick.BackColor = picColor.Point(X, Y)
37 WarnaDasar = picColor.Point(X, Y)
38 End Sub

39 Private Sub picGambar_MouseDown( _


Button As Integer, Shift As Integer, _
X As Single, Y As Single)
40 Select Case nTool
41 Case 2
42 Me.picGambar.MousePointer = 99
43 Me.picGambar.MouseIcon = _
Me.optTool(2).Picture
44 End Select
45 If Button And 3 Then
46 Seret = True
47 X1 = X: Y1 = Y: X2 = X: Y2 = Y

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 30


48 Me.picGambar.DrawMode = 10
49 Me.picGambar.ForeColor = WarnaDasar
50 If nTool = 0 Then
51 Me.picGambar.Line (X1, Y1)- _
(X2, Y2), , B
52 ElseIf nTool = 1 Then
53 If Lingkaran(X1, Y1, X2, Y2) Then
picGambar.Circle (PusatX, _
PusatY), Radius, , , , Aspek
54 Radius = 0
55 End If
56 ElseIf nTool = 2 Then
57 Me.picGambar.ForeColor = WarnaDasar
58 Me.picGambar.Line (X1, Y1)-(X, Y)
59 End If
60 If Button = 2 Then
61 Me.picGambar.FillStyle = vbFSSolid
62 Me.picGambar.FillColor = WarnaDasar
63 End If
64 End If
65 End Sub

66 Private Sub picGambar_MouseMove( _


Button As Integer, Shift As Integer, _
X As Single, Y As Single)
67 Dim clr&, R&, G&, B&
68 If Seret Then
69 If nTool = 0 Then
70 picGambar.ForeColor = WarnaDasar
71 picGambar.Line (X1, Y1)-(X2, Y2), , B
72 X2 = X: Y2 = Y
73 picGambar.Line (X1, Y1)-(X2, Y2), , B
74 ElseIf nTool = 1 Then
75 If Lingkaran(X1, Y1, X2, Y2) Then
76 picGambar.Circle (PusatX, PusatY), _
Radius, , , , Aspek
77 Radius = 0
78 End If
79 X2 = X: Y2 = Y
80 If Lingkaran(X1, Y1, X2, Y2) Then
81 picGambar.Circle (PusatX, PusatY), _
Radius, , , , Aspek
82 Radius = 0
83 End If
84 ElseIf nTool = 2 Then
85 Me.picGambar.Line (X1, Y1)-(X, Y)
86 X1 = X: Y1 = Y
87 Me.picGambar.Line (X1, Y1)-(X, Y)
88 End If
89 End If
90 Me.lblX.Caption = "X = " & X
91 Me.lblY.Caption = "Y = " & Y
92 clr = Me.picGambar.Point(X, Y)
93 R = clr Mod 256
94 G = (clr \ 256) Mod 256
95 B = clr \ 256 \ 256
96 lblRGB.Caption = " R = " & G & ", G = " & _
G & ", B = " & B & " - " & clr
97 End Sub

98 Private Sub picGambar_MouseUp( _


Button As Integer, Shift As Integer, _
X As Single, Y As Single)
99 If Seret Then
100 Seret = False
101 Me.picGambar.ForeColor = WarnaDasar
102 Me.picGambar.DrawMode = vbCopyPen
103 If nTool = 0 Then

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 31


104 Me.picGambar.Line (X1, Y1)-(X, Y), , B
105 ElseIf nTool = 1 Then
106 If Lingkaran(X1, Y1, X2, Y2) Then
107 picGambar.Circle (PusatX, PusatY), _
Radius, , , , Aspek
108 Radius = 0
109 End If
110 ElseIf nTool = 2 Then
111 Me.picGambar.Line (X1, Y1)-(X, Y)
112 End If
113 Me.picGambar.FillStyle = vbFSTransparent
114 End If
115 Me.picGambar.MousePointer = 0
116 End Sub

117 Private Function Lingkaran(iX1, iY1, iX2, iY2)


118 LX = Abs(iX2 - iX1)
119 If LX <> 0 Then
120 LY = Abs(iY2 - iY1)
121 Aspek = Abs(LY / LX)
122 If LX > LY Then
123 Radius = LX / 2
124 Else: Radius = LY / 2
125 End If
126 PusatX = iX1 + (iX2 - iX1) / 2
127 PusatY = iY1 + (iY2 - iY1) / 2
128 End If
129 Lingkaran = LX
130 End Function

131 Sub BikinWarna()


132 Dim i%, HalfPic!, HPic As!, WPic As!
133 WPic = Me.picColor.ScaleWidth
134 HPic = Me.picColor.ScaleHeight
135 HalfPic = Me.picColor.ScaleHeight / 2
136 For i = 0 To 7
137 Me.picColor.Line (i * (WPic / 8), _
0)-Step(400, HalfPic), QBColor(i), BF
138 Me.picColor.Line (i * (WPic / 8), _
HalfPic)-Step(400, _
HPic), QBColor(i + 8), BF
139 Me.picColor.Line (i * (WPic / 8), _
0)-Step(400, HalfPic), QBColor(15), B
140 Me.picColor.Line (i * (WPic / 8), _
HalfPic)-Step(400, _
HPic - 20), QBColor(15), B
141 Next
142 End Sub

c. Tes Program
Jalankan program, klik sebuah tombol di sisi kiri layar, pindahkan pointer ke daerah kanvas (layar tengah), kemudian
lakukan dragging di daerah kanvas. Tentukan ketebalan garis dengan memilih angka ketebalan pada combobox
“LineWidth”.

Coba pula klik tombol bergambar Ellips, pindahkan pointer ke daerah kanvas. Lakukkan dragging dengan menggunakan
klik kanan di daerah kanvas.

Klik tombol Close (x). Periksa drive C dengan menggunakan Windows Explorer. Anda akan menemukan sebuah file
gambar dengan format (.bmp) dengan nama Gambar.bmp. Klik ganda file tersebut. Gambar dari file tersebut adalah
gambar yang telah Anda buat pada program paint tadi.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 32


Gambar 16.15. Program sedang berjalan.

16.7. Brightness
Ini adalah contoh program untuk menambahkan efek pencahayaan (brightness) suatu file gambar, yang mungkin sering
Anda temukan pada program aplikasi pengolah grafis seperti CorelDraw, PhotoShop dan sebagainnya.

Program ini hanya menggunakan sebuah form dan dua buah objek kontrol.

a. Desain Form
Jalankan Visual Basic pada template VB Enterprise Edition Control. Masukkan sebuah PictureBox dan sebuah
CommonDialog ke dalam form, kemudian atur propertinya sebagai berikut:

Pengaturan Properti
Pengaturan pada: Form1
No Objek Kontrol Properti Perubahan
Name picBright
AutoRedraw True
1 Picture1
AutoSize True
ScaleMode 3-Pixel
Name cdlSave
2 CommonDialog1

Gambar 16.16. Desain form.

Dengan Menu Editor, buatlah menu dan sub menu sesuai ketentuan table di bawah ini:

Caption Name ShortCut CheckBox Indentasi


&File mnuFile 0
&Open mnuFileOpen Ctrl + O 1
&Save mnuFileSaveAs Ctrl + S 1
&Edit mnuEdit 0
&Brightness mnuEdit Brightness Ctrl + B 1

b. Baris Kode

Baris Kode
Baris kode pada: Form1
1 Option Explicit

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 33


2 Private Declare Function _
SetPixelV Lib "gdi32" ( _
ByVal hDC As Long, ByVal X&, ByVal Y&, _
ByVal crColor As Long) As Byte

3 Private Declare Function _


GetPixel Lib "gdi32" (ByVal hDC As Long, _
ByVal X As Long, ByVal Y As Long) As Long

4 Const NilaTajam = 110

5 Private Sub mnuEditBrightness_Click()


6 Dim Brightness As Single
7 Dim WarnaBaru&, X%, Y%, R%, G%, B%

8 Brightness = NilaTajam / 100


9 For X = 0 To picBright.ScaleWidth
10 For Y = 0 To picBright.ScaleHeight
11 WarnaBaru = GetPixel( _
picBright.hDC, X, Y)
12 R = (WarnaBaru Mod 256)
13 B = (Int(WarnaBaru / 65536))
14 G = ((WarnaBaru - (B * 65536) _
- R) / 256)
15 R = R * Brightness
16 B = B * Brightness
17 G = G * Brightness
18 If R > 255 Then R = 255
19 If R < 0 Then R = 0
20 If B > 255 Then B = 255
21 If B < 0 Then B = 0
22 If G > 255 Then G = 255
23 If G < 0 Then G = 0

24 SetPixelV picBright.hDC, X, Y, RGB(R, G, B)


25 Next Y
26 If X Mod 10 = 0 Then picBright.Refresh
27 Next X
28 picBright.Refresh
29 End Sub

30 Private Sub mnuFileOpen_Click()


31 With Me.cdlSave
32 .DialogTitle = "Open"
33 .Filter = "Gambar|*.bmp;*jpg;*gif"
34 .CancelError = False
35 .ShowOpen
36 If Len(.FileName) <> 0 Then
37 Me.picBright.Picture = _
LoadPicture(.FileName)
38 End If
39 End With
40 End Sub

41 Private Sub mnuFileSaveAs_Click()


42 With Me.cdlSave
43 .DialogTitle = "Save As"
44 .Filter = "Bmp|*.bmp"
45 .CancelError = False
46 .ShowSave
47 If Len(.FileName) <> 0 Then
48 SavePicture Me.picBright.Image, _
.FileName
49 End If
50 End With
51 End Sub

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 34


c. Tes Program

Jalankan program, klik menu FileOpen, cari sebuah file gambar bitmap (bmp), klik menu EditBrightness. Efek
brightness gambar akan bertambah. Klik kembali menu EditBrightness atau tekan Ctrl + B pada keyboard untuk
menambah efek brightness.

16.8. Jaringan MLM


Contoh program berikut ini adalah kutipan dari program aplikasi pengolah data MLM (Multi Level Marketing).
Program ini menampilkan data jaringan seorang mitra suatu MLM. Dimana MLM ini menerapkan menggunakan sistem
dua bawahan, artinya seorang mitra harus mempunyai dua orang mitra baru sebagai ‘bawahan’.

Program berikut ini juga mengimplementasikan penggunaan variable array dinamis multidimensi, khusunya variable
array dengan dimesi tiga.

Buatlah sebuah folder di alamat: “C:\Menggali VB\Bab 16” dengan nama “MLM”.

a. Desain Database
Sebelum memulai project, Anda harus membuat sebuah database. Dengan Ms. Access, buatlah sebuah file database
dengan nama: “Data.mdb”, simpan database Anda di: “C:\Menggali VB\Bab 16\MLM”.

Berikut ini struktur database yang harus Anda buat:

Nama Tabel tblMitra


Nama Field Tipe Ukuran
NO MITRA Text 10
ID1 Number Long Integer
ID2 Number Long Integer
NAMA MITRA Text 50
Primary Index pada: NO MITRA

Isikan sebanyak 20 (dua puluh) data ke dalam tblMitra tersebut, data seperti pada table di bawah ini.

Nama Tabel tblMitra


NO MITRA ID1 ID2 NAMA MITRA
070510001 0 1 AGUNG VIANSASTRA NOVIAN
070510002 1 1 SYAIFULAH
070510003 1 2 AJAT JATNIKA
070510004 2 1 PURBADI
070510005 2 2 SAEPUL MIKDAR
070510006 2 3 ARIF PERMANA
070510007 2 4 YUDI ARMAN
070510008 3 1 SANTOSO
070510009 3 2 ABE HARIS A.
070510010 3 3 SUBANA
070510011 3 4 RITA ROSITA
070510012 3 5 AYU DEWI
070510013 3 6 SUHARYANTO
070510014 3 7 FANNY PRATIWI R.
070510015 3 8 RUDI PRAWIRANEGARA
070510016 4 1 RETNO OKTAVIANI
070510017 4 2 IRMA IRMAYANTI
070510018 4 3 RUSMANJAYA
070510019 4 4 RADEN ZAKARIA
070510020 4 5 MOH. SANAJI

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 35


Gambar 16.17. Desain database dengan Ms. Access.

b. Desain Form
Jalankan Visual Basic pada template VB Enterprise Edition Control. Tambahkan sebuah module. Namai degan
mdlJaringan.

Pada form tambahkan objek kontrol-objek kontrol dan atur propertinya, seperti pada table di bawah ini.

Pengaturan Properti
Pengaturan pada: Form1
No Objek Kontrol Properti Perubahan
1 Label1 Caption No. Mitra
2 Combo1 Name cboNoMitra
Name cmdNama
3 Command1
Caption &Baca Nama
Name trvAdo
Indentation 100
4 TreeView1 FullRowSelect True
HotTracking True
LabelEdit 1-tvwManual
Name lvwMitra
FullRowSelect True
5 ListView1 GridLines True
LabelEdit 1-lvwManual
View 3-lvwReport
Name adoData
6 Adodc1
Align 2-vbAlignBottom
Name imlIkon
7 ImageList1 ImageHeight 16
ImageWidth 16

Pada imlIkon, klik kanan, pilih Properties. Pada dialog yang ditampilkan, klik tab Images, klik tombol Insert Pictures…,
masukkan setidaknya tiga buah gambar dengan format ikon (.ico). Tampilan akhir desain seperti gambar di bawah ini.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 36


Gambar 16.18. Desain form.

c. Baris Kode

Baris Kode
Baris kode pada: Module1
1 Option Explicit
2 Public NoMitraLv(10, 100, 100) As String
3 Public NamaMitraLv(10, 100, 100) As String
4 Public DS$(100, 100)
5 Public NDL$(10, 100, 100)
6 Public Const iJumDs As Integer = 2
'
7 Function TentukanIDDSAll(iID As String _
) As String
8 On Error Resume Next
9 Dim nID(100) As String, nID1$, nID2$
10 Dim i&, r&, s&, t&, J%, iSpr%
11 iSpr = InStr(iID, "-")
12 nID1 = Mid(iID, 1, Val(iSpr) - 1)
13 nID2 = Mid(iID, (iSpr + 1))
14 r = nID2 - 1
15 s = r * iJumDs + 1
16 t = s + iJumDs - 1
17 For i = s To t
18 TentukanIDDSAll = TentukanIDDSAll & _
CStr(CLng(nID1 + 1)) & "-" & CStr(i) & "%"
19 Next
20 End Function
'
21 Function TentukanID_DS(iID As String, _
Optional N As Integer = 0) As String
22 On Error Resume Next
23 Dim nID(100) As String
24 Dim i&, J%, iSpr%, IDAll As String
25 IDAll = TentukanIDDSAll(iID)
26 J = 1
27 For i = 1 To Len(IDAll)
28 iSpr = InStr(i, IDAll, "%")
29 If iSpr <> 0 Then
30 nID(J) = Mid(IDAll, i, iSpr - i)
31 i = iSpr
32 J = J + 1
33 Else
34 Exit For
35 End If
36 Next
37 TentukanID_DS = nID(N)
38 End Function
'
39 Function NoMitratoID$(NoMitra As String)
40 On Error Resume Next
41 If NoMitra <> "" Then
42 With FTreeView.adoData
43 .RecordSource = _
"SELECT * FROM " & _
"tblMitra WHERE [NO MITRA]='" _
& NoMitra & "'"
44 .Refresh
45 With .Recordset
46 If .RecordCount <> 0 Then
47 NoMitratoID = ![ID1] _
& "-" & ![ID2]
48 Else
49 NoMitratoID = ""
50 End If
51 End With
52 End With

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 37


53 End If
54 End Function
'
55 Function NamaMitra$(NoMitra$)
56 On Error Resume Next
57 If NoMitra$ <> "" Then
58 With FTreeView.adoData
59 .RecordSource = "SELECT * FROM " & _
"tblMitra WHERE [NO MITRA]='" & _
NoMitra$ & "'" & _
" OR Right([NO MITRA],4) ='" & _
Right(NoMitra, 4) & "'"
60 .Refresh
61 With .Recordset
62 If .RecordCount <> 0 Then
63 NamaMitra = ![NAMA MITRA]
64 Else
65 NamaMitra$ = ""
66 End If
67 End With
68 End With
69 End If
70 End Function
'
71 Function IDtoNoMitra$(iID As String)
72 On Error Resume Next
73 Dim nID1$, nID2$, iSpr%
74 If iID <> "" Then
75 If Len(iID) > 1 Then
76 iSpr = InStr(iID, "-")
77 nID1 = Mid(iID, 1, Val(iSpr) - 1)
78 nID2 = Mid(iID, (iSpr + 1))
79 With FTreeView.adoData
80 .RecordSource = _
"SELECT * FROM " & _
"tblMitra WHERE [ID1]=" & _
nID1 & " AND [ID2]=" & nID2 & ""
81 .Refresh
82 With .Recordset
83 If .RecordCount <> 0 Then
84 IDtoNoMitra = ![NO MITRA]
85 Else
86 IDtoNoMitra = ""
87 End If
88 End With
89 End With
90 End If
91 End If
92 End Function

Baris kode pada: Form1


1 Option Explicit
'
2 Dim myList As ListItem
'
3 Private Sub cboNoMitra_Click()
4 On Error Resume Next
5 Call BuatTreeLevel(Me.cboNoMitra.Text)
6 Set myList = Me.lvwMitra.FindItem( _
7 Me.cboNoMitra.Text, 1, , 1)
myList.EnsureVisible
myList.Selected = True
8 Me.lvwMitra.SetFocus
9 End Sub
'
10 Private Sub cmdNama_Click()
11 Me.LihatNama
12 End Sub

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 38


'
13 Private Sub Form_Load()
14 Set Me.trvAdo.ImageList = Me.imlIkon
15 Set Me.lvwMitra.Icons = Me.imlIkon
16 Set Me.lvwMitra.ColumnHeaderIcons = Me.imlIkon
17 Set Me.lvwMitra.SmallIcons = Me.imlIkon
18 Call BuatKolom
19 Me.Show
20 With Me.adoData
21 .ConnectionString = _
"Provider=Microsoft" & _
".Jet.OLEDB.4.0;Data Source=" & _
App.Path & "\data.mdb;" & _
"Persist Security Info=False"
22 .RecordSource = _
"Select * From tblMitra Order" & _
" By RIGHT([NO MITRA],4)"
23 .Refresh
24 With .Recordset
25 While Not .EOF
26 Me.cboNoMitra.AddItem _
CStr(![NO MITRA])
27 Set myList = Me.lvwMitra.ListItems _
28 .Add(, , Format( _
.AbsolutePosition, "000") , 1, 1)
29 myList.SubItems(1) = _
CStr(![NO MITRA])
30 myList.SubItems(2) = _
CStr(![NAMA MITRA])
31 .MoveNext
32 DoEvents
33 Wend
34 End With
35 End With
36 Me.cboNoMitra.ListIndex = 0
37 End Sub
'
38 Sub TambahNode(X%, i%, A%, B%)
39 On Error Resume Next
40 DS$(B, i) = TentukanID_DS(NoMitratoID( _
NDL$(A - 1, X, i)), B)
41 NDL$(A, B, i) = IDtoNoMitra(DS(B, i))
42 NoMitraLv(A, B, i) = NDL$(A, B, i)
43 With Me.trvAdo.Nodes
44 .Add "M-" & NoMitraLv(A - 1, X, i), _
tvwChild, "M-" & NoMitraLv(A, B, i), _
NoMitraLv(A, B, i), 1, 2
45 NamaMitraLv(A, B, i) = _
NamaMitra(NoMitraLv(A, B, i))
46 End With
47 End Sub
'
48 Sub BuatTreeLevel(NoMitra$)
49 Dim nID$, i%, J%, K%, L%, M%, N%, O%, X%
50 On Error Resume Next
51 nID = NoMitratoID(NoMitra$)
52 With Me.trvAdo.Nodes
53 .Clear
54 .Add , , "M-" & NoMitra, NoMitra, 1, 2
55 For X = 1 To 1
56 For i = 1 To iJumDs
57 DS$(X, i) = TentukanID_DS(nID, i)
58 NDL$(1, X, i) = _
IDtoNoMitra(DS(X, i))
59 NoMitraLv(1, X, i) = NDL$(1, X, i)
60 .Add "M-" & NoMitra, tvwChild, _
"M-" & NoMitraLv(1, X, i), _
61 NoMitraLv(1, X, i), 1, 1

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 39


62 If DS$(X, i) <> "" Then
63 For J = 1 To iJumDs
64 TambahNode X, i, 2, J
65 If DS$(J, i) <> "" Then
66 For K = 1 To iJumDs
67 TambahNode J, i, 3, K
68 If DS$(K, J) <> "" Then
69 For L = 1 To iJumDs
70 TambahNode K, J, 4, L
71 If DS$(L, K) <> "" Then
72 For M = 1 To iJumDs
73 TambahNode L, K, 4, M
74 Next
75 End If
76 Next
77 End If
78 Next
79 End If
80 Next
81 End If
82 Next
83 Next
84 End With
85 Call SimpanTag
86 End Sub
'
87 Sub SimpanTag()
88 Dim i As Integer
89 With Me.trvAdo
90 For i = 1 To .Nodes.Count
91 .Nodes(i).Tag = .Nodes(i).Text
92 .Nodes(i).Selected = True
93 Next
94 End With
95 End Sub
'
96 Sub LihatNama()
97 Dim i As Integer
98 With Me.trvAdo
99 If .Nodes(1).Tag = "" Then
100 Me.SimpanTag
101 End If
102 For i = 1 To .Nodes.Count
103 .Nodes(i).Text = .Nodes(i).Text & _
" -=> " & NamaMitra(.Nodes(i).Tag)
104 Next
105 End With
106 End Sub
'
107 Sub BuatKolom()
108 With Me.lvwMitra.ColumnHeaders
109 .Add , , "No", 800, , 1
110 .Add , , "No Mitra", 1500, , 2
111 .Add , , "Nama Mitra", 2800, , 3
112 End With
113 End Sub

d. Tes Program
Jalankan program! Tunggu beberapa saat, pada treeview akan tergambar jaringan seorang mitra dengan nomor mitra:
“070510001”. Klik tombol Baca Nama, untuk menampilkan nama-nama mitra. Cobalah pilih nomor mitra lainnya dari
kombo No Mitra.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 40


Gambar 16.19. Program sedang berjalan.

16.9. HTML Maker


Berikut ini contoh program untuk membuat dan mengedit file web atau HTML. Bagi Anda yang biasa menggunakan
Notepad untuk membuat HTML, sekarang saatnya beralih ke program buatan Anda sendiri.

Seperti biasa, buatlah sebuah folder baru, di alamat: “C:\Menggali VB\Bab 16”, namai dengan: “HTMLMaker”.

a. Desain Form
Namai form dengan frmHTML. Buatlah menu-menu dengan ketentuan seperti pata tabel berikut ini:

Name Caption Shortcut Indentasi


mnuFile &File 0
mnuFileNew &New Ctrl+N 1
mnuFileOpen &Open Ctrl+O 1
Spr11 - 1
mnuFileSave &Save Ctrl+S 1
mnuFileSaveAs Save &As... F12 1
mnuFileExit E&xit Ctrl+Q 1
mnuEdit &Edit 0
mnuEditUndo &Undo Ctrl+Z 1
mnuEditRedo &Redo Ctrl+Y 1
Spr21 - 1
mnuEditCut C&ut Ctrl+X 1
mnuEditCopy &Copy Ctrl+C 1
mnuEditPaste &Paste Ctrl+V 1
mnuView &View 0
mnuViewWeb &Web Page Ctrl+W 1

Masukkan objek kontrol-objek kontrol berikut ini, dan atur properti-propertinya:

Pengaturan Properti
Pengaturan pada: Form1
No Objek Kontrol Properti Perubahan
Name picTop
Align 1-Align Top
1 Picture1
BorderStyle 0-Nono
Height 855
Name rtbHTML
2 RichTextBox1 Appearance 1-Flat
ScrollBar 3-Both
3 CommonDialog1 Name cdlHTML
Name imlHTML
4 ImageList1 ImageHeight 16
ImageWidth 16

Pada kontrol ImageList, masukkan picture sebanyak 9 (sembilan) buah. Picture-picture ini bisa Anda dapatkan pada CD.

Pada picTop, gambarkan objek kontrol-objek kontrol berikut ini dan atur properti-propertinya.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 41


Pengaturan Properti
Pengaturan pada: Form1
No Objek Kontrol Properti Perubahan
Name tblHTML
5 ToolBar1 BorderStyle 0-ccNone
Style 1-tbrFlat
Name cboFormat
6 Combo1 Style 2-DropDownList
Sorted True
Name cboProperti
7 Combo2 Style 2-DropDownList
Sorted True
Name cboInsert
8 Combo1 Style 2-DropDownList
Sorted True
Name hscRGB
Index 0
Max 255
9 HScrollBar1
LargeChange 1
SmallChange 1
Value 90
Name hscRGB
Index 1
Max 255
10 HScrollBar2
LargeChange 1
SmallChange 1
Value 110
Name hscRGB
Index 2
Max 255
11 HScrollBar3
LargeChange 1
SmallChange 1
Value 140
Name picWarna
12 Picture1
BackColor Putih

Klik kanan pada ToolBar: tlbHTML, pilih Properties. Kaitkan properti ImageList dengan imlHTML.

Tambahkan tombol-tombol pada tlbHTML sebanyak 12 (dua belas), kemudian atur properti dari tombol-tombol tersebut
seperti pada tabel di bawah ini:

Properti pada: Button tlbHTML


Index Style ToolTipText Image
1 0-tbrDefault New (Ctrl+N) 1
2 0-tbrDefault Open (Ctrl+O) 2
3 0-tbrDefault Save (Ctrl+S) 3
4 3-tbrSeparator
5 0-tbrDefault Cut (Ctrl+X) 4
6 0-tbrDefault Copy (Ctrl+C) 5
7 0-tbrDefault Paste (Ctrl+V) 6
8 3-tbrSeparator
9 0-tbrDefault Undo (Ctrl+Z) 7
10 0-tbrDefault Redo (Ctrl+Y) 8
11 3-tbrSeparator
12 0-tbrDefault Bowse (Ctrl+W) 9

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 42


Gambar 16.20. Desain Form.

Tambahkan dua buah Module pada project Anda, namai dengan: mdlHTML dan mdlUndo.

b. Baris Kode

Baris Kode
Baris kode pada: mdlHTML
1 Option Explicit

2 Public Declare Function ShellExecute _


Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, _
ByVal lpOperation As String, _
ByVal lpFile As String, _
ByVal lpParameters As String, _
ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long

3 Function MyShell(PathAndFile As String, _


Optional Parameters As String = "", _
Optional ShowCmd As Long _
= vbNormalNoFocus) As Long
4 Dim Path As String, File As String
5 On Error Resume Next
6 Path = Left(PathAndFile, _
InStrRev(PathAndFile, "\"))
7 While (Right$(Path, 1) = "\")
8 Path = Left(Path, Len(Path) - 1)
9 Wend
10 File = Mid$(PathAndFile, _
11 InStrRev(PathAndFile, "\") + 1)
12 MyShell = ShellExecute(0, vbNullString, _
File, Parameters, Path, ShowCmd)
13 If MyShell < 32 Then Shell PathAndFile, _
ShowCmd
14 End Function

15 Function StrukturAwal() As String


16 StrukturAwal = "<HTML>" & vbCrLf & _
vbCrLf & vbCrLf & "<HEAD> " & vbCrLf & _
"<TITLE> " & ".:. My Web .:. </TITLE>" & _
vbCrLf & vbCrLf & "</HEAD> " & _
vbCrLf & "<BODY> " & vbCrLf & vbCrLf & _
"</BODY> " & vbCrLf & _
"<!-=-Created By INOCHISoftware-=->" & _
vbCrLf & "</HTML>"
17 End Function

18 Sub fFormat(FRM As Form, sFormat As String)


19 Dim xClip As String, xHasil As String
20 On Error Resume Next

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 43


21 xClip = FRM!rtbHTML.SelText
22 xHasil = "<" & sFormat & ">" & _
xClip & "</" & sFormat & ">"
23 FRM!rtbHTML.SelRTF = Replace( _
24 FRM!rtbHTML.SelText, xClip, xHasil, , 2)
25 End Sub

26 Sub fTAG(FRM As Form, sFormat As String)


27 Dim Awal%, xHasil As String
28 On Error Resume Next
29 Awal% = FRM!rtbHTML.SelStart
30 xHasil = "<" & sFormat & ">" & _
" " & "</" & sFormat & ">"
31 FRM!rtbHTML.SelRTF = xHasil
32 FRM!rtbHTML.SelStart = Awal + (Len(xHasil)\ 2)
33 End Sub

Baris kode pada: mdlUndo


1 Option Explicit

2 Private vItem As Variant


3 Private UniqueNum&
4 Public Dirty As Boolean
5 Public ColUndo As New Collection
6 Public ColRedo As New Collection

7 Public Sub DeleteCollections()


8 On Error Resume Next
9 For Each vItem In ColUndo
10 ColUndo.Remove 1
11 Next
12 For Each vItem In ColRedo
13 ColRedo.Remove 1
14 Next
15 UniqueNum = 0
16 End Sub

17 Public Sub UpdateUndo()


18 On Error Resume Next
19 UniqueNum = UniqueNum + 1
20 ColUndo.Add frmHTML.rtbHTML.Text, _
CStr(UniqueNum)
21 If Dirty = False Then Exit Sub
22 Dirty = True
23 End Sub

24 Public Sub DoUnDo()


25 On Error Resume Next
26 With frmHTML.rtbHTML
27 .Text = ColUndo.Item(ColUndo.Count)
28 .Refresh
29 ColRedo.Add ColUndo.Item(ColUndo.Count)
30 ColUndo.Remove ColUndo.Count
31 .Text = ColUndo.Item(ColUndo.Count)
32 .Refresh
33 End With
34 End Sub

35 Public Sub DoReDo()


36 On Error Resume Next
37 With frmHTML.rtbHTML
38 .Text = ColUndo.Item(ColUndo.Count)
39 .Refresh
40 ColUndo.Add ColRedo.Item(ColRedo.Count)
41 ColRedo.Remove ColRedo.Count
42 .Text = ColUndo.Item(ColUndo.Count)
43 .Refresh
44 End With

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 44


45 End Sub

46 Public Sub ClearRedo()


47 On Error Resume Next
48 For Each vItem In ColRedo
49 ColRedo.Remove 1
50 Next
51 End Sub

Baris kode pada: frmHTML


1 Option Explicit

2 Dim BukaAlamat$, KonstWarna$


3 Dim SudahSimpan As Boolean

4 Private Sub cboProperti_Click()


5 On Error Resume Next
6 rtbHTML.SelText = " " & Me.cboProperti & "="
7 Me.rtbHTML.SetFocus
8 End Sub

9 Private Sub Form_QueryUnload( _


Cancel As Integer, UnloadMode As Integer)
10 Dim Pesan$
11 If Not (SudahSimpan) Then
12 Cancel = 1
13 Pesan = MsgBox( _
"Akhir perubahan belum tersimpan" & _
"Klik Yes untuk menyimpan.", _
vbQuestion + vbYesNoCancel)
14 If Pesan = vbYes Then
15 mnuFileSave_Click: Cancel = 0
16 ElseIf Pesan = vbNo Then
17 Cancel = 0
18 Else: Cancel = 1
19 Me.rtbHTML.SetFocus
20 End If
21 End If
22 End Sub

23 Private Sub mnuEditCopy_Click()


24 With Me.rtbHTML
25 Clipboard.SetText .SelText
26 End With
27 End Sub

28 Private Sub mnuEditCut_Click()


29 UpdateUndo
30 With Me.rtbHTML
31 Clipboard.SetText .SelText
32 .SelText = vbNullString
33 UpdateUndo
34 End With
35 End Sub

36 Private Sub mnuEditPaste_Click()


37 UpdateUndo
38 With Me.rtbHTML
39 .SelText = Clipboard.GetText
40 UpdateUndo
41 End With
42 End Sub

43 Private Sub mnuEditRedo_Click()


44 DoReDo
45 End Sub

46 Private Sub mnuEditUndo_Click()

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 45


47 DoUnDo
48 End Sub

49 Private Sub mnuFileExit_Click()


50 Unload Me
51 End Sub

52 Private Sub mnuFileNew_Click()


53 With Me.rtbHTML
54 .Text = StrukturAwal
55 .SelStart = InStr(UCase(.Text), _
56 "</BODY>") - 2
57 End With
58 SudahSimpan = True: BukaAlamat$ = ""
59 Me.Caption = "HTML Maker"
60 End Sub

61 Private Sub mnuFileOpen_Click()


62 On Error Resume Next
63 Dim i As Integer, sTag$
64 With Me.cdlHTML
65 .DialogTitle = "Cari HTML"
66 .Filter = "Web File|" & _
"*.htm;*.html;*.css;*.idb;*.xml|" & _
"Text File|" & _
"*.txt;*.log;*.inf;*.ini|" & _
"Semua File (*.*)|*.*"
67 .FileName = ""
68 .ShowOpen
69 BukaAlamat$ = .FileName
70 If BukaAlamat$ <> "" Then
71 Me.rtbHTML.FileName = BukaAlamat$
72 sTag$ = "HTML Maker " & BukaAlamat$
73 Me.Caption = sTag$
74 SudahSimpan = True
75 End If
76 End With
77 End Sub

78 Private Sub mnuFileSave_Click()


79 On Error Resume Next
80 BukaAlamat$ = Mid(Me.Caption, 11)
81 If Len(Me.Caption) > 11 Then
82 rtbHTML.SaveFile LTrim(BukaAlamat$), 1
83 SudahSimpan = True
84 Else
85 mnuFileSaveAs_Click
86 End If
87 End Sub

88 Private Sub mnuFileSaveAs_Click()


89 On Error Resume Next
90 Dim i As Integer, sTag$
91 With Me.cdlHTML
92 .DialogTitle = "Save As..."
93 .Flags = &H1000 Or 2
94 .Filter = "Web Page|*.htm;*.html"
95 .CancelError = True
96 .FileName = ""
97 .ShowSave
98 If .FileName <> "" Then
99 Me.rtbHTML.SaveFile .FileName, 1
100 Caption = "HTML Maker " & .FileName
101 BukaAlamat$ = .FileName
102 SudahSimpan = True
103 End If
104 End With
105 End Sub

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 46


106 Private Sub cboFormat_Click()
107 On Error Resume Next
108 If Me.rtbHTML.SelLength <> 0 Then
109 fFormat Me, Me.cboFormat.Text
110 Else
111 fTAG Me, Me.cboFormat.Text
112 End If
113 Me.rtbHTML.SetFocus
114 End Sub

115 Private Sub cboInsert_Click()


116 On Error Resume Next
117 Dim Teks$
118 Select Case LCase(Me.cboInsert.Text)
119 Case "text"
120 Teks$ = "<input type=" & """" & _
"text" & """" & " maxlength=" & _
"""" & """" & ">"
121 Case "radio"
122 Teks$ = "<input type=" & """" & _
"radio" & """" & " value=" & _
"""" & """" & " checked name=" & _
"""" & "R" & """" & ">"
123 Case "select"
124 Teks$ = "<select size=" & """" & _
"1" & """" & " name=" & """" & _
"sct" & """" & ">" & vbCrLf & _
" <option value=" & """" & _
"value1 selected" & _
"""" & ">Pilihan1" & _
vbCrLf & " </option>" & _
vbCrLf & "</select>"
125 Case "submit"
126 Teks$ = "<input type=" & """" & _
"submit" & """" & " value=" & _
"""" & "Send" & """" & ">"
127 Case "reset"
128 Teks$ = "<input type=" & """" & _
"reset" & """" & ">"
129 Case "button"
130 Teks$ = "<input type=" & """" & _
"button" & """" & " value=" & _
"""" & "Tombol" & """" & _
" OnClick=" & """" & """" & ">"
131 Case "checkbox"
132 Teks$ = "<input type=" & _
"""" & "checkbox" & """" & _
" name=" & """" & "chk" & """" & _
" value=" & """" & "ON" & _
"""" & ">"
133 Case "textarea"
134 Teks$ = "<textarea " & "name=" & _
"""" & "txt" & """" & _
" rows=5 cols=20" & " wrap=" & _
"""" & "off" & """" & ">" & _
vbCrLf & "</textarea>"
135 End Select
136 With Me.rtbHTML
137 .SelText = Teks: .SetFocus
138 End With
139 End Sub

140 Private Sub Form_Load()


141 With Me.cboInsert
142 .AddItem "Text": .AddItem "Submit"
143 .AddItem "Reset": .AddItem "Button"
144 .AddItem "Radio": .AddItem "Select"

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 47


145 .AddItem "CheckBox": .AddItem "TextArea"
146 .ListIndex = 0
147 End With
148 With Me.cboFormat
149 .AddItem "B": .AddItem "I"
150 .AddItem "U": .AddItem "H1"
151 .AddItem "H2": .AddItem "H3"
152 .AddItem "H4": .AddItem "H5"
153 .AddItem "P": .AddItem "FONT"
154 .AddItem "MARQUEE": .AddItem "BR"
155 .AddItem "HR": .AddItem "OL"
156 .AddItem "UL": .AddItem "A"
157 .ListIndex = 0
158 End With
159 With Me.cboProperti
160 .AddItem "BGCOLOR": .AddItem "SIZE"
161 .AddItem "SRC": .AddItem "HREF"
162 .AddItem "NAME": .AddItem "TYPE"
163 .AddItem "BACKGROUND": .AddItem "ALIGN"
164 .AddItem "VALUE": .AddItem "WIDTH"
165 .AddItem "HEIGHT": .ListIndex = 0
166 End With

167 mnuFileNew_Click
168 hscRGB_Change 0
170 hscRGB_Change 1
171 hscRGB_Change 2
172 End Sub

173 Private Sub Form_Resize()


174 On Error Resume Next
Me.rtbHTML.Move 0, picTop.Height, _
ScaleWidth, ScaleHeight - picTop.Height
175 End Sub

176 Private Sub mnuViewWeb_Click()


177 Dim Pesan
178 BukaAlamat$ = Mid(Me.Caption, 11)
179 If Len(Me.Caption) > 11 Then
180 rtbHTML.SaveFile LTrim(BukaAlamat$), 1
181 MyShell LTrim(BukaAlamat)
182 Else
183 rtbHTML.SaveFile LTrim(BukaAlamat$), 1
184 Pesan = MsgBox("Anda harus menyimpan" & _
" Web lebih dulu. Klik Yes untuk" & _
" menyimpan", vbQuestion + vbYesNo)
185 If Pesan = vbYes Then
186 mnuFileSaveAs_Click
187 MyShell LTrim(BukaAlamat)
188 Else: Exit Sub
189 End If
190 End If
191 End Sub

192 Private Sub picWarna_DblClick()


193 rtbHTML.SelText = """" & KonstWarna & """"
194 End Sub

195 Private Sub rtbHTML_KeyDown( _


KeyCode As Integer, Shift As Integer)
196 If KeyCode = Asc(vbTab) Then
197 KeyCode = 0
198 rtbHTML.SelText = vbTab
199 End If
120 UpdateUndo
121 If Shift = 2 Then
122 If KeyCode = vbKeyZ Then
123 DoUnDo

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 48


124 Me.rtbHTML.Refresh
125 End If
126 If KeyCode = vbKeyY Then
127 DoReDo
128 Me.rtbHTML.Refresh
129 End If
130 End If
131 UpdateUndo
132 End Sub

133 Private Sub rtbHTML_KeyPress( _


KeyAscii As Integer)
134 SudahSimpan = False
135 End Sub

136 Private Sub rtbHTML_MouseDown( _


Button As Integer, Shift As Integer, _
x As Single, y As Single)
137 If Button = 2 Then
138 Me.PopupMenu Me.mnuEdit, 2 Or 4
139 End If
140 End Sub

141 Private Sub tlbHTML_ButtonClick(ByVal Button _


As MSComctlLib.Button)
142 Select Case Button.Index
143 Case 1: mnuFileNew_Click
144 Case 2: mnuFileOpen_Click
145 Case 3: mnuFileSave_Click
146 Case 5: mnuEditCut_Click
147 Case 6: mnuEditCopy_Click
148 Case 7: mnuEditPaste_Click
149 Case 9: mnuEditUndo_Click
150 Case 10: mnuEditRedo_Click
151 Case 12: mnuViewWeb_Click
152 End Select
153 End Sub

154 Private Sub hscRGB_Change(Index As Integer)


155 Me.picWarna.BackColor = _
RGB(Me.hscRGB(0).Value, hscRGB(1).Value, _
Me.hscRGB(2).Value)
156 KonstWarna = "#" & _
CStr(Hex(Me.hscRGB(0).Value) & _
Hex(Me.hscRGB(1).Value) & _
Hex(Me.hscRGB(2).Value))
157 End Sub

158 Private Sub hscRGB_Scroll(Index As Integer)


159 hscRGB_Change Index
160 End Sub

c. Tes Program
Begitu memulai program, pada richtextbox sudah tercetak pola dari struktur file HTML, dan kombo-kombo sudah terisi
list. Untuk mencoba penggunaan program, coba ikuti langkah berikut ini:

1. Ketikkan teks: “STMIK CIC Cirebon” diantara tag <BODY> dan </BODY>.

2. Blok teks tersebut, klik kombo pertama, pilih list: “B”.

3. Pindahkan kursor ke dalam tag <BODY> (di depan huruf Y), klik kombo ke dua, pilih list: “BGCOLOR”.

4. Geser-geserkan ketiga buah scrollbar, sampai Anda menemukan warna yang menarik (tercetak pada picturebox di
sebelahnya). Jika sudah, klik ganda picturebox tersebut.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 49


5. Untuk melihat hasilnya, klik menu ViewWeb Page, atau klik tombol terakhir pada toolbar. Jika muncul pesan,
klik Yes dan simpan file HTML Anda.

6. Cobalah untuk membuat kreasi file HTML lainnya dengan menggunakan semua faslitas dari program ini.

Program ini juga mendukung kemampuan Undo dan Redo, untuk membatalkan atau melanjutkan perintah-perintah
pengeditan.

List-list dari kombo-kombo yang ada, baru sedikit sekali. Silakan Anda menambahkan list-list dari kombo-kombo
tersebut pada jendela kode.

Gambar 16.21. Program sedang berjalan.

Di bawah ini contoh halaman web yang dibuat oleh aplikasi HTML Maker.

Gambar 16.22. Sebuah halaman Web.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 50


16.10.Music Player

Ini adalah contoh program untuk memainkan file-file audio seperti (mp3, wav, dan mid), yang menyerupai program
pemutar file audio yang popouler, Winamp.

Seperti biasa, buatlah sebuah folder baru, di alamat: “C:\Menggali VB\Bab 16”, namai dengan: “Multimedia”.

a. Desain Form
Jalankan program pada template Standard Exe. Anda perlu menambahkan komponen-komponen lain. Klik menu Projet
Component... Tandai listchekbox-listchekbox berikut ini:

 Microsoft Common Dialog Control 6.0

 Microsoft Tabbed Dialog Control 6.0

 Microsoft Windows Common Controls 6.0 (SP6)

 Windows Media Player

Gambarkan objek kontrol SSTab ke dalam form. Klik kanan SSTab, pilih Properties. Ubah propertinya sebagai berikut:

Pengaturan Properti
Pengaturan pada: Form1
No Objek Kontrol Properti Perubahan
Name SSTab1
1 SSTab1 Orientation 1-ssTabOrientationBottom
Style 1-ssStylePropertiPage

Klik Tab 0 pada SSTab1, ubah Properti Caption dengan &Main. Klik Tab 1, ubah Properti Caption dengan Play&List.
Klik Tab 2, ubah Properti Caption dengan. &About.

Gambar 16.23. Menambahkan SSTab pada form.

Klik tab pertama (Main), tambahkan objek kontrol-objek kontrol sebagai berikut dan ubah propertinya sebagai berikut:

Pengaturan Properti
Pengaturan pada: Form1
No Objek Kontrol Properti Perubahan
Name mplMusic
Visible False
1 WMPlayer1
Volume -2500
Style 1-ssStylePropertiPage
Name dlgMusic
2 CommonDialog1
MaxFileSize 1024
Name sldMain
Max 100
3 Slider1
SmallChange 5
LargeChange 10
Name lblPos
AutoSize True
4 Label1
BackColor Hitam
Font Courier New, 48, Bold

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 51


Name tmrSlider
5 Timer Enabled True
Interval 900
Name sldVol
Max 100
SmallChange 5
6 Slider2
LargeChange 10
Orientation 1-ccOrientationVertical
TickStyle 3-sldNoTicks
Name cmdPrev
7 Command1
Caption |< P&rev
Name cmdPlay
8 Command2
Caption > &Play
Name cmdStop
9 Command3
Caption [] &Stop
Name cmdNext
10 Command4
Caption >| &Next

Gambar 16.24. Desain pada tab pertama.

Klik tab ke dua (PlayList), tambahkan objek kontrol-objek kontrol sebagai berikut dan ubah propertinya sebagai berikut:

Pengaturan Properti
Pengaturan pada: Form1
No Objek Kontrol Properti Perubahan
Name lvwLagu
BackColor Hitam
FullRowSelect True
GridLines True
11 ListView1
HotTracking True
HideColumnHeader True
HideSelection False
View 3-lvwReport
Name cmdBuka
12 Command1
Caption &Buka
Name cmdSimpan
13 Command2
Caption &Simpan

Gambar 16.25. Desain pada tab ke dua.

Klik tab ke tiga (About), tambahkan objek kontrol-objek kontrol sesuka Anda.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 52


b. Baris Kode

Baris Kode
Baris kode pada: Form1
1 Option Explicit

2 Private FileNames() As String


3 Dim myList As ListItem
4 Dim Detik%, Menit%, strMenit$, strDetik$
5 Dim FNum%, i%, JumList%, Waktu$
6 Dim AlamatDefault$, SaveFile$, sFile$
7 Dim PlayPause As Byte. LoadTips As String

8 Private Sub cmdBuka_Click()


9 CariFile
10 End Sub

11 Private Sub cmdNext_Click()


12 Dim ListAktif As Integer
13 With Me.lvwLagu
14 PlayPause = 0
15 ListAktif = .SelectedItem.Index
'Pindah ke list berikutnya
16 If ListAktif <= .ListItems.Count - 1 Then
17 ListAktif = ListAktif + 1
18 Else
'Pindah ke list awal
19 ListAktif = 1
20 End If
21 .ListItems(ListAktif).Selected = True
22 cmdPlay_Click
23 End With
24 End Sub

25 Sub cmdPlay_Click()
26 On Error Resume Next
27 Dim Batas As%, sTag$, PlayFile$
'Jika sebuah list pada listview terpilih
28 If Not (Me.lvwLagu.SelectedItem _
Is Nothing) Then
29 Me.cmdPlay.Caption = "|| &Pause"
30 sTag = Me.lvwLagu.SelectedItem.Tag
'Nama file yang akan dimainkan
31 PlayFile = sTag & _
Me.lvwLagu.SelectedItem.SubItems(1)
32 If PlayPause = 0 Then
33 PlayPause = 1
34 Me.mplMusic.FileName = PlayFile
35 ElseIf PlayPause = 1 Then
36 Me.mplMusic.Pause
37 Me.cmdPlay.Caption = "> &Play"
38 Me.tmrSilder.Enabled = False
39 PlayPause = 2
40 ElseIf PlayPause = 2 Then
41 PlayPause = 1
42 Me.cmdPlay.Caption = "|| &Pause"
43 Me.tmrSilder.Enabled = True
44 Me.mplMusic.Play
45 Menit = 0
46 Detik = 0
47 End If
48 tmrSilder.Enabled = True
'MEngatur nilai slider
49 If Me.mplMusic.CurrentPosition > 0 Then
50 Me.sldMain.Value = ( _
Me.mplMusic.CurrentPosition / _
Me.mplMusic.Duration) * 100

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 53


51 End If
52 TandaiLagu
53 End If
54 End Sub

55 Private Sub cmdPrev_Click()


56 Dim ListAktif As Integer
57 With Me.lvwLagu
58 PlayPause = 0
59 ListAktif = .SelectedItem.Index
'pindah ke list sebelumny
60 If ListAktif > 1 Then
61 ListAktif = ListAktif - 1
62 Else
'pindah ke list terakhir
63 ListAktif = .ListItems.Count
64 End If
65 .ListItems(ListAktif).Selected = True
66 cmdPlay_Click
67 End With
68 End Sub

69 Private Sub cmdSimpan_Click()


70 On Error Resume Next
71 With Me.dlgMusik
72 .DialogTitle = "Simpan PlayList"
73 .Filter = "INOCHI PlayList " & _
"(*.pla)|*.pla" & _
"|Winamp PlayList (*.m3u)|*.m3u;"
74 .FilterIndex = 2
75 .Flags = cdlOFNOverwritePrompt
76 .FileName = ""
77 .CancelError = True
78 .ShowSave
79 If .FileName <> "" Then
80 SaveFile = .FileName
81 SimpanPlayList
82 End If
83 End With
84 End Sub

85 Sub SimpanPlayList()
86 FNum = FreeFile
87 Open SaveFile For Output As #FNum
88 Print #FNum, "#EXTM3UPlayList"
89 Print #FNum, "#Programmed By: Agung Novian"
90 Print #FNum, _
"#CopyRight © 2006 INOCHISoftware"
91 Print #FNum, "#----=======> o <=======---"
'Menulisi pada file PlayList
'sesuai daftar pada ListView
92 For i = 1 To Me.lvwLagu.ListItems.Count
93 Print #FNum, Me.lvwLagu.ListItems(i).Tag & _
94 Me.lvwLagu.ListItems(i).SubItems(1)
95 Next
96 Print #FNum, "#---=======> o <=======----"
97 Print #FNum, "#Makasih Udah pake program ini"
98 Close #FNum
99 End Sub

100 Private Sub cmdStop_Click()


101 If Not (Me.lvwLagu.SelectedItem _
Is Nothing) Then
102 Me.mplMusic.Stop
103 tmrSilder.Enabled = False
104 Me.sldMain.Value = 0
105 PlayPause = 0
106 Me.cmdPlay.Caption = "> &Play"

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 54


107 End If
108 End Sub

109 Private Sub Form_Load()


110 On Error Resume Next
111 Dim sAwal As String, sAkhir As String
112 PlayPause = 0
'Membuat tabel PlayList
113 BuatTabel
'Menyamakan volume player
'dengan slider: sldVol
114 Me.mplMusic.Volume = -Me.sldVol.Value * 2
115 JumList = 0
'Cara menjalankan file secara langsung
'(mengklik ganda file dengan ekstensi .pla)"
116 If Command <> "" Then
117 For i = Len(Command) To 1 Step -1
118 sAkhir = Mid(Command, i, 1)
119 If sAkhir = "\" Then
120 sAkhir = Mid(Command, i + 1)
121 sAwal = Mid(Command, 2, i - 2)
122 Exit For
123 End If
124 Next
'
125 If UCase(Right(Command, 5)) = _
"*.PLA" & """" Or _
UCase(Right(Command, 5)) = _
"*.m3u" & """" Then
126 AlamatDefault = sAwal
127 DaftarLagu Mid(Command, 2, Len(Command) - 2)
128 Else
129 sAwal = Mid(Command, 2, i - 1)
130 sAkhir = Mid(Command, i + 1, Len(Command) _
- Len(sAwal) - 2)
131 Set myList = Me.lvwLagu.ListItems.Add( _
, , Format(JumList + 1, "000"))
132 Me.lvwLagu.ListItems(JumList + _
133 1).Tag = sAwal & "\"
134 myList.SubItems(1) = sAkhir
135 End If
136 cmdPlay_Click
137 Else
'Membuka daftar lagu pada file Music.fla
138 DaftarLagu App.Path & "\Music.pla"
'Menjalankan file Jika Daftar Lagu
'tidak kosong
139 If Me.lvwLagu.ListItems.Count <> 0 Then
'Menentukan baris ke..? yang akan dimainkan
140 nList = CInt(VBA.GetSetting("MPlayer", _
"PlayList", "Index", 5))
141 Me.lvwLagu.ListItems(nList).Selected = True
142 Me.lvwLagu.SetFocus
143 Me.cmdPlay_Click
144 End If
145 End If
146 JumList = Me.lvwLagu.ListItems.Count
147 End Sub

148 Sub BuatTabel()


'Membuat Kolom pada ListView
149 With Me.lvwLagu.ColumnHeaders
150 .Clear
151 .Add , , , 500
152 .Add , , , Me.lvwLagu.Width - 1100
153 .Add , , , 300
154 End With
155 End Sub

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 55


156 Sub CariFile()
On Error Resume Next
157 Dim sAkhir As String, sAwal As String
'Mengatur Filter (ekstensi file yang
'bisa dipilih)
158 dlgMusik.Filter = "File Musik " & _
"(*.mp3;*.mid;*.wav)" & _
"|*.mp3;*.mid;*.wav|" & _
"INOCHI PlayList (*.pla)|*.pla|" & _
"Winamp PlatList (*.m3u)|*.m3u"
159 dlgMusik.FilterIndex = 1
'Menentukan flag (cdlOFNAllowMultiselect
'digunakan agar user diperbolehkan
'memilih lebih dari 1 file)
160 dlgMusik.Flags = cdlOFNExplorer Or _
cdlOFNAllowMultiselect
161 dlgMusik.DialogTitle = _
"Pilih satu atau beberapa lagu"
162 dlgMusik.FileName = ""
163 dlgMusik.CancelError = True
164 dlgMusik.ShowOpen
'Memecah file-file terpilih
165 FileNames() = Split(dlgMusik.FileName, _
vbNullChar)
'Mengidentifikasi jenis ektensi file
166 If UCase(Right(dlgMusik.FileName, 4)) = _
".PLA" Or UCase(Right( _
dlgMusik.FileName, 4)) = ".M3U" Then
167 For i = Len(FileNames(0)) To 1 Step -1
168 sAkhir = Mid(FileNames(0), i, 1)
169 If sAkhir = "\" Then
170 sAkhir = Mid(FileNames(0), i + 1)
171 sAwal = Mid(FileNames(0), 1, i - 1)
172 Exit For
173 End If
174 Next
175 AlamatDefault = sAwal
176 DaftarLagu FileNames(0)
177 Else
'Mengisi file terpilih ke dalam listview
178 JumList = Me.lvwLagu.ListItems.Count
179 If UBound(FileNames) > 0 Then
180 For i = 1 To UBound(FileNames)
181 Set myList = Me.lvwLagu.ListItems.Add( _
, , Format(JumList + i, "000"))
182 Me.lvwLagu.ListItems(JumList + i).Tag = _
FileNames(0) & "\"
183 myList.SubItems(1) = FileNames(i)
184 Next
185 ElseIf UBound(FileNames) = 0 Then
186 For i = Len(FileNames(0)) To 1 Step -1
187 sAkhir = Mid(FileNames(0), i, 1)
188 If sAkhir = "\" Then
189 sAkhir = Mid(FileNames(0), i + 1)
190 sAwal = Mid(FileNames(0), 1, i - 1)
191 Exit For
192 End If
193 Next

194 Set myList = _


195 Me.lvwLagu.ListItems.Add( _
, , Format(JumList + 1, "000"))
197 Me.lvwLagu.ListItems(JumList + _
1).Tag = sAwal & "\"
198 myList.SubItems(1) = sAkhir
199 End If
200 Me.SimpanDefaultPlayList

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 56


201 End If
202 End Sub

203 Private Sub Form_Unload(Cancel As Integer)


'Menyimpan PlayList saat form ditutup
204 If Me.lvwLagu.ListItems.Count >= 1 Then
205 SimpanDefaultPlayList
206 End If
207 End Sub

208 Private Sub lvwLagu_DblClick()


209 PlayPause = 0
210 cmdPlay_Click
211 End Sub

212 Private Sub lvwLagu_MouseDown( _


Button As Integer, Shift As Integer, _
x As Single, y As Single)
'Menghapus daftar pada listview
'saat mengklik kanan
213 If Button = 2 Then
214 Me.lvwLagu.ListItems.Remove _
215 Me.lvwLagu.SelectedItem.Index
216 End If
217 End Sub

218 Private Sub sldMain_Click()


'Mengubah posisi file yang dimainkan
'saat mengklik slider
219 Me.tmrSilder.Enabled = False
220 Me.mplMusic.CurrentPosition = ( _
Me.mplMusic.Duration / 100) * _
Me.sldMain.Value
221 Me.tmrSilder.Enabled = True
222 End Sub
'
223 Private Sub sldVol_Click()
'Mengubah volume dari Media Player
224 Me.mplMusic.Volume = -Me.sldVol.Value * 2
225 End Sub

226 Private Sub tmrSilder_Timer()


227 On Error Resume Next
'Menampilkan tampilan detik
'file yang sedang dimainkan
228 Detik = Round(Me.mplMusic.CurrentPosition, 0)
229 If Detik >= 59 Then
230 Detik = Detik Mod 60
231 End If
232 Menit = Round( _
Me.mplMusic.CurrentPosition, 0) \ 60
233 strMenit = Format(Menit, "00")
234 strDetik = Format(Detik, "00")
235 Waktu = strMenit & ":" & strDetik
236 Me.lblPos.Caption = Waktu
'Mengatur nilai slider
237 If Me.mplMusic.CurrentPosition > 0 Then
238 Me.sldMain.Value = ( _
Me.mplMusic.CurrentPosition / _
Me.mplMusic.Duration) * 100
239 End If
'Pindah ke file berikutnya saat posis
'file yang dimainkan sudah mencapai
'akhir durasi
240 If Me.mplMusic.CurrentPosition >= _
Me.mplMusic.Duration Then
241 cmdNext_Click
242 End If

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 57


243 End Sub

244 Function DaftarLagu(nFile As String) As Boolean


245 Dim NextTip As String
246 Dim InFile As Integer, Batas As Integer
247 Dim i As Integer, sAwal$, sAkhir$
248 InFile = FreeFile
249 If nFile = "" Then
250 LoadTips = False
251 Exit Function
252 End If
253 If Dir(nFile) = "" Then
254 LoadTips = False
255 Exit Function
256 End If
257 JumList = Me.lvwLagu.ListItems.Count
'Mengisi daftar dari file PlayList
'ke dalam ListView
258 Open nFile For Input As InFile
259 While Not EOF(InFile)
260 Line Input #InFile, NextTip
261 If Left(NextTip, 1) <> "#" Then
262 i = i + 1
263 For Batas = Len(NextTip) To 1 Step -1
264 sAkhir = Mid(NextTip, Batas, 1)
265 If sAkhir = "\" Then
266 sAkhir = Mid(NextTip, Batas + 1)
267 sAwal = Mid(NextTip, 1, Batas - 1)
268 Exit For
269 End If
270 Next
'Mengisi daftar dari file PlayList
'ke dalam ListView
271 Set myList = Me.lvwLagu.ListItems.Add( _
, , Format(JumList + i, "000"))
272 If Mid(sAwal, 2, 2) <> ":\" Then
273 sAwal = AlamatDefault & "\" & sAwal
274 End If
275 Me.lvwLagu.ListItems(JumList + _
i).Tag = sAwal & "\"
276 myList.SubItems(1) = sAkhir
277 End If
278 Wend
279 Close InFile
280 DaftarLagu = True
281 If JumList > 0 Then
282 Me.lvwLagu.ListItems(1).Selected = True
283 End If
284 End Function

285 Sub SimpanDefaultPlayList()


286 On Error Resume Next
287 Dim i As Integer
288 sFile$ = App.Path & "\Music.pla"
289 Open sFile For Output As #2
290 Print #2, "#EXTM3u"
291 Print #2, "#PlayList"
292 Print #2, "#Programmed By: Agung Novian"
293 Print #2, "#CopyRight © 2006 INOCHISoftware"
294 Print #2, "#----=======> o <=======----"
'Menulisi file PlayList sesuai banyaknya
'daftar pada PlayList
295 If Me.lvwLagu.ListItems.Count > 0 Then
296 For i = 1 To Me.lvwLagu.ListItems.Count
297 Print #2, Me.lvwLagu.ListItems(i).Tag & _
298 Me.lvwLagu.ListItems(i).SubItems(1)
299 Next
300 End If

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 58


301 Print #2, "#----=======> o <=======----"
302 Print #2, "#Makasih Udah pake program ini"
303 Close #2
'menyimpan list terakhir dipilih
304 VBA.SaveSetting "MPlayer", _
"PlayList", "Index", _
CStr(Me.lvwLagu.SelectedItem.Index)
305 End Sub
'
306 Sub TandaiLagu()
'memberi tanda "Ø" pada
'list file yang dimainkan
'jika Anda kesusahan mencari simbol "Ø"
'Anda dapat menggantinya dengan simbol
'lain atau huruf misal: #, A, 2, dsb
307 With Me.lvwLagu
308 For i = 1 To .ListItems.Count
309 .ListItems(i).SubItems(2) = _
Replace(.ListItems(i).SubItems(2), _
"Ø", vbNullChar)
310 Next
311 .SelectedItem.SubItems(2) = "Ø"
312 End With
313 End Sub

314 Private Sub sldMain_Scroll()


315 sldMain_Click
316 End Sub

317 Private Sub sldVol_Scroll()


318 sldVol_Click
319 End Sub

Gambar 16.26. Desain pada tab pertama.

c. Tes Program
Jalankan program, klik tab PlayList, klik tombol Buka. Cari alamat yang berisi file audio (mp3, wav, atau mid). Anda
bisa memasukkan lebih dari satu file untuk dimainkan. Andapun dapat menjalankan file PlayList kepunyaan winam
(.m3u), dengan cara: begitu dialog Buka File ditampilkan, ubah combo “File of Type:” ke Winamp PlayList (m3u),
kemudian pilih sebuah file Winamp PlayList.

Setelah judul-judul lagu tertera di daftar, klik ganda pada sebuah nama file. Anda juga bisa menjalankan file dengan
mengklik tombol Play pada tab Main.

Kelebihan dari program ini, Anda dapat menggulung ke depan atau ke belakang dengan mengklik pada slider. Anda juga
bisa mengatur volume pada slider. Bukan itu saja, program inipun mempunyai file PlayList sendiri yaitu (.pla) yang
dapat langsung Anda jalankan dengan mengklik ganda file dengan esktensi pla ini (sebelumnya, pelajari dulu Bab 15,
poin Membuat Ekstensi Khusus.

Jika Anda sudah pernah memasukkan daftar lagu ke dalam program ini, dan begitu Anda menjalankan program ini
kembali, daftar lagu tersebut akan langsung ditampilkan ke dalam listview dan program akan langsung memainkan file-
file pada daftar.

Nyaris seperti program Winamp bukan?

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 59


Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 60
BAB XVIII
LATIHAN-LATIHAN

Meskipun ini adalah bab terakhir, tetapi justru bab ini merupakan bab khusus untuk Anda yang baru mengenal Visual
Basic dan memerlukan latihan-latihan dalam membuat program. Bab ini sekaligus memenuhi saran yang masuk dari
para pembaca, terima kasih atas saran Anda.

Sebelumnya buatlah sebuah folder khusus di drive C, namai dengan “Latihan”. Untuk menyimpan komponen project,
buat folder-folder baru di dalam folder “Latihan” tersebut, misal: “Lat1”, “Lat2”, dan seterusnya.

18.1. Latihan 1
Pada latihan pertama ini, saya mengajak Anda membuat program penggunaan operator Visual Basic untuk operasi
aritmatika, seperti: penjumlahan, pengurangan, perkalian dan pembagian. Program ini menekankan penggunaan struktur
Select Case.

Jalankan Visual Basic pada template Standard Exe. Namai project Anda dengan nama pjkLat1. Namai Form1 dengan
frmLat1.

Ubah properti dari frmLat1 sebagai berikut:

Pengaturan Properti
Pengaturan pada: frmLat1
Properti Perubahan Kegunaan
Kalkulator
Caption Tampilan judul pada title bar form.
Sederhana
Mengubah bentuk title bar form
BorderStyle 1-FixedSingle (hanya dilengkapi dengan sebuah
tombol close).
Mengubah bentuk dan ukuran font
dari form, sehingga saat Anda
menambahkan objek kontrol pada
Font Courier New, 10 form, maka secara otomatis bentuk
dan ukuran font dari objek kontrol
tersebut mengikuti bentuk dan
ukuran font dari form.
Mengubah ikon form dan ikon
Icon Gambar ikon (ico) program saat dikompail menjadi file
eksekusi (exe).
Mengatur posisi form pada layar,
agar form otomatis berada di
StartUpPosition 2-CenterScreen
tengah-tengah layar saat program
dijalankan.

Masukkan objek kontrol-objek kontrol dan ubah propertinya, sebagai berikut:

Pengaturan Properti
Pengaturan pada: frmLat1
No Kontrol Properti Perubahan Kegunaan
Mengubah teks yang
Caption Bilangan &1
ditampilkan.
Agar ukuran Label
AutoSize 1-True mengikuti panjangnya
teks yang tercetak.
Agar warna dasar Label
1 Label1
BackStyle 0-Transparent transparan/ mengikuti
warna dasar form.
Mengatur pelarian
fokus saat Anda
TabIndex 0
menekan tombol Tab
pada keyboard.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 61


Caption &Operator Sda.
AutoSize 1-True Sda.
2 Label2
BackStyle 0-Transparent sda.
TabIndex 2 Sda.
Caption Bilangan &2 Sda.
AutoSize 1-True Sda.
3 Label3
BackStyle 0-Transparent Sda.
TabIndex 4 Sda.
Caption Hasil Sda.
AutoSize 1-True Sda.
4 Label4
BackStyle 0-Transparent Sda.
TabIndex 7 Sda.
Memberi identitas pada
TextBox, penting sekali
Name txtBil1
untuk mengenalkan
5 Text1
TextBox pada program.
Text dikosongkan Mengkosongkan teks.
TabIndex 1 Sda.
Name txtBil2 Sda.
6 Text2 Text dikosongkan Sda.
TabIndex 5 Sda.
Name txtHasil Sda.
Text dikosongkan Sda.
7 Text3
TabIndex 8 Sda.

Memberi identitas pada


Name cboOpr
Combo, penting!
Mengubah bentuk
8 Combo1 2-DropDown
Style tampilan list
List
ComboBox.
TabIndex 3 Sda.
Memberi identitas pada
Name cmdProses
cmdProses, penting!
9 Command1 Mengubah teks yang
Caption &Proses
ditampilkan.
TabIndex 6 Sda.
Mengubah teks yang
Caption dikosongkan
ditampilkan.
Mengubah tinggi
10 Frame1 Frame. Nilai 30
Height 30 dimaksudkan agar
tampilan frame hanya
berbentuk garis.

Desain form seperti pada ilustrasi gambar berikut:

Gambar 18.1. Desain form.

Masuk ke jendela kode, dan ketikkan kode berikut:

Baris Kode
Baris kode pada: frmLat1
1 Option Explicit

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 62


'Event saat form akan ditampilkan
2 Private Sub Form_Load()
3 With Me.cboOpr
'Mengisi list pada cboOpr
'dengan text = "+"
4 .AddItem "+"
'Mengisi list pada cboOpr
'dengan text = "-" dst...
5 .AddItem "-"
6 .AddItem "*"
7 .AddItem "/"
8 .AddItem "\"
9 .AddItem "mod"
10 End With
11 End Sub

'Event saat mengklik tombol cmdProses


12 Private Sub cmdProses_Click()
'Deklarasi Variabel
13 Dim Bil1 As Long
14 Dim Bil2 As Long
15 Dim Opr As String
16 Dim Hasil As Long
'Mengisi var Bil1 dengan text
'pada txtBil1 dengan sebelumnya
'dikonversikan ke dalam tipe data Long
17 Bil1 = CLng(Me.txtBil1.Text)
'Mengisi var Bil2 dengan text
'pada txtBil1 dengan sebelumnya
'dikonversikan ke dalam tipe data Long
18 Bil2 = CLng(Me.txtBil2.Text)
'var Opr dengan text dari cboOpr
19 Opr = Me.cboOpr.Text
'Menyeleksi nilai dari Opr
20 Select Case Opr
'Jika Opr adalah "+" maka
21 Case "+"
'isi nilai Hasil dengan operasi
'penjumlahan Bil1 dan Bil2
22 Hasil = Bil1 + Bil2
'Jika Opr adalah "-" maka
23 Case "-"
'isi nilai Hasil dengan operasi
'pengurangan Bil1 dan Bil2
24 Hasil = Bil1 - Bil2
'Jika Opr adalah "*" maka
25 Case "*"
'isi nilai Hasil dengan operasi
'perkalian Bil1 dan Bil2
26 Hasil = Bil1 * Bil2
'Jika Opr adalah "/"
27 Case "/"
'isi nilai Hasil dengan operasi
'pembagian Bil1 dan Bil2
28 Hasil = Bil1 / Bil2
'Jika Opr adalah "\"
'"\" adalah simbol pembagian
'bilangan bulat (DIVide)
'yang mengabaikan nilai desimal
'dari nilai yang dihasilkan
29 Case "\"
'isi nilai Hasil dengan operasi
'pembagian bulat Bil1 dan Bil2
30 Hasil = Bil1 \ Bil2
'Jika Opr adalah "mod"
'"mod" adalah simbol pembagian
'Modulus (sisa pembagian)
31 Case "mod"

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 63


'isi nilai Hasil dengan operasi
'modulus Bil1 dan Bil2
32 Hasil = Bil1 Mod Bil2
33 End Select
'Menampilkan nilai Hasil pada txtHasil
34 Me.txtHasil.Text = Hasil
35 End Sub

Jalankan program! Masukkan angka kedalam textbox Bilangan 1, kemudian klik combobox Operator, pilih sebuah
operator. Masukkan angka pada textbox Bilangan 2. klik tombol Proses. Pada textbox Hasil akan tercetak hasil dari
operasi yang Anda tentukan.

Catatan:
Untuk latihan-latihan selanjutnya, biasakan untuk mengubah properti-properti
dari form seperti cara pengaturan di atas.

18.2. Latihan 2
Latihan ke-dua ini adalah program untuk menentukan tarif untuk penumpang kereta api berdasarkan kota jurusan, kelas
tempat duduk dan katagori usia penumpang. Program ini menekankan penggunaan struktur If ... Then ... Else dan Select
Case.

Jalankan Visual Basic pada template Standard Exe. Namai project Anda dengan nama pjkLat2. Namai Form1 dengan
frmLat2.

Masukkan objek kontrol-objek kontrol dan atur propertinya seperti pada tabel di bawah ini:

Pengaturan Properti
Pengaturan pada: frmLat2
No Objek Kontrol Properti Perubahan
1 Label1 Caption &Jurusan
2 Combo1 Name cboJurusan
3 Label2 Caption &Kelas
4 Combo2 Name cboKelas
5 Label3 Caption usia
Name optUsia
6 Option1 Caption &Dewasa
Index 0
Name optUsia
7 Option2 Caption &Anak-anak
Index 1
Name cmdProses
8 Command1
Caption &Proses
Caption Dikosongkan
9 Frame1
Height 30
10 Label4 Caption TARIF
Name txtTarif
11 Text1 Alignment 1-Right Justify
Text 0
12 Frame2 Caption Keterangan
Left, Top, Height, Atur sehingga membentuk
13 Shape1-Shape8
Width tabel seperti gambar
Left, Top, Width,
14 Label5-30 Seperti pada gambar
Caption

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 64


Gambar 18.2. Desain form.

Catatan:
Jika Anda merasa kesusahan menggunakan Shape untuk membentuk tabel
seperti pada gambar, silakan tidak perlu Anda lakukan, karena tabel tersebut
hanya sekedar informasi yang tidak berpengaruh terhadap baris kode.

Ketikkan kode sumber berikut:

Baris Kode
Baris kode pada: frmLat2
1 Option Explicit

'Deklarasi variabel untuk sebuah modul


2 Dim Jurusan As String
3 Dim Kelas As String
4 Dim Dewasa As Boolean

'Event saat tombol Proses diklik


5 Private Sub cmdProses_Click()
'Deklarasi variabel
6 Dim Tarif As Long
'Jika nilai var Dewasa adalah True maka
7 If Dewasa = True Then
'Mengisi nilai Tarif dengan nilai
'dari var BesarTarif
8 Tarif = BesarTarif
'Jika tidak (Jika nilai var Dewasa
'adalah False) maka
9 Else
'Mengisi nilai Tarif dengan nilai
'dari var BesarTarif dikalikan 50%
10 Tarif = BesarTarif * (50 / 100)
11 End If
'Menampilkan nilai Tarif pada txtTarif
'dengan sebelumnya diformat String
12 Me.txtTarif.Text = _
Strings.FormatNumber(Tarif, 0)
13 End Sub

'Event saat form akan ditampilkan


14 Private Sub Form_Load()
15 With Me.cboJurusan
'Mengisi list cboJurusan dengan
'teks "Jakarta"
16 .AddItem "Jakarta"
'Mengisi list cboJurusan dengan
'teks "Bandung" dst...
17 .AddItem "Bandung"
18 .AddItem "Semarang"
18 .AddItem "Surabaya"

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 65


20 .AddItem "Yogyakarta"
21 End With
'
22 With Me.cboKelas
'Mengisi list cboKelas dengan
'teks "Eksekutif"
23 .AddItem "Eksekutif"
'Mengisi list cboKelas dengan
'teks "Bisnis" dst...
24 .AddItem "Bisnis"
25 .AddItem "Ekonomi"
26 End With
'Menandai optUsia Index 0
'(opsi Dewasa)
27 Me.optUsia(0).Value = True
28 End Sub

'Fungsi untuk menentukan BesarTarif


29 Private Function BesarTarif() As Long
'Mengisi Jurusan dengan teks
'pada cboJurusan
30 Jurusan = Me.cboJurusan.Text
'Mengisi Kelas dengan teks
'pada cboKelas
31 Kelas = Me.cboKelas.Text
'Jika kelas adalah Eksekutif
32 If Kelas = "Eksekutif" Then
'Memilih Jurusan
33 Select Case Jurusan
'Jika jurusan adalah "Jakarta"
34 Case "Jakarta"
'Nilai BesarTarif adalah 100000
35 BesarTarif = 100000
36 Case "Bandung"
37 BesarTarif = 80000
38 Case "Semarang"
39 BesarTarif = 120000
40 Case "Surabaya"
41 BesarTarif = 135000
42 Case "Yogyakarta"
43 BesarTarif = 150000
44 Else
45 BesarTarif = 0
46 End Select
47 ElseIf Kelas = "Bisnis" Then
48 Select Case Jurusan
49 Case "Jakarta"
50 BesarTarif = 50000
51 Case "Bandung"
52 BesarTarif = 35000
53 Case "Semarang"
54 BesarTarif = 95000
55 Case "Surabaya"
56 BesarTarif = 110000
57 Case "Yogyakarta"
58 BesarTarif = 120000
59 Else
60 BesarTarif = 0
61 End Select
62 ElseIf Kelas = "Ekonomi" Then
63 Select Case Jurusan
64 Case "Jakarta"
65 BesarTarif = 30000
66 Case "Bandung"
67 BesarTarif = 25000
68 Case "Semarang"
69 BesarTarif = 75000
70 Case "Surabaya"

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 66


71 BesarTarif = 95000
72 Case "Yogyakarta"
73 BesarTarif = 100000
74 Else
75 BesarTarif = 0
76 End Select
77 End If
78 End Function

'Event saat memilih Option optUsia


79 Private Sub optUsia_Click(Index As Integer)
'Mengisi Nilai Dewasa (True atau False)
'Nilai True jika memilih opsi Dewasa
80 Dewasa = Me.optUsia(0).Value
81 End Sub

Jalankan program! Tentukan: jurusan, kelas dan kategori usia, kemudian klik tombol Proses. Lihat hasilnya, samakan
dengan daftar tarif pada tabel yang ditentukan.

Catatan:
Jurusan dan Kelas bersifat case sensitif, jika Anda mengetikkan:
“JAKARTA”, maka tarif yang berlaku adalah 0. Karena pada case sensitif,
“JAKARTA” berbeda dengan “Jakarta”. Untuk mengatasinya, silakan pelajari
mengenai fungsi manipulasi String, pada Bab 5.

18.3. Latihan 3
Latihan berikut ini adalah program untuk menentukan keliling lingkaran, luas lingkaran dan volume bola berdasarkan
nilai jari-jari yang ditentukan oleh pengguna. Program ini mencontohkan penggunaan variabel konstanta.

Jalankan Visual Basic pada template Standard Exe. Namai project Anda dengan nama pjkLat3. Namai Form1 dengan
frmLat3.

Masukkan objek kontrol-objek kontrol dan atur propertinya seperti pada tabel di bawah ini:

Pengaturan Properti
Pengaturan pada: frmLat3
No Objek Kontrol Properti Perubahan
1 Label1 Caption &Jari-jari
Name txtJari
2 Text1 Alignment 1-Right Justify
Text 0
3 Label2 Caption Keliling
Name txtKel
4 Text2 Alignment 1-Right Justify
Text 0
5 Label3 Caption Luas
Name txtLuas
6 Text3 Alignment 1-Right Justify
Text 0
7 Label4 Caption Volume Bola
Name txtVol
8 Text4 Alignment 1-Right Justify
Text 0
Caption Dikosongkan
9 Frame1
Height 30
Name cmdProses
10 Command1
Capion &Proses

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 67


Gambar 18.3. Desain form.

Baris Kode
Baris kode pada: frmLat2
1 Option Explicit

'Deklarasi Konstanta pi
2 Const pi = 22 / 7

'Event saat mengklik tombol cmdProses


3 Private Sub cmdProses_Click()
'Deklarasi variabel
4 Dim r As Long
5 Dim Keliling As Single
6 Dim Luas As Single
7 Dim Volume As Single
'Mengisi nilai r dengan teks pada txtJari
8 r = Me.txtJari.Text

'Jika value r tidak samadengan 0 maka


9 If Val(r) <> 0 Then
'Keliling adalah pi dikali 2 kali r
10 Keliling = pi * (2 * r)
'Luas adalah pi dikali r dikali r
11 Luas = pi * r * r
'Volume adalah 4/3 dikali pi
'dikali r dikali r
12 Volume = 4 / 3 * pi * r * r

'Output -=>
'Menampilkan nilai Keliling pada txtKel
13 Me.txtKel.Text = Keliling
14 Me.txtLuas.Text = Luas
15 Me.txtVol = Volume
16 End If
17 End Sub

18.4. Latihan 4
Latihan kali ini, kita akan mencoba membuat program untuk menentukan harga yang harus dibayar seorang penginap
pada sebuah hotel, tergantung jenis kamar, dan lama menginap. Ketentuan-ketentuan lain, bisa Anda lihat pada tabel di
bawah ini.

Kode Kamar Jenis Kamar


ML MELATI
MW MAWAR
AG ANGGREK
DL DAHLIA

Kode Kelas Jenis Kamar


E EKONOMI
B BISNIS
X EXECUTIVE
P PRESIDENT

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 68


Tabel Tarif
E B X V P
ML 45.000 65.000 85.000 105.000 125.000
MW 47.500 67.500 87.500 107.500 127.500
AG 50.000 70.000 90.000 110.000 130.000
DL 55.000 75.000 95.000 115.000 135.000

Tabel Tarif
E B X V P
ML 0% 5% 10% 15% 20%
MW 0% 5% 10% 15% 20%
AG 0% 5% 10% 15% 20%
DL 0% 5% 10% 15% 20%
Catatan: Diskon berlaku jika lama menginap 3 hari atau lebih.

Program ini menekankan penggunaan fungsi manipulasi string: Left, Mid, dan Right dan penyeleksian kondisi: If ...
Then ... Else dan Select Case

Jalankan Visual Basic pada template Standard Exe. Namai project Anda dengan nama pjkLat4. Namai Form1 dengan
frmLat4.

Masukkan objek kontrol-objek kontrol dan atur propertinya seperti pada tabel di bawah ini:

Pengaturan Properti
Pengaturan pada: frmLat4
No Objek Kontrol Properti Perubahan
1 Label1 Caption &KODE
Name txtKode
2 Text1
Text ML-07-P
3 Label2 Caption TANGGAL &MASUK
Name txtMasuk
4 Text2
Text 12-01-06
5 Label3 Caption TANGGAL K&ELUAR
Name txtKeluar
6 Text3
Text 15-01-06
Caption Dikosongkan
7 Frame1
Height 30
8 Label4 Caption KAMAR
Name txtKamar
9 Text4
Text Dikosongkan
10 Label5 Caption NOMOR
Name txtNomor
11 Text5
Text Dikosongkan
12 Label6 Caption LAMA MENGINAP
Name txtLama
13 Text6
Text 0
14 Label7 Caption TARIF
Name txtTarif
15 Text7
Text 0
16 Label8 Caption DISKON
Name txtDiskon
17 Text8
Text 0
18 Label9 Caption TOTAL BAYAR
Name txtTotal
19 Text9
Text 0
Name cmdProses
20 Command1
Caption &Proses

Bila perlu, masukkan beberapa objek kontrol: Frame, Shape dan Label untuk membuat tabel-tabel informasi. Sehingga
tampilan akhir seperti pada ilustrasi gambar di bawah ini:

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 69


Gambar 18.4. Desain form.

Ketikkan kode sumber berikut ini:

Baris Kode
Baris kode pada: frmLat4
1 Option Explicit

'Deklarasi variabel level untuk sebuah modul


2 Dim Kode As String
3 Dim Masuk As Date
4 Dim Keluar As Date
5 Dim Lama As Integer
6 Dim Kamar As String
7 Dim Kelas As String
8 Dim Nomor As String
9 Dim Tarif As Long
10 Dim Diskon As Long
11 Dim Total As Long
12 Private Sub cmdProses_Click()
'Mengisi var Kode dengan teks dari txtKode
13 Kode = Me.txtKode.Text
'Jika dua huruf awal dari Kode adalah ML
14 If Left(UCase(Kode), 2) = "ML" Then
'Isi nilai var Kamar dengan MELATI
15 Kamar = "MELATI"
'Jika satu huruf terakhir Kode adalah E
16 If Right(UCase(Kode), 1) = "E" Then
'Isi Tarif dengan 45000
17 Tarif = 45000
18 ElseIf Right(UCase(Kode), 1) = "B" Then
19 Tarif = 65000
20 ElseIf Right(UCase(Kode), 1) = "X" Then
21 Tarif = 85000
22 ElseIf Right(UCase(Kode), 1) = "V" Then
23 Tarif = 105000
24 ElseIf Right(UCase(Kode), 1) = "P" Then
25 Tarif = 125000
26 Else
27 Tarif = 0
28 End If
'Jika dua huruf awal dari Kode adalah MW
29 ElseIf Left(UCase(Kode), 2) = "MW" Then
'Isi nilai var Kamar dengan MAWAR
30 Kamar = "MAWAR"
'Jika satu huruf terakhir Kode adalah E
31 If Right(UCase(Kode), 1) = "E" Then

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 70


'Isi Tarif dengan 47500
32 Tarif = 47500
33 ElseIf Right(UCase(Kode), 1) = "B" Then
34 Tarif = 67500
35 ElseIf Right(UCase(Kode), 1) = "X" Then
36 Tarif = 87500
37 ElseIf Right(UCase(Kode), 1) = "V" Then
38 Tarif = 107500
39 ElseIf Right(UCase(Kode), 1) = "P" Then
40 Tarif = 127500
41 Else
42 Tarif = 0
43 End If
44 ElseIf Left(UCase(Kode), 2) = "AG" Then
45 Kamar = "ANGGREK"
46 If Right(UCase(Kode), 1) = "E" Then
47 Tarif = 50000
48 ElseIf Right(UCase(Kode), 1) = "B" Then
49 Tarif = 70000
50 ElseIf Right(UCase(Kode), 1) = "X" Then
51 Tarif = 90000
52 ElseIf Right(UCase(Kode), 1) = "V" Then
53 Tarif = 110000
54 ElseIf Right(UCase(Kode), 1) = "P" Then
55 Tarif = 130000
56 Else
57 Tarif = 0
58 End If
59 ElseIf Left(UCase(Kode), 2) = "DL" Then
60 Kamar = "DAHLIA"
61 If Right(UCase(Kode), 1) = "E" Then
62 Tarif = 55000
63 ElseIf Right(UCase(Kode), 1) = "B" Then
64 Tarif = 75000
65 ElseIf Right(UCase(Kode), 1) = "X" Then
66 Tarif = 95000
67 ElseIf Right(UCase(Kode), 1) = "V" Then
68 Tarif = 115000
69 ElseIf Right(UCase(Kode), 1) = "P" Then
70 Tarif = 135000
71 Else
72 Tarif = 0
73 End If
74 Else
75 Kamar = "MAYAT"
76 End If
'Isi nilai var Nomor dengan huruf ke-4
'Sebanyak 2 huruf dari Kode
77 Nomor = Mid(Kode, 4, 2)
'Isi nilai var Masuk dengan teks
'pada txtMasuk yang telah diformat
'ke tipe data Date
78 Masuk = CDate(Me.txtMasuk.Text)
79 Keluar = CDate(Me.txtKeluar.Text)
'Mengisi nilai var Lama dengan
'hasil pengurangan nilai var Keluar
'dengan var Masuk kemudian ditambah 1
80 Lama = DateDiff("d", Masuk, Keluar) + 1
'Mengisi nilai Tarif dengan perkalian
'Tarif dasar dengan Lama
81 Tarif = Tarif * Lama
'Jika lama adalah 3 atau lebih dari 3
82 If Lama >= 3 Then
'Jika 1 huruf terakhir dari Kode
'adalah B maka
83 If Right(UCase(Kode), 1) = "B" Then
'Diskon adalah Tarif dikali 5%
84 Diskon = Tarif * 5 / 100

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 71


'Jika 1 huruf terakhir dari Kode
'adalah X maka
85 ElseIf Right(UCase(Kode), 1) = "X" Then
'Diskon adalah Tarif dikali 10%
86 Diskon = Tarif * 10 / 100
87 ElseIf Right(UCase(Kode), 1) = "V" Then
88 Diskon = Tarif * 15 / 100
89 ElseIf Right(UCase(Kode), 1) = "P" Then
90 Diskon = Tarif * 20 / 100
91 Else
92 Diskon = 0
93 End If
'Jika tidak (jika Lama kurang dari 3)
94 Else
95 Diskon = 0
96 End If
'Total adalah Tarif dikurangi Diskon
97 Total = Tarif - Diskon
'Output/keluaran
98 Me.txtKamar.Text = Kamar
99 Me.txtNomor.Text = Nomor
100 Me.txtLama.Text = Lama & " hari"
101 Me.txtTarif.Text = FormatNumber(Tarif, 0)
102 Me.txtDiskon.Text = FormatNumber(Diskon, 0)
103 Me.txtTotal.Text = FormatNumber(Total, 0)
104 End Sub

Jalankan program! Klik tombol Proses! Silakan coba mengganti: Kode, Tanggal Masuk dan Tanggal Keluar, kemudian
klik kembali tombol Proses.

Contoh format pengisian Kode, Tanggal masuk dan Tanggal keluar:

Kode Tanggal Masuk Tanggal Keluar


MW-24-E 10-02-2006 11-02-2006
AG-09-B 11-02-2006 20-02-2006
DL-82-X 12-02-2006 12-02-2006

18.5. Latihan 5
Latihan berikut ini adalah membuat program “Billing”, utuk menghitung harga sewa dari seorang pengguna komputer,
dengan harga sewa perjam adalah 1000.

Jalankan Visual Basic pada template Standard Exe. Namai project Anda dengan nama pjkLat5. Namai Form1 dengan
frmLat5.

Pengaturan Properti
Pengaturan pada: frmLat5
No Objek Kontrol Properti Perubahan
1 Label1 Caption Jam Mulai
Name txtMulai
2 Text1
Text 00:00:00
3 Label2 Caption Jam Sekarang
Name txtSekarang
4 Text2
Text 00:00:00
5 Label3 Caption Lamanya
Name txtLama
6 Text3
Text 00:00:00
7 Label4 Caption Tarif
Name txtTarif
8 Text4
Text 0
Name cmdMulai
9 Command1
Caption &Mulai
Name cmdSelesai
10 Command2
Caption &Selesai

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 72


Name tmrMulai
11 Timer1
Interval 100
Name tmrSekarang
12 Timer2
Interval 100
Name tmrLama
13 Timer3 Enabled False
Interval 100

Gambar 18.5. Desain form.

Ketikkan kode sumber berikut ini:

Baris Kode
Baris kode pada: frmLat5
1 Option Explicit
'Deklarasi variabel level untuk sebuah modul
2 Dim WaktuMulai As Date
3 Dim WaktuSekarang As Date
4 Dim Lama As Date
5 Dim Mulai As Boolean
6 Dim Tarif As Long
7 Const HargaSewa = 1000

'Event saat mengklik tombol cmdMulai


8 Private Sub cmdMulai_Click()
'Mengaktifkan var Mulai
9 Mulai = True
10 WaktuMulai = Me.txtMulai.Text
11 Me.tmrMulai.Enabled = False
12 Me.tmrLama.Enabled = True
13 End Sub

'Event saat mengklik tombol cmdStop


14 Private Sub cmdStop_Click()
'Mengaktifkan tmrMulai
15 Me.tmrMulai.Enabled = True
'Menonaktifkan tmrLama
16 Me.tmrLama.Enabled = False
17 End Sub

'Event sebelum form ditutup


18 Private Sub Form_Unload(Cancel As Integer)
19 Dim PassWord As String
'Membatalkan penutupan form
20 Cancel = 1
'Menampilkan dialog InputBox
21 PassWord = InputBox("Masukkan Password", _
"Password", , (Screen.Width - 5000) / 2, _
(Screen.Height - 2000) / 2)
'Jika Passwor adalah inochi maka
'form ditutup
22 If PassWord = "inochi" Then Cancel = 0
23 End Sub
'
24 Private Sub tmrLama_Timer()
25 Dim DetikLaju As Long

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 73


'Lama adalah WaktuMulai
'dikurangi WaktuSekarang
26 Lama = WaktuMulai - WaktuSekarang
'Mengakumulasikan detik terpakai
DetikLaju = (Hour(Lama) * 3600) + _
27 (Minute(Lama) * 60) + Second(Lama)
'Menentukan Tarif perdetik
28 Tarif = (HargaSewa / 3600) * DetikLaju
'Menampilkan nilai Lama pada txtLama
29 Me.txtLama.Text = Lama
'Menampilkan besarnya Tarif
30 Me.txtTarif.Text = "Rp. " & Tarif
31 End Sub
'
32 Private Sub tmrMulai_Timer()
33 Me.txtMulai.Text = Time
34 End Sub
'
35 Private Sub tmrSekarang_Timer()
36 WaktuSekarang = Time
37 Me.txtSekarang.Text = Time
38 End Sub

Jalankan program! Klik tombol Mulai. Anda akan melihat textbox “Lama” akan mulai mencacah waktu, dan pada
textbox “Tarif” akan tercatat besarnya rupiah yang harus dibayar seorang penyewa. Coba untuk menutup form (dengan
mengklik tombol Close [x]), maka akan ditampilkan Input Box yang meminta Anda mengisikan password. Jika
password salah, Anda tidak akan keluar dari program.

18.6. Latihan 6
Latihan berikut ini adalah mendemonstrasikan penggunaan fungsi general yang berupa fungsi untuk menghitung nilai
rata-rata, maksimum dan minimum dari sekumpulan angka-angka yang dimasukkan.

Jalankan Visual Basic pada template Standard Exe. Namai project Anda dengan nama pjkLat6. Namai Form1 dengan
frmLat6.

Pengaturan Properti
Pengaturan pada: frmLat6
No Objek Kontrol Properti Perubahan
Name lblAngka
1 Label1
Caption Angka ke-1
Name txtAngka
2 Text1 Align 1-Right Justify
Text 0
Name cmdProses
3 Command1
Caption &Proses
Caption Dikosongkan
4 Frame1
Height 30

Gambar 18.6. Desain form.

Baris Kode
Baris kode pada: frmLat6
1 Option Explicit

'Deklarasi variabel level untuk sebuah modul

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 74


2 Dim Posisi As Integer
3 Dim Angka() As Double

'Deklarasi fungsi untuk menghitung Jumlah


4 Function Jumlah(Angka() As Double) As Double
5 Dim i As Long
6 For i = 1 To UBound(Angka)
7 Jumlah = Jumlah + Angka(i)
8 Next
9 End Function

10 Function Rata_Rata(Angka() As Double) As Double


11 Dim i As Long
12 For i = 1 To UBound(Angka)
13 Rata_Rata = Rata_Rata + Angka(i)
14 Next
15 Rata_Rata = Rata_Rata / (i - 1)
16 End Function

17 Function Maksimum(Angka() As Double) As Double


18 Dim i As Long
19 Maksimum = Angka(1)
20 For i = 1 To UBound(Angka)
21 If Angka(i) >= Maksimum Then
22 Maksimum = Angka(i)
23 End If
24 Next
25 End Function

26 Function Minimum(Angka() As Double) As Double


27 Dim i As Long
28 Minimum = Angka(1)
29 For i = 1 To UBound(Angka)
30 If Angka(i) <= Minimum Then
31 Minimum = Angka(i)
32 End If
33 Next
34 End Function

35 Private Sub cmdProses_Click()


36 CetakDiForm
37 Posisi = 1
38 Me.lblAngka.Caption = "Angka ke-1"
39 Me.cmdProses.Enabled = False
40 Me.txtAngka.Text = 0
41 End Sub

42 Private Sub Form_Load()


43 Me.Height = 6500
44 Me.AutoRedraw = True
45 Posisi = 1
46 End Sub

47 Private Sub txtAngka_GotFocus()


48 With Me.txtAngka
49 .SelStart = 0
50 .SelLength = Len(.Text)
51 End With
52 End Sub

'Event saat menekan tombol


'saat pointer pada txtAngka
53 Private Sub txtAngka_KeyPress( _
KeyAscii As Integer)
'
54 ReDim Preserve Angka(Posisi)
'Jika menekan tombol Enter maka...
55 If KeyAscii = 13 Then

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 75


56 Angka(Posisi) = CDbl(Me.txtAngka.Text)
'Memfokuskan txtAngka
57 txtAngka_GotFocus
58 Posisi = Posisi + 1
'
59 Me.lblAngka.Caption = _
"Angka ke-" & CStr(Posisi)
60 Me.Cls
61 Me.cmdProses.Enabled = True
62 End If
63 End Sub

64 Sub CetakDiForm()
65 Dim i As Integer
'Mengatur batas Kiri dan batas Atas
66 Me.ScaleLeft = -200
67 Me.ScaleTop = -1100
'Mengatur posisi Kiri
68 Me.CurrentX = 0
'Pengulangan sebanyak Angka yang dimasukan
69 For i = 1 To UBound(Angka)
'Mengatur posisi Atas
70 Me.CurrentY = 0 + (i * 300)
'Mencetak ke form
71 Me.Print "Angka ke-" & CStr(i) & _
" = " & CStr(Angka(i))
72 Next
'Mencetak baris
73 Me.Line (0, i * 300)-(2500, i * 300)
'Mencetak teks Jumlah = ...
74 Me.CurrentX = 0
75 Me.CurrentY = (i) * 300 + 100
76 Me.Print "Jumlah = " & _
CStr(Jumlah(Angka))
'Mencetak teks Rata-Rata = ...
77 Me.CurrentX = 0
78 Me.CurrentY = (i + 1) * 300 + 100
79 Me.Print "Rata-Rata = " & _
CStr(Round(Rata_Rata(Angka), 2))
80 'Mencetak teks Maximum = ...
81 Me.CurrentX = 0
82 Me.CurrentY = (i + 2) * 300 + 100
83 Me.Print "Maximum = " & _
CStr(Maksimum(Angka))
'Mencetak teks Minimum = ...
84 Me.CurrentX = 0
85 Me.CurrentY = (i + 3) * 300 + 100
86 Me.Print "Minimum = " & _
CStr(Minimum(Angka))
87 End Sub

Jalankan program! Ketikkan suatu nilai (angka) pada textbox: “Angka ke-1”. Tekan tombol Enter pada keyboard.
Masukkan lagi nilai baru, tekan kembali tombol Enter. Lakukan berulang-ulang sesuai keinginan Anda. Tekan tombol
Proses. Maka pada form akan tercetak informasi mengenai angka-angka yang telah Anda masukkan, dan hasil proses:
penjumlahan, rata-rata, maksimum, dan minimum.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 76


Gambar 18.7. Program menampilkan hasil proses.

18.7. Latihan 7
Latihan berikut ini adalah mendemonstrasikan pemograman grafis dan penggunaan metoda dragging pada pemograman.

Jalankan Visual Basic pada template Standard Exe. Namai project Anda dengan nama pjkLat7. Namai Form1 dengan
frmLat7.

Masukkan PictureBox, Frame dan CommandButton ke dalam form. Ubah properti-propertinya sebagai berikut:

Pengaturan Properti
Pengaturan pada: frmLat7
No Objek Kontrol Properti Perubahan
Name picGambar
1 Picture1 Appearance 0-Flat
AutoRedraw True
2 Frame1 Caption Pilih Gambar
Name cmdClear
3 Command1
Caption &Clear

Di dalam Frame, gambarkan sebuah PictureBox, dan atur properti-propertinya sebagai berikut:

Pengaturan Properti
Pengaturan pada: frmLat7
No Objek Kontrol Properti Perubahan
Name picCap
AutoSize True
BorderStyle 0-None
4 Picture1 DragMode 1-Automatic
Index 0
Gambar dengan
Picture
format ico (ikon)

Klik kanan pada PictureBox (picCap )tersebut, pilih Copy. Klik kanan pada frame, pilih Paste. Lakukan penggandaan
hingga picCap berjumlah empat buah. Atur penempatan objek kontrol-objek kontrol sehingga tampilan akhir seperti
pada ilustrasi gambar di bawah ini:

Gambar 18.8. Desain form.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 77


Ketikkan kode berikut:

Baris Kode
Baris kode pada: frmLat6
1 Option Explicit
'
2 Dim sX!, sY!, aX!, aY!
3 Dim x1!, y1!, x2!, y2!
4 Dim idxGambar As Integer
5 Dim Pilih As Boolean
'
6 Sub CapLingkar(X As Single, Y As Single)
7 Dim Teks As String
8 Dim txWdt As Long, txHgt As Long
9 sX = X: sY = Y
10 With Me.picGambar
11 Teks = "ANDI OFFSET"
12 txWdt = .TextWidth(Teks)
13 txHgt = .TextHeight(Teks)
'Menentukan tebal garis
14 .DrawWidth = 4
'Menentukan warna garis
15 .ForeColor = &H800000
'Menggambar lingkaran pertama
'dengan titik pusat (sY, sY)
'dan berdiameter 800px
16 Me.picGambar.Circle (sX, sY), 800
'Menentukan tebal garis
17 .DrawWidth = 2
'Menentukan warna garis
18 .ForeColor = vbRed
'Menggambar lingkaran kedua
19 Me.picGambar.Circle (sX, sY), 450
'Menggambar kotak
20 Me.picGambar.Line (sX - 1000, _
sY - 200)-Step _
(2000, 400), RGB(192, 192, 192), BF
21 .CurrentX = sX - txWdt / 2
22 .CurrentY = sY - txHgt / 2
23 .ForeColor = vbWhite
'Mencetak Teks
24 Me.picGambar.Print Teks
25 End With
26 End Sub

27 Private Sub cmdClear_Click()


'Membersihkan PictureBox
28 Me.picGambar.Cls
29 x1 = 0: y1 = 0
30 x2 = Me.picGambar.ScaleWidth
31 y2 = Me.picGambar.ScaleHeight
32 End Sub

33 Private Sub Form_Load()


34 x1 = 0: y1 = 0
35 x2 = Me.picGambar.ScaleWidth
36 y2 = Me.picGambar.ScaleHeight
37 Pilih = False
38 End Sub

39 Private Sub Form_Resize()


40 On Error Resume Next
'Menyesuaikan posisi dan ukuran picGambar
'dengan form
41 Me.picGambar.Move 1560, 0, _
Me.ScaleWidth - 1560, Me.ScaleHeight
42 End Sub

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 78


43 Private Sub picCap_Click(Index As Integer)
44 idxGambar = Index
45 End Sub

46 Private Sub picCap_DragOver(Index As Integer, _


Source As Control, X As Single, _
Y As Single, State As Integer)
47 On Error Resume Next
48 idxGambar = Index
49 Pilih = True
'Mengubah icon saat dragging
50 Source.DragIcon = _
Me.picCap(idxGambar).Picture
51 End Sub

'Event saat meletakkan icon ke picGambar


52 Private Sub picGambar_DragDrop( _
Source As Control, _
X As Single, Y As Single)
53 If idxGambar = 3 Then
54 CapLingkar X, Y
55 Else: CapGambar idxGambar, X, Y
56 End If
57 End Sub

'Event saat pointer mouse di atas picGambar


58 Private Sub picGambar_MouseMove( _
Button As Integer, Shift As Integer, _
X As Single, Y As Single)
59 If Pilih = True Then
'Mengubah pointer mouse
60 Me.picGambar.MousePointer = 99
61 Me.picGambar.MouseIcon = _
Me.picCap(idxGambar).Picture
'Jika sambil menekan tombol kanan mouse
62 If Button = 2 Then
63 If idxGambar = 3 Then
64 CapLingkar X, Y
65 Else: CapGambar idxGambar, X, Y
66 End If
67 End If
68 End If
69 End Sub

'Event saat melepas tombol mouse


70 Private Sub picGambar_MouseUp( _
Button As Integer, Shift As Integer, _
X As Single, Y As Single)
71 If idxGambar = 3 Then
72 CapLingkar X, Y
73 Else: CapGambar idxGambar, X, Y
74 End If
75 End Sub

76 Sub CapGambar(Index%, X!, Y!)


77 Dim wPic As Long, hPic As Long
78 wPic = Me.picCap(Index).Width
79 hPic = Me.picCap(Index).Height
'Menggambar pada picGambar
'sesuai gambar dari picCap terpilih
80 Me.picGambar.PaintPicture _
Me.picCap(Index).Picture, _
X - wPic / 2, Y - hPic / 2, wPic, hPic
81 End Sub

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 79


Jalankan program, klik pada sebuah gambar, tahan tombol kiri mouse, lakukan dragging (menyeret) ke daerah ‘kanvas’.
Pada ‘kanvas’ (picturebox) akan tercetak gambar sesuai gambar yang dipilih. Anda juga bisa melakukannya dengan
mengklik sebuah gambar, kemudian klik pada ‘kanvas’. Coba pula dengan mengklik tombol kanan mouse, lakukan
dragging (menyeret) ke daerah ‘kanvas’.

Gambar 18.9. Program sedang berjalan.

18.8. Latihan 8
Latihan berikut ini adalah contoh program untuk mengacak nomor seperti saat pengundian.

Jalankan Visual Basic pada Standard Exe. Namai project dengan pjkLat8. namai form1 dengan frmLat8. Ubah
BackColor form menjadi warna hitam. Tambahkan objek kontrol-objek kontrol berikut ini dan atur propertinya.

Pengaturan Properti
Pengaturan pada: frmLat8
No Objek Kontrol Properti Perubahan
Name cmdAcak
Style 1-Graphic
Gambar ikon (format
1 Command1 Picture
.ico)
Gambar ikon (format
DisabledPicture
.ico)
Name Timer1
2 Timer1 Interval 100
Enabled False
Name imgIcon
Samakan dengan
3 Image1
Picture gambar dari properti:
Picture cmdAcak

Gambar 18.10. Desain form.

Ketikkan kode berikut:

Baris Kode
Baris kode pada: frmLat8
1 Option Explicit

2 Dim ANGKA$, Acak As Byte

3 Private Sub cmdAcak_Click()


4 If Acak = 0 Then
5 Acak = 1
'Mengaktifkan Timer
6 Me.Timer1.Enabled = True
'Mengubah gambar tombol
7 Me.cmdAcak.Picture = _
Me.cmdAcak.DisabledPicture

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 80


8 Else: Acak = 0
'Menonaktifkan Timer
9 Me.Timer1.Enabled = False
'Mengubah gambar tombol
10 Me.cmdAcak.Picture = _
Me.imgIcon.Picture
11 End If
12 End Sub

13 Private Sub Form_Load()


14 Me.AutoRedraw = True
15 AcakAngka
16 End Sub

17 Private Sub Timer1_Timer()


18 AcakAngka
19 End Sub

20 Sub AcakAngka()
21 Dim INDEX As Integer
22 Me.Cls
'Mengatur Font dari form
23 Me.Font.Name = "Courier New"
24 Me.Font.Size = 20
'Mulai mengacak
25 ANGKA = Int(Rnd * 10) & Int(Rnd * 10) & _
Int(Rnd * 10) & Int(Rnd * 10) & _
Int(Rnd * 10) & Int(Rnd * 10) & _
Int(Rnd * 10) & Int(Rnd * 10) & _
Int(Rnd * 10) & Int(Rnd * 10) & _
Int(Rnd * 10) & Int(Rnd * 10) & _
Int(Rnd * 10) & Int(Rnd * 10)
26 Me.ForeColor = vbGreen
27 Me.CurrentX = 1220
28 Me.CurrentY = 250
'Mencetak Angka (bayangan 1)
29 Me.Print ANGKA
30 Me.ForeColor = vbBlue
31 Me.CurrentX = 1210
32 Me.CurrentY = 270
'Mencetak Angka (bayangan 2)
33 Me.Print ANGKA
34 Me.ForeColor = vbRed
35 Me.CurrentX = 1205
36 Me.CurrentY = 275
'Mencetak Angka
37 Me.Print ANGKA
38 End Sub

Jalankan program klik tombol.

Gambar 18.11. Program sedang berjalan.

18.9. Latihan 9
Mari kita berkreasi dalam grafis! Latihan kali ini mendemonstrasikan cara memutar gambar dan menggambar
transparan.

Jalankan Visual Basic pada Standard Exe. Namai project dengan pjkLat9. namai form1 dengan frmLat9. Tambahkan
objek kontrol-objek kontrol berikut ini dan atur propertinya.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 81


Pengaturan Properti
Pengaturan pada: frmLat9
No Objek Kontrol Properti Perubahan
Name picSumber
AutoSize True
1 Picture1 Terserah Anda
Picture
(bertipe bmp)
SacleMode 3-Pixel
Name picSumber
AutoSize True
2 Picture2 Terserah Anda
Picture
(bertipe bmp)
SacleMode 3-Pixel
Name cmdPutar90
3 Command1
Caption &Putar 90
Name cmdTransparan
4 Command2
Caption &Transparan

Gambar 18.12. Desain form.

Ketikkan kode berikut:

Baris Kode
Baris kode pada: frmLat9
1 Option Explicit

2 Private Sub cmdPutar90_Click()


3 Dim x, y
'Mengubah Scalemode menjadi Pixel
4 Me.picSumber.ScaleMode = 3
5 Me.picTarget.ScaleMode = 3
'Membersihkan picTarget
6 picTarget.Cls
'Menggambar dan memutar 90º picTarget
7 For y = 0 To Me.picSumber.ScaleHeight
8 For x = 0 To Me.picSumber.ScaleWidth
9 Me.picTarget.PSet (x, y), _
Me.picSumber.Point(y, x)
10 Next
11 Next
12 End Sub

13 Private Sub cmdTransparan_Click()


14 Dim XRd, YRd, PelX, PelY, PelC, ScrX, ScrY
15 Me.picTarget.ScaleMode = 1
'
16 ScrX = Screen.TwipsPerPixelX
17 ScrY = Screen.TwipsPerPixelY
'Membersihkan picTarget
18 picTarget.Cls
'Mengubah Scalemode picTarget
19 Me.picTarget.ScaleMode = 1
'Menggambar transparan picTarget

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 82


20 For YRd = 0 To (picSumber.ScaleHeight - 1)
21 PelY = picSumber.Top + (YRd * ScrY)
22 For XRd = 0 To ( _
picSumber.ScaleWidth - 1)
23 PelX = picSumber.Left + _
(XRd * ScrX)
24 PelC = picSumber.Point(XRd, YRd)
25 If PelC <> picSumber.Point(0, 0) _
And PelC > 0 Then
26 picTarget.Line (PelX, PelY)- _
Step(ScrX, ScrY), PelC, BF
27 End If
28 Next XRd
29 DoEvents
30 Next YRd
31 End Sub

Jalankan program! Klik tombol Putar 90o. Maka picturebox ke 2 akan menggambar ulang dan memutar 90o gambar dari
picturebox pertama. Klik tombol Transparan, gambar pada picturebox pertama akan digambar ulang secara transparan.

Gambar 18.13. Program sedang berjalan.

18.10. Latihan 10
Kali ini kita masih berkreasi dalam grafis! Latihan kali ini akan mendemonstrasikan cara memutar gambar dan
menggambar transparan.

Jalankan Visual Basic pada Standard Exe. Namai project dengan pjkLat10. namai form1 dengan frmLat10. Tambahkan
objek kontrol-objek kontrol berikut ini dan atur propertinya.

Pengaturan Properti
Pengaturan pada: frmLat10
No Objek Kontrol Properti Perubahan
Name picTulis
AutoSize True
1 Picture1
Appearance 0-Flat
BorderColor Putih
2 Label1 Caption &Nama Font
3 Label2 Caption &Ukuran Font
4 Label3 Caption Posisi &Kiri
5 Label4 Caption Posisi &Atas
6 Label5 Caption &Teks
7 Label6 Caption &Warna
Name cboFont
8 Combo1
Text Dikosongkan
Name cboUkuran
9 Combo2
Text Dikosongkan
Name txtX
10 Text1
Text 0
Name txtY
11 Text2
Text 0
Name txtText
12 Text3
Text Dikosongkan

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 83


Name picWarna
AutoSize True
13 Picture2
Appearance 0-Flat
BorderColor Putih
Name cmdTulis
14 Command1
Caption &Tulis
Name cmdClear
15 Command2
Caption &Clear

Gambar 18.14. Desain form.

Ketikkan kode berikut:

Baris Kode
Baris kode pada: frmLat10
1 Option Explicit

2 Dim ptX, ptY, intX, intY

3 Private Sub cmdTulis_Click()


' Mencetak tulisan ke picturebox
4 With Me.picTulis
5 .CurrentX = Val(Me.txtX.Text)
.CurrentY = Val(Me.txtY.Text)
6 .Font.Name = Me.cboFont.Text
.Font.Size = Me.cboUkuran.Text
7 Me.picTulis.Print Me.txtText.Text
8 End With
9 End Sub

10 Private Sub cmdClear_Click()


11 picTulis.Cls
12 End Sub

13 Private Sub Form_Load()


14 Dim i As Integer, perWdt As Long
15 Me.picTulis.AutoRedraw = True
16 Me.picWarna.AutoRedraw = True
'Mengisi combo ukuran dengan angka
'mulai dari 8
17 For i = 8 To 30 Step 2
18 Me.cboUkuran.AddItem i
19 Next
'Mengisi combo dengan daftar font dari
'sistem komputer
20 Me.cboUkuran.ListIndex = 0
21 For i = 1 To Screen.FontCount
22 Me.cboFont.AddItem Screen.Fonts(i)
23 Next
24 Me.cboFont.ListIndex = 0
25 End Sub

26 Private Sub Form_Paint()

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 84


27 Dim i, perWdt As Long
28 perWdt = picWarna.Width / 15
29 For i = 0 To 15
30 Me.picWarna.Line (i * perWdt, 0)- _
Step((i + 1) * perWdt, _
Me.picWarna.Height), _
QBColor(i), BF
31 Next
32 Me.picWarna.DrawWidth = 2
'Menggambar lingkaran (titik)
33 Me.picWarna.FillStyle = vbFSSolid
34 Me.picWarna.Circle (intX, intY), 30
35 End Sub

36 Private Sub picWarna_Click()


37 Form_Paint
38 End Sub

39 Private Sub picWarna_MouseDown( _


Button As Integer, Shift As Integer, _
X As Single, Y As Single)
40 intX = X
41 intY = Y
42 picTulis.ForeColor = picWarna.Point(X, Y)
43 End Sub

Gambar 18.15. Program sedang berjalan.

Pada saat form dijalankan, combo Font akan diisi nama-nama font yang ada dalam sistem komputer Anda. Picturebox
Warna akan dipecah menjadi 16 warna dasar. Klik picturebox Warna, maka posisi Anda mengklik akan ditandai oleh
sebuah titik. Ketikkan data yang diperlukan, kemudian klik Tulis, maka pada picturebox Tulis akan tergambar teks
dengan kriteria yang telah Anda tentukan.

18.11. Latihan 11
Bagaimana cara mempercantik MDIForm? Salah satunya mungkin dengan memberinya gambar. Tapi bagaimana
caranya? MDIForm bisa dikatakan sebagai form yang ‘rewel’, karena tidak mudah untuk disisipi oleh objek kontrol.
Latihan kali ini, adalah trik untuk mempercantik MDIForm.

Jalankan Visual Basic pada Standard Exe. Namai project dengan pjkLat11. namai form1 dengan frmLogo. Tambahkan
MDIForm ke dalam project Anda. Namai dengan mdiUtama. Kembali ke form1 (frmLogo). Ubah properti BorderStyle
menjadi: 0-None. Ubah pula MDIChild menjadi: True. Tambahkan PictureBox. Ubah propertinya seperti pada tabel di
bawah ini.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 85


Gambar 18.16. Desain Form dan MDIForm.

Pengaturan Properti
Pengaturan pada: frmLogo
No Objek Kontrol Properti Perubahan
Name picLogo
AutoSize True
1 Picture1 Appearance 0-Flat
BorderColor Putih
Picture Terserah Anda
Ketikkan kode berikut:

Baris Kode
Baris kode pada: mdiUtama
1 Option Explicit

2 Private Sub MDIForm_Resize()


3 On Error Resume Next
4 frmLogo.Move 0, 0, mdiUtama.ScaleWidth, _
mdiUtama.ScaleHeight
5 End Sub

Baris kode pada: frmLogo


1 Option Explicit

2 Private Sub Form_Resize()


3 On Error Resume Next
4 Me.picLogo.Move (Me.ScaleWidth - _
Me.picLogo.Width) / 2, (Me.ScaleHeight - _
Me.picLogo.Height) / 2
6 End Sub

Jalankan program. Sekarang pada MDIForm sudah tercetak gambar yang akan selalu berada di tengah-tengah.

Gambar 18.17. Program sedang berjalan.

18.12. Latihan 12
Sekarang Anda akan saya ajak beranimasi. Berikut ini latihan animasi dengan menggunakan objek kontrol PictureClip.

Jalankan Visual Basic pada Standard Exe. Namai project dengan pjkLat12. namai form1 dengan frmLat12. Klik menu
ProjectComponent... Pada dialog yang ditampilkan, klik/tandai list “Microsoft PictureClip Control 6.0”, klik OK.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 86


Gambarkan objek kontrol PictureClip, PictureBox, dan Timer ke dalam form. Ubah propertinya seperti pada tabel di
bawah ini.

Pengaturan Properti
Pengaturan pada: frmLat12
No Objek Kontrol Properti Perubahan
Name pccDadu
Cols 6
1 PicClip1
Rows 3
Picture Pada CD
Name picDadu
AutoSize True
2 Picture1 Appearance 0-Flat
BorderColor Putih
Picture Terserah Anda
Name Timer1
3 Timer
Interval 100

Gambar 18.18. Desain Form.

Ketikkan kode berikut:

Baris Kode
Baris kode pada: frmLat12
1 Option Explicit

2 Dim x

3 Private Sub Form_Load()


4 picDadu.Picture = pccDadu.GraphicCell(2)
x = 1
5 End Sub
6
Private Sub Form_Resize()
7 'Melarikan picDadu ke tengah form
Me.picDadu.Move _
8 (Me.ScaleWidth - Me.picDadu.Width) / 2, _
(Me.ScaleHeight - Me.picDadu.Height) / 2
End Sub
9
Private Sub Timer1_Timer()
10 'Menggambar picDadu dengan gambar
'dari PictureClip
x = x + 1
11 If x = (Me.pccDadu.Rows * _
12 Me.pccDadu.Cols) Then x = 0
13 picDadu.Picture = _
pccDadu.GraphicCell(x)
14 End Sub

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 87


Gambar 18.19. Program sedang berjalan.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 88


Penutup

Akhirnya, penulis berharap semoga semua kajian yang telah disampaikan dapat bermanfaat bagi pembaca sekalian. Bagi
pembaca yang ingin berkonsultasi atau bertanya mengenai buku ini dan pemograman Visual Basic, silakan kirimkan
surat Anda ke alamat: Jl. P. Drajat Gg. Jepun RT. 03/09 No. 48 Cirebon 45133. Atau ke alamat E-Mail:

- pujanggabageur@yahoo.com

Mohon maaf untuk surat menyurat melalui alamat pos yang memerlukan jawaban dari penulis, penulis harap pembaca
berkenan menyertakan perangko balasan demi kelancaran kita bersama. Terima kasih.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 89

Anda mungkin juga menyukai