latihan
TRANSCRIPT
![Page 1: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/1.jpg)
BAB XVISEPULUH 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 Key1 komputer 14 xls2 ini 15 mdb3 inf 16 recycle4 mid 17 filegeneric5 wav 18 mp36 bat 19 folder17 exe 20 folder28 dll 21 diska9 imf 22 cdrom10 txt 23 desktop11 jpg 24 disket12 drivelepas 25 diskanet13 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 PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan
2 TreeViewName tvwExplorImageList imgMain
3 ListViewName lvwExplorImageList imgMain
4 RichTextBoxName rtbExplorAppearance 0-rtfFlatScrollBar 3-rtfBoth
5 ProgressBarName pgbExplorScrolling 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
![Page 2: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/2.jpg)
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 KodeBaris kode pada: Form11
2
3456
78910111213
14
1516171819202122232425262728293031323334
35
36
Option Explicit'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'Private ObjekFile As New FileSystemObjectDim strPathX As StringDim TwipsInHimetric!Dim sPath As String'Private Sub Form_Load()On Error Resume Next Dim drvDrive As Drive Dim strIkon As String Dim strNama As String Dim fldFolder As Folder Dim fldDrive As Folder ' TwipsInHimetric = ScaleX(1, vbTwips, _ vbHimetric) For Each drvDrive In ObjekFile.Drives If drvDrive.DriveType = CDRom Then strIkon = "cdrom" If drvDrive.IsReady Then strNama = drvDrive.VolumeName Else: strNama = "CD-ROM" End If ElseIf drvDrive.DriveType = Fixed Then strIkon = "diska" If drvDrive.IsReady Then strNama = drvDrive.VolumeName Else: strNama = "Hard Drive" End If ElseIf drvDrive.DriveType = Remote Then strIkon = "diskanet" If drvDrive.IsReady Then strNama = drvDrive.ShareName Else: strNama = "Network Drive" End If ElseIf drvDrive.DriveType = Removable _ Then If drvDrive.DriveLetter = "A" Or _ drvDrive.DriveLetter = "B" Then strIkon = "disket"
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 2
![Page 3: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/3.jpg)
373839202122
23242526272829303132
33
3435
36
3738394041
4243
44
45
46
4748
49
50
5152
5354
55
56
57
Else: strIkon = "drivelepas" End If If drvDrive.IsReady Then strNama = drvDrive.VolumeName Else If drvDrive.DriveLetter = "A" Or _ drvDrive.DriveLetter = "B" Then strNama = "Floppy Drive" Else: strNama = "Drive Lepas" End If End If If drvDrive.IsReady Then strNama = drvDrive.VolumeName Else strNama = "Tidak diketahui" End If End If ' tvwExplor.Nodes.Add , , "pc", _ "komputerku", "komputer", "komputer" tvwExplor.Nodes.Add "pc", _ tvwChild, drvDrive.Path, _ strNama & " (" & _ UCase(drvDrive.DriveLetter) & ":)", strIkon ' If drvDrive.IsReady Then Set fldDrive = ObjekFile.GetFolder( _ drvDrive.RootFolder) For Each fldFolder In fldDrive.SubFolders tvwExplor.Nodes.Add drvDrive.Path, 4, _ fldFolder.Path, fldFolder.Name, "folder1" Next End If Next Me.tvwExplor.Nodes(1).Selected = TrueEnd Sub
Private Sub Form_Resize() Me.tvwExplor.Move tvwExplor.Left, _ tvwExplor.Top, tvwExplor.Width, _ Me.ScaleHeight - Me.pgbExplor.Height Me.lvwExplor.Move lvwExplor.Left, _ lvwExplor.Top, Me.lvwExplor.Width, _ Me.ScaleHeight - Me.pgbExplor.Height Me.pgbExplor.Move 0, Me.ScaleHeight - _ Me.pgbExplor.Height, Me.ScaleWidth, _ Me.pgbExplor.Height Me.rtfExplor.Width = Me.ScaleWidth - _ Me.lvwExplor.Width - _ Me.tvwExplor.Width - 100 Me.rtfExplor.Height = Me.ScaleHeight - _ Me.pgbExplor.HeightEnd Sub
Private Sub lvwExplor_ItemClick( _ByVal Item As MSComctlLib.ListItem) Dim nSt As Integer Me.Caption = strPathX & IIf( _ Len(strPathX) <= 4, "", "\") & Item.Text LihatFile Me.CaptionEnd Sub'Private Sub tvwExplor_Collapse( _ByVal Node As MSComctlLib.Node) If Node.Image = "folder2" Then _ Node.Image = "folder1"End Sub'
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 3
![Page 4: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/4.jpg)
58
596061626364
65
66676839
7071727374757677787980
81
82838485868788
899091
9293
9495
96979899100
101102
103104
105
Private Sub tvwExplor_Expand( _ByVal Node As MSComctlLib.Node) On Error Resume Next Dim SubSubfolder As Folder Dim Subfolder As Folder Dim fldFolder As Folder Dim i% If Node.Image = "folder1" Then _ Node.Image = "folder2" Set fldFolder = ObjekFile.GetFolder( _ Node.Key & "\") For Each Subfolder In fldFolder.SubFolders For Each SubSubfolder In Subfolder.SubFolders tvwExplor.Nodes.Add Subfolder.Path, 4, _ SubSubfolder.Path, _ SubSubfolder.Name, "folder1" i = i + 1 Me.pgbExplor.Value = i / _ fldFolder.SubFolders.Count * 100 'DoEvents Next If Me.pgbExplor.Value >= 100 Then Me.pgbExplor.Value = 0 i = 0 End If NextEnd Sub'Private Sub tvwExplor_NodeClick( _ByVal Node As MSComctlLib.Node) On Error Resume Next Dim SubSubfolder As Folder Dim fldFolder As Folder Dim filFile As File Dim Subfolder As Folder lvwExplor.ListItems.Clear Set fldFolder = ObjekFile.GetFolder( _ Node.Key & "\") strPathX = fldFolder Me.Caption = strPathX Dim xFile$, i As Integer ' For Each Subfolder In fldFolder.SubFolders lvwExplor.ListItems.Add , _ Subfolder.Path, Subfolder.Name, _ "folder1", "folder1" i = i + 1 Me.pgbExplor.Value = i / _ fldFolder.SubFolders.Count * 100 DoEvents Next For Each filFile In fldFolder.Files xFile = LCase(Right(filFile.Name, 3)) lvwExplor.ListItems.Add , _ fldFolder.Path & "\" & _ filFile.Name, filFile.Name, xFile, _ xFile i = i + 1 Me.pgbExplor.Value = i / _ fldFolder.Files.Count * 100 ' If Err Then lvwExplor.ListItems.Add , _ fldFolder.Path & "\" & _ filFile.Name, filFile.Name, _ "filegeneric", "filegeneric" End If
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 4
![Page 5: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/5.jpg)
106107108109110111
112113114115116117118119120121122123124125126
127128
129130131132
133134
135136137138139140141142143144
Next If Me.pgbExplor.Value >= 100 Then Me.pgbExplor.Value = 0 i = 0 End IfEnd Sub 'Sub LihatFile(sFile As String) rtfExplor.Locked = False rtfExplor.Font.Size = 8 rtfExplor.Text = "" rtfExplor.SelAlignment = 0 rtfExplor.RightMargin = 0 sPath = sFile On Error GoTo ErrHandler Select Case LCase(Right$(sFile, 4)) Case ".bmp", ".jpg", ".gif" Dim pic As StdPicture Set pic = LoadPicture(sPath) Clipboard.Clear Clipboard.SetData pic SendMessage rtfExplor.hwnd, _ &H302, 0, 0 Clipboard.Clear rtfExplor.RightMargin = _ pic.Width \ TwipsInHimetric Case ".rtf" rtfExplor.LoadFile sPath, rtfRTF Case ".txt" rtfExplor.LoadFile sPath, _ rtfText Case Else rtfExplor.LoadFile sPath, _ rtfText End Select rtfExplor.Refresh rtfExplor.Locked = True Exit SubErrHandler: On Error GoTo 0 rtfExplor.Text = "Format tidak dikenal" rtfExplor.Refresh rtfExplor.Locked = TrueEnd 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
![Page 6: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/6.jpg)
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: Form1Nama Objek Properti Perubahan
Command2
Name cmdOperatorIndex 0Caption /TabIndex 13
Command2
Name cmdOperatorIndex 1Caption +TabIndex 14
Command2
Name cmdOperatorIndex 2Caption xTabIndex 15
Command2
Name cmdOperatorIndex 3Caption -TabIndex 16
Command2
Name cmdOperatorIndex 4Caption =TabIndex 17
Gambarkan lagi 4 (empat) buah CommandButton dan sebuah Label, atur properti seperti pada table di bawah:
Objek pada: Form1Nama Objek Properti Perubahan
Command1Name cmdPercentCaption %TabIndex 18
Command2Name cmdDecimalCaption .TabIndex 19
Command3Name cmdCancelCaption CTabIndex 1
Command4Name cmdCancelEntryCaption CETabIndex 2
Label1
Name lblDisplayCaption 0.Alignment 1-Right Justify
BackColorPutih atau warna 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
![Page 7: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/7.jpg)
Gambar 16.3. Desain Form kalkulator.
b. Baris Kode
Baris KodeBaris kode pada: Form11
234567
891011121314
151617181920
21222324252627282930
313233343536373839
4041
4243
Option Explicit
Dim Operator1, Operator2Dim DecimalFlag As IntegerDim NumOps As IntegerDim AkhirMasukanDim JnOperatorDim TempPembacaan
Private Sub cmdCancel_Click() On Error Resume Next lblDisplay = "0." Operator1 = 0 Operator2 = 0 Form_LoadEnd Sub'Private Sub cmdCancelEntry_Click() On Error Resume Next lblDisplay = "0." DecimalFlag = False AkhirMasukan = "CE"End Sub'Private Sub cmdDecimal_Click() On Error Resume Next If AkhirMasukan = "NEG" Then lblDisplay = "-0." ElseIf AkhirMasukan <> "NUMS" Then lblDisplay = "0." End If DecimalFlag = True AkhirMasukan = "NUMS"End Sub'Private Sub cmdNomor_Click(Index As Integer) On Error Resume Next If Len(lblDisplay) <= 17 Then If AkhirMasukan <> "NUMS" Then lblDisplay = "." DecimalFlag = False End If If DecimalFlag Then lblDisplay = lblDisplay + _ cmdNomor(Index).Caption Else lblDisplay = Left(lblDisplay, _ InStr(lblDisplay, ".") - 1) + _ cmdNomor(Index).Caption + "." End If If AkhirMasukan = "NEG" Then _
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 7
![Page 8: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/8.jpg)
444546
474849505152535455
565758596061
62636465666768697071727374757677
78798081828384858687888990919293
949596979899100101
102103
lblDisplay = "-" & lblDisplay AkhirMasukan = "NUMS" End IfEnd Sub'Private Sub cmdOperator_Click(Index As Integer) On Error Resume Next TempPembacaan = lblDisplay If AkhirMasukan = "NUMS" Then NumOps = NumOps + 1 End If Select Case NumOps Case 0 If cmdOperator(Index).Caption = "-" _ And AkhirMasukan <> "NEG" Then lblDisplay = "-" & lblDisplay AkhirMasukan = "NEG" End If Case 1 Operator1 = lblDisplay If cmdOperator(Index).Caption = "-" _ And AkhirMasukan <> "NUMS" And _ JnOperator <> "=" Then lblDisplay = "-" AkhirMasukan = "NEG" End If Case 2 Operator2 = TempPembacaan Select Case JnOperator Case "+" Operator1 = Operator1 + Operator2 Case "-" Operator1 = Operator1 - Operator2 Case "X" Operator1 = Operator1 * Operator2 Case "/" If Operator2 = 0 Then MsgBox "Ga bisa membagi dengan Nol", _ 48, "Kalkulator" Else Operator1 = Operator1 / Operator2 End If Case "=" Operator1 = Operator2 Case "%" Operator1 = Operator1 * Operator2 End Select lblDisplay = Operator1 NumOps = 1 End Select If AkhirMasukan <> "NEG" Then AkhirMasukan = "OPS" JnOperator = cmdOperator(Index).Caption End IfEnd Sub
Private Sub cmdPercent_Click() On Error Resume Next lblDisplay = lblDisplay / 100 AkhirMasukan = "OPS" JnOperator = "%" NumOps = NumOps + 1 DecimalFlag = TrueEnd Sub
Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii >= Asc("0") And _ KeyAscii <= Asc("9") Then
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 8
![Page 9: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/9.jpg)
104105106107108109110111112113114115116117118119120121122
123124125126127128129
cmdNomor_Click (KeyAscii - 48) ElseIf KeyAscii = Asc("/") Then cmdOperator_Click (0) ElseIf KeyAscii = Asc("+") Then cmdOperator_Click (1) ElseIf KeyAscii = Asc("*") Then cmdOperator_Click (2) ElseIf KeyAscii = Asc("-") Then cmdOperator_Click (3) ElseIf KeyAscii = Asc("=") Then cmdOperator_Click (4) ElseIf KeyAscii = 13 Then cmdOperator_Click (4) ElseIf KeyAscii = Asc("%") Then cmdPercent_Click ElseIf KeyAscii = Asc(".") Then cmdDecimal_Click End IfEnd Sub
Private Sub Form_Load() On Error Resume Next DecimalFlag = False NumOps = 0 AkhirMasukan = "NONE" JnOperator = " "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 PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan1 Label1 Caption Angka Masukan2 Label2 Caption Konversi Romawi3 Label3 Caption Konversi Binear4 Label4 Caption Konversi Hexa5 Label5 Caption Konversi Huruf
6 Text1Name txtAngkaAlignment 1 – Right Justify
7 Text2Name txtKonversi1Alignment 0 – Left Justify
8 Text3Name txtKonversi2Alignment 1 – Right Justify
9 Text4Name txtKonversi3Alignment 1 – Right Justify
10 Text5 Name txtKonversi4Alignment 0 – Left Justify
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 9
![Page 10: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/10.jpg)
Multiline TrueScrollBar 2 – Vertical
11 Command1Name cmdKonversiCaption &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 KodeBaris kode pada: mdlKonversi 1
23456789101112131415
161718192021222324252627
2829303132333435
3637
Dim HurufKe(20) As Double
Function HurufSatuan(Angka As Double) As String Select Case Angka Case 1: HurufSatuan = "se" Case 2: HurufSatuan = "dua" Case 3: HurufSatuan = "tiga" Case 4: HurufSatuan = "empat" Case 5: HurufSatuan = "lima" Case 6: HurufSatuan = "enam" Case 7: HurufSatuan = "tujuh" Case 8: HurufSatuan = "delapan" Case 9: HurufSatuan = "sembilan" Case 0: HurufSatuan = "" End SelectEnd Function
Function Huruf(Angka As Double) As String Dim Satuan$, Puluhan$, Ratusan$, Dim Ribuan$, PuluhRibuan$, RatusRibuan$ Dim Jutaan$, PuluhJutaan$, RatusJutaan$ Dim Milyaran$, PuluhMilyaran$ Dim RatusMilyaran$, Panjang%, i% Panjang = Len(CStr(Angka)) For i = 1 To 20 HurufKe(i) = 0 Next For i = Panjang To 1 Step -1 HurufKe(i) = (Mid(CStr(Angka), _ (Panjang + 1) - i, 1)) Next If HurufKe(1) = 1 Then Satuan = "satu" Else Satuan = HurufSatuan(HurufKe(1)) End If If HurufKe(2) > 1 Then Puluhan = HurufSatuan(HurufKe(2)) & _ "puluh " ElseIf HurufKe(2) = 1 Then If HurufKe(1) > 0 Then
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 10
![Page 11: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/11.jpg)
38
39404142434445
4647
4849505152
53545556575859
6061
62636465666768
697071
727374
7576
777879
8081
8283848586
878889909192
Satuan = HurufSatuan(HurufKe(1)) & _ "belas" Else Satuan = "sepuluh" End If End If If HurufKe(3) > 0 Then Ratusan = HurufSatuan(HurufKe(3)) & _ "ratus " End If If HurufKe(5) > 1 Then PuluhRibuan = HurufSatuan(HurufKe(5)) & _ "puluh " If HurufKe(4) > 0 Then If HurufKe(4) = 1 Then Ribuan = "satu ribu " Else Ribuan = HurufSatuan( _ HurufKe(4)) & "ribu " End If Else Ribuan = "ribu " End If ElseIf HurufKe(5) = 1 Then If HurufKe(4) = 0 Then PuluhRibuan = HurufSatuan( _ HurufKe(4)) & "sepuluh ribu " Else PuluhRibuan = HurufSatuan( _ HurufKe(4)) & "belas ribu " End If Else If HurufKe(4) > 0 Then Ribuan = HurufSatuan(HurufKe(4)) & _ "ribu " End If End If '-------------------------------------- If HurufKe(6) > 0 Then If HurufKe(5) > 0 Then RatusRibuan = HurufSatuan( _ HurufKe(6)) & "ratus " ElseIf HurufKe(5) = 0 Then If HurufKe(4) = 0 Then RatusRibuan = HurufSatuan( _ HurufKe(6)) & "ratus ribu " Else RatusRibuan = HurufSatuan( _ HurufKe(6)) & "ratus " End If End If End If '------------------------------------ If HurufKe(8) > 1 Then PuluhJutaan = HurufSatuan(HurufKe(8)) & _ "puluh " If HurufKe(7) > 0 Then If HurufKe(7) = 1 Then Jutaan = "satu juta " Else Jutaan = HurufSatuan( _ HurufKe(7)) & "juta " End If Else Jutaan = "juta " End If ElseIf HurufKe(8) = 1 Then If HurufKe(7) = 0 Then
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 11
![Page 12: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/12.jpg)
93
9495
96979899100101102
103104105106107
108109110111112113114115116
117118119
120121122123124125126127128129130131132
133134135136
137138
139
140141142143144145146147
PuluhJutaan = HurufSatuan( _ HurufKe(7)) & "sepuluh juta " Else PuluhJutaan = HurufSatuan( _ HurufKe(7)) & "belas juta " End If Else If HurufKe(7) > 0 Then If HurufKe(7) = 1 Then Jutaan = "satu juta " Else Jutaan = HurufSatuan( _ HurufKe(7)) & "juta " End If End If End If If HurufKe(9) > 0 Then RatusJutaan = HurufSatuan( _ HurufKe(9)) & "ratus " End If If HurufKe(11) > 1 Then PuluhMilyaran = HurufSatuan( _ HurufKe(11)) & "puluh " If HurufKe(10) > 0 Then If HurufKe(10) = 1 Then Milyaran = "satu milyar " Else Milyaran = HurufSatuan( _ HurufKe(10)) & "milyar " End If ElseIf HurufKe(10) = 0 Then PuluhMilyaran = HurufSatuan( _ HurufKe(11)) & "puluh milyar " End If ElseIf HurufKe(11) = 1 Then If HurufKe(10) > 0 Then PuluhMilyaran = HurufSatuan( _ HurufKe(10)) & "belas milyar " ElseIf HurufKe(10) = 0 Then PuluhMilyaran = "sepuluh milyar " End If ElseIf HurufKe(11) = 0 Then If HurufKe(10) = 1 Then Milyaran = "satu milyar " ElseIf HurufKe(10) > 1 Then Milyaran = HurufSatuan( _ HurufKe(10)) & "milyar " End If End If If HurufKe(12) > 0 Then RatusMilyaran = HurufSatuan( _ HurufKe(12)) & "ratus " End If Huruf = RatusMilyaran & PuluhMilyaran & _ Milyaran & RatusJutaan & _ PuluhJutaan & Jutaan & _ RatusRibuan & PuluhRibuan & _ Ribuan & Ratusan$ & Puluhan$ & SatuanEnd Function
Function BASIS(IntAngka%, NBASIS%) As String Dim INTNILAI&, INTLEN%, J% Dim STRHASIL$, STRHEXA$, STREND$, STRSUB$ Do INTNILAI = IntAngka Mod NBASIS IntAngka = IntAngka \ NBASIS Select Case INTNILAI Case 10: STRHEXA = "A"
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 12
![Page 13: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/13.jpg)
148149150151152153154155156157158159160161162163
164165
166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
Case 11: STRHEXA = "B" Case 12: STRHEXA = "C" Case 13: STRHEXA = "D" Case 14: STRHEXA = "E" Case 15: STRHEXA = "F" Case Else: STRHEXA = CStr(INTNILAI) End Select STRHASIL = STRHASIL + STRHEXA Loop Until IntAngka < NBASIS INTLEN = Len(STRHASIL): STREND = CStr(IntAngka) For J = INTLEN To 1 Step -1 STRSUB = STRSUB + Mid(STRHASIL, J, 1) Next If (Mid(STREND + STRSUB, 1, 1)) = "0" Then BASIS = Mid(STREND + STRSUB, _ 2, Len(STREND + STRSUB) - 1) Else: BASIS = STREND + STRSUB: End IfEnd Function
Function ROMAN(IntAngka As Integer) As String Dim i%, IntSeribu%, IntLimaRatus% Dim IntSeratus%, IntLimaPuluh% Dim IntSepuluh%, IntLima%, IntSatu% Dim StrSeribu$, StrLimaRatus$, StrSeratus$ Dim StrLimaPuluh$, StrSepuluh$ Dim StrLima$, StrSatu$, StrRomawi$ IntSatu = IntAngka IntSeribu = IntAngka \ 1000 IntSatu = IntAngka Mod 1000 IntLimaRatus = IntSatu \ 500 IntSatu = IntAngka Mod 500 IntSeratus = IntSatu \ 100 IntSatu = IntAngka Mod 100 IntLimaPuluh = IntSatu \ 50 IntSatu = IntAngka Mod 50 IntSepuluh = IntSatu \ 10 IntSatu = IntAngka Mod 10 IntLima = IntSatu \ 5 IntSatu = IntAngka Mod 5 For i = 0 To IntSeribu - 1 StrSeribu = StrSeribu + "M" Next If IntSeratus <> 4 Then For i = 0 To IntLimaRatus - 1 StrLimaRatus = StrLimaRatus + "D" Next End If For i = 0 To IntSeratus - 1 StrSeratus = StrSeratus + "C" Next If IntSeratus = 4 Then If IntLimaRatus = 1 Then StrSeratus = StrRomawi + "CM" Else: StrSeratus = StrRomawi + "CD" End If End If If IntSepuluh <> 4 Then For i = 0 To IntLimaPuluh - 1 StrLimaPuluh = StrLimaPuluh + "L" Next End If For i = 0 To IntSepuluh - 1 StrSepuluh = StrSepuluh + "X" Next If IntSepuluh = 4 Then If IntLimaPuluh = 1 Then StrSepuluh = StrRomawi + "XC"
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 13
![Page 14: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/14.jpg)
214215216217218219220221222223224225226227228229230231
232233
Else: StrSepuluh = StrRomawi + "XL" End If End If If IntSatu <> 4 Then For i = 0 To IntLima - 1 StrLima = StrLima + "V" Next End If For i = 0 To IntSatu - 1 StrSatu = StrSatu + "I" Next If IntSatu = 4 Then If IntLima = 1 Then StrSatu = StrRomawi + "IX" Else: StrSatu = StrRomawi + "IV" End If End If StrRomawi = StrSeribu + StrLimaRatus _ + StrSeratus + StrLimaPuluh _ + StrSepuluh + StrLima + StrSatu ROMAN = StrRomawiEnd Function
Baris kode pada: Form11
23
4
5
6
7
Option Explicit
Private Sub cmdKonversi_Click() Me.txtKonversi1.Text = _ ROMAN(CInt(Me.txtAngka.Text)) Me.txtKonversi2.Text = _ BASIS(CInt(Me.txtAngka.Text), 2) Me.txtKonversi3.Text = _ BASIS(CInt(Me.txtAngka.Text), 16) Me.txtKonversi4.Text = _ Huruf(CDbl(Me.txtAngka.Text))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
![Page 15: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/15.jpg)
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 1Cu&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 1C&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
![Page 16: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/16.jpg)
Gambar 16.7. Desain form Editor.
b. Baris Kode
Baris KodeBaris kode pada: Form11
2
3
4567891011
1314151617181920
2122232425262728
29303132
333435
363738
394041424344
45464748
Option Explicit
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
Dim TwipsInHimetric!'Private Sub EBold() With Me.rtbEditor If Not .SelBold Then .SelBold = True Else: .SelBold = False End If End WithEnd Sub'Private Sub EItalic() With Me.rtbEditor If Not .SelItalic Then .SelItalic = True Else: .SelItalic = False End If End WithEnd Sub
Private Sub EUnderline() With Me.rtbEditor If Not .SelUnderline Then .SelUnderline = True Else: .SelUnderline = False End If End WithEnd Sub
Private Sub ECut() Clipboard.SetText Me.rtbEditor.SelRTF Me.rtbEditor.SelText = vbNullStringEnd Sub
Private Sub ECopy() Clipboard.SetText Me.rtbEditor.SelRTFEnd Sub
Private Sub EPaste() Me.rtbEditor.SelRTF = Clipboard.GetTextEnd Sub
Private Sub EOpen() With Me.cdlEditor .DialogTitle = "Buka File" .CancelError = True .FileName = "" .Filter = "Rich Text Format (*.rtf)" & _ "|*.rtf|Word Document (*.doc)" & _ "|*.doc|Text Document (*.txt)" & _ "|*.txt|Semua File (*.*)|*.*" On Error Resume Next .ShowOpen: On Error GoTo 0 If .FileName = "" Then Exit Sub
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 16
![Page 17: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/17.jpg)
49505152
535455565758
596061626364
6566676869
70717273747576
7778798081828384858687
888990
919293
949595
96979899100101102
103104
Else: Me.rtbEditor.FileName = .FileName End If End WithEnd Sub
Private Sub EFont() With Me.cdlEditor .Flags = &H3 Or &H100 Or &H1 .FontBold = Me.rtbEditor.SelBold .FontItalic = Me.rtbEditor.SelItalic .FontUnderline = _ rtbEditor.SelUnderline .FontName = Me.rtbEditor.SelFontName .FontSize = Me.rtbEditor.SelFontSize .ShowFont rtbEditor.SelBold = .FontBold rtbEditor.SelItalic = .FontItalic rtbEditor.SelUnderline = _ .FontUnderline rtbEditor.SelColor = .Color rtbEditor.SelFontSize = .FontSize rtbEditor.SelFontName = .FontName End WithEnd Sub
Private Sub EGambar() Dim pic As StdPicture With Me.cdlEditor .DialogTitle = "Buka File" .CancelError = True .FileName = "" .Filter = "Gambar JPG (*.jpg)" & _ "|*.jpg|Gambar Bmp (*.bmp)" & _ "|*.bmp" On Error Resume Next .ShowOpen: On Error GoTo 0 If .FileName = "" Then Exit Sub Else: Set pic = LoadPicture(.FileName) Clipboard.Clear: Clipboard.SetData pic SendMessage rtbEditor.hwnd, &H302, 0, 0 rtbEditor.SelText = vbCrLf End If End WithEnd Sub
Private Sub ERight() Me.rtbEditor.SelAlignment = rtfRightEnd Sub
Private Sub ECenter() Me.rtbEditor.SelAlignment = rtfCenterEnd Sub
Private Sub ELeft() Me.rtbEditor.SelAlignment = rtfLeftEnd Sub
Private Sub ESave() With Me.cdlEditor .DialogTitle = "Simpan File" .CancelError = True .FileName = "" .Filter = "Rich Text File (*.rtf)" & _ "|*.rtf" On Error Resume Next .ShowSave: On Error GoTo 0 If .FileName = "" Then
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 17
![Page 18: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/18.jpg)
105106107108109110
111112113
114115116
117118119
120
121122123
124125126
127128129
130131132
133134135
136137138
139140141
142143144
145146147
148149150
151152153
154155156
Exit Sub Else: Error Resume Next Me.rtbEditor.SaveFile .FileName End If End WithEnd Sub
Private Sub ENew() Me.rtbEditor.Text = ""End Sub
Private Sub Form_Load() rtbEditor_SelChange: Call TambahkanGambar MeEnd Sub
Private Sub Form_Resize() On Error Resume Next Me.rtbEditor.Move 0, 0, Me.ScaleWidth, _ Me.ScaleHeightEnd Sub
Private Sub mnuEBold_Click() Call EBoldEnd Sub
Private Sub mnuECenter_Click() Call ECenterEnd Sub
Private Sub mnuECopy_Click() Call ECopyEnd Sub
Private Sub mnuECut_Click() Call ECutEnd Sub
Private Sub mnuEFont_Click() Call EFontEnd Sub
Private Sub mnuEGambar_Click() Call EGambarEnd Sub
Private Sub mnuEItalic_Click() Call EItalicEnd Sub
Private Sub mnuELeft_Click() Call ELeftEnd Sub
Private Sub mnuENew_Click() Call ENewEnd Sub
Private Sub mnuEOpen_Click() Call EOpenEnd Sub
Private Sub mnuEPaste_Click() Call EPasteEnd Sub
Private Sub mnuEQuit_Click() Unload MeEnd Sub
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 18
![Page 19: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/19.jpg)
157158159
160161162
163164165
166
167168169170
171172173
174175176177178179180181182183184185186187188189190191192193194195196
Private Sub mnuERight_Click() Call ERightEnd Sub
Private Sub mnuEUnderline_Click() Call EUnderlineEnd Sub
Private Sub mnuESave_Click() Call ESaveEnd Sub
Private Sub rtbEditor_MouseDown( _Button As Integer, Shift As Integer, _x As Single, y As Single) If Button = 2 Then Me.PopupMenu Me.mnuEditor, 2 Or 4 TambahkanGambar Me : End IfEnd Sub
Private Sub rtbEditor_SelChange() With Me.rtbEditor If .SelBold = True Then Me.mnuEBold.Checked = True Else: Me.mnuEBold.Checked = False End If If .SelItalic = True Then Me.mnuEItalic.Checked = True Else: Me.mnuEItalic.Checked = False End If If .SelUnderline = True Then Me.mnuEUnderline.Checked = True Else: Me.mnuEUnderline.Checked = False End If Me.mnuELeft.Checked = False Me.mnuECenter.Checked = False Me.mnuERight.Checked = False If .SelAlignment = 0 Then Me.mnuELeft.Checked = True ElseIf .SelAlignment = 1 Then Me.mnuERight.Checked = True ElseIf .SelAlignment = 2 Then Me.mnuECenter.Checked = True End If End With Call TambahkanGambar MeEnd Sub
c. Tes Program
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 19
![Page 20: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/20.jpg)
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: frmJAMNama Object Properti Pengaturan
Picture1
Name picLogoAutosize TrueAutoRedraw TrueBorderStyle 0-NoneDrawStyle 0-SolidFillStyle 1-TransparentPicture Terserah Anda
Timer1Name tmrJamInterval 100
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 20
![Page 21: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/21.jpg)
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 PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan1 Frame Caption Tebal Jarum2 Frame Caption Warna Jarum3 Label1 Caption Jam4 Label2 Caption Jam5 Label3 Caption Menit6 Label4 Caption Menit7 Label5 Caption Detik8 Label6 Caption Detik9 Label7 Caption Alamat &Gambar10 Text1 Name txtAlamat11 Combo1 Name cboTebalJam12 Combo2 Name cboTebalMenit13 Combo3 Name cboTebalDetik
14 Command1Name cmdAlamatCaption …
15 Command2Name cmdWarnaJamCaption …
16 Command3Name cmdWarnaMenitCaption …
17 Command4Name cmdWarnaDetikCaption …
18 Command5Name cmdOKCaption OKDefault True
19 Command6Name cmdCancelCaption CancelCancel 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 KodeBaris kode pada: Module11
2
Option Explicit
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
![Page 22: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/22.jpg)
3
4
567891011
12
1314
15
1617
18
Public Declare Function ShowCursor _Lib "user32" (ByVal bShow As Long) As Long
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
Const HWND_TOPMOST = -1Const HWND_NOTOPMOST = -2Const SWP_NOMOVE = &H2Const SWP_NOSIZE = &H1Const SWP_NOACTIVATE = &H10Const SWP_SHOWWINDOW = &H40Const TOPMOST_FLAGS = _ SWP_NOMOVE Or SWP_NOSIZE Public Const SPI_SETSCREENSAVEACTIVE = 17
Sub MakeNormal(iForm As Form) SetWindowPos iForm.hwnd, _ HWND_NOTOPMOST, 0, 0, 0, 0, TOPMOST_FLAGSEnd Sub
Sub MakeTopMost(iForm As Form) SetWindowPos iForm.hwnd, _ HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGSEnd Sub
Baris kode pada: frmJAM1
2345678
10111213141516171819202122232425262728293031323334
Option Explicit
Private WarnaJam&Private WarnaMenit&Private WarnaDetik&Private TebalJam%Private TebalMenit%Private TebalDetik%Private Alamat$
Sub Loading() On Error Resume Next Dim i, Sudut, X, Y, J GetSettings Me.picLogo.Picture = LoadPicture(Alamat) Me.KeyPreview = True MakeTopMost Me Me.BackColor = 0 Me.linJam(0).X1 = -100 Me.linJam(0).X2 = -200 With Me.picLogo .Cls .PaintPicture .Picture, 0, 0, _ .Width, .Height End With Me.picLogo.AutoSize = True For i = 0 To 10 If i > 0 Then Load linJam(i) linJam(i).Visible = True Next i Me.picLogo.Scale (-1, 1)-(1, -1) Sudut = J * 2 * Atn(1) / 15 linJam(J).X1 = 3 * Cos(Sudut) linJam(J).Y1 = 3 * Sin(Sudut) linJam(J).X2 = Cos(Sudut)
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 22
![Page 23: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/23.jpg)
353637
38
3940
414243
444546474849505152
535455565758596061
61
6263
6465666768
69
70717273
7475
76
7879
80818283848586
linJam(J).Y2 = Sin(Sudut) linJam(J).BorderColor = vbBlueEnd Sub
Private Sub Form_KeyDown( _KeyCode As Integer, Shift As Integer) Unload Me: EndEnd Sub
Private Sub Form_Load()Dim X X = SystemParametersInfo( _ SPI_SETSCREENSAVEACTIVE, 0, ByVal 0&, 0) Select Case UCase(Mid(Command$, 2, 1)) Case Is = "P" Unload Me: End: Exit Sub Case Is = "C" FSET.Show Unload Me Exit Sub Case Is = "A" MsgBox "Password tidak" & _ " disediakan", 64, "Informasi" Unload Me: End: Exit Sub Case Is = "S" X = ShowCursor(False) Me.Show Case Else X = ShowCursor(True) Unload Me: End: Exit Sub End SelectEnd Sub
Private Sub Form_MouseMove(Button As Integer, _Shift As Integer, X As Single, Y As Single) Me.TutupMouse X, YEnd Sub
Private Sub Form_Resize()On Error Resume Next Call Loading Me.Move 0, 0, Screen.Width, Screen.Height Me.picLogo.Move (Me.ScaleWidth - _ Me.picLogo.Width) / 2, _ (Me.ScaleHeight - Me.picLogo.Height) / 2End Sub
Private Sub Form_Unload(Cancel As Integer)Dim Ret MakeNormal Me Ret = SystemParametersInfo( _ SPI_SETSCREENSAVEACTIVE, 2, ByVal 0&, 0) Ret = ShowCursor(True)End Sub
Private Sub picLogo_MouseMove( _Button As Integer, Shift As Integer, _X As Single, Y As Single) TutupMouse X, YEnd Sub
Private Sub tmrJam_Timer()On Error Resume Next Const LenganJam = 10 Const LenganJam2 = 9 Const LenganJam3 = 8 Const LenganMenit = 7 Const LenganMenit2 = 6
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 23
![Page 24: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/24.jpg)
87888990919293949596
979899100101
102
103
104105106
107
108
109
110
111112113
115
116
117
118
119120121
122
123
124
125
126127128
129
130
131
132
Const LenganMenit3 = 5 Const LenganDetik = 4 Const LenganDetik2 = 3 Const LenganDetik3 = 2 Dim Sudut Static DetikAkhir If Second(Now) = DetikAkhir Then Exit Sub DetikAkhir = Second(Now) With Me Sudut = 0.5236 * (15 - (Hour(Now) + _ Minute(Now) / 60) + 0.2) .linJam(LenganJam).X1 = 0 .linJam(LenganJam).Y1 = 0 .linJam(LenganJam).X2 = 0.3 * Cos(Sudut) .linJam(LenganJam).Y2 = 0.3 * Sin(Sudut) .linJam(LenganJam).BorderColor = _ WarnaJam .linJam(LenganJam).BorderWidth = _ TebalDetik Sudut = 0.5236 * (15 - (Hour(Now) + _ Minute(Now) / 60) - 0.2) .linJam(LenganJam2).X1 = 0 .linJam(LenganJam2).Y1 = 0 .linJam(LenganJam2).X2 = 0.3 * _ Cos(Sudut) .linJam(LenganJam2).Y2 = 0.3 * _ Sin(Sudut) .linJam(LenganJam2).BorderColor = _ WarnaJam .linJam(LenganJam2).BorderWidth = _ TebalDetik Sudut = 0.5236 * (15 - (Hour(Now) + _ Minute(Now) / 60)) .linJam(LenganJam3).X1 = 0 .linJam(LenganJam3).Y1 = 0 .linJam(LenganJam3).X2 = 0.4 * _ Cos(Sudut) .linJam(LenganJam3).Y2 = 0.4 * _ Sin(Sudut) .linJam(LenganJam3).BorderColor = _ WarnaJam .linJam(LenganJam3).BorderWidth = _ TebalDetik Sudut = 0.1047 * (75 - (Minute(Now) + _ Second(Now) / 60) + 0.4) .linJam(LenganMenit).X1 = 0 .linJam(LenganMenit).Y1 = 0 .linJam(LenganMenit).X2 = 0.5 * _ Cos(Sudut) .linJam(LenganMenit).Y2 = 0.5 * _ Sin(Sudut) .linJam(LenganMenit).BorderColor = _ WarnaMenit .linJam(LenganMenit).BorderWidth = _ TebalMenit Sudut = 0.1047 * (75 - (Minute(Now) + _ Second(Now) / 60) - 0.4) .linJam(LenganMenit2).X1 = 0 .linJam(LenganMenit2).Y1 = 0 .linJam(LenganMenit2).X2 = 0.5 * _ Cos(Sudut) .linJam(LenganMenit2).Y2 = 0.5 * _ Sin(Sudut) .linJam(LenganMenit2).BorderColor = _ WarnaMenit .linJam(LenganMenit2).BorderWidth = _ TebalMenit Sudut = 0.1047 * (75 - (Minute(Now) + _
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 24
![Page 25: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/25.jpg)
133134135136137
138
139140141142143144
145
146147148149150151
152
153154155156157158
159
160161
162163
164
165
166
167
168
169
170
171172173174175176177178179180181
Second(Now) / 60)) .linJam(LenganMenit3).X1 = 0 .linJam(LenganMenit3).Y1 = 0 .linJam(LenganMenit3).X2 = 0.6 * Cos(Sudut) .linJam(LenganMenit3).Y2 = 0.6 * Sin(Sudut) .linJam(LenganMenit3).BorderColor = _ WarnaMenit .linJam(LenganMenit3).BorderWidth = _ TebalMenit Sudut = 0.1047 * (75 - Second(Now) + 0.2) .linJam(LenganDetik).X1 = 0 .linJam(LenganDetik).Y1 = 0 .linJam(LenganDetik).X2 = 0.6 * Cos(Sudut) .linJam(LenganDetik).Y2 = 0.6 * Sin(Sudut) .linJam(LenganDetik).BorderColor = _ WarnaDetik .linJam(LenganDetik).BorderWidth = _ TebalDetik Sudut = 0.1047 * (75 - Second(Now) - 0.2) .linJam(LenganDetik2).X1 = 0 .linJam(LenganDetik2).Y1 = 0 .linJam(LenganDetik2).X2 = 0.6 * Cos(Sudut) .linJam(LenganDetik2).Y2 = 0.6 * Sin(Sudut) .linJam(LenganDetik2).BorderColor = _ WarnaDetik .linJam(LenganDetik2).BorderWidth = _ TebalDetik Sudut = 0.1047 * (75 - Second(Now)) .linJam(LenganDetik3).X1 = 0 .linJam(LenganDetik3).Y1 = 0 .linJam(LenganDetik3).X2 = 0.7 * Cos(Sudut) .linJam(LenganDetik3).Y2 = 0.7 * Sin(Sudut) .linJam(LenganDetik3).BorderColor = _ WarnaDetik .linJam(LenganDetik3).BorderWidth = _ TebalDetik End WithEnd Sub
Sub GetSettings() WarnaJam = CLng(VBA.GetSetting("Jam", _ "Warna", "Jam", CLng(vbRed))) WarnaMenit = CLng(VBA.GetSetting("Jam", _ "Warna", "Menit", CLng(vbGreen))) WarnaDetik = CLng(VBA.GetSetting("Jam", _ "Warna", "Detik", CLng(vbBlue))) TebalJam = CStr( _ VBA.GetSetting("Jam", "Tebal", "Jam", "5")) TebalMenit = CStr( _ VBA.GetSetting("Jam", "Tebal", "Jam", "5")) TebalDetik = CStr( _ VBA.GetSetting("Jam", "Tebal", "Jam", "5")) Alamat = CStr(VBA.GetSetting("Jam", _ "Alamat", "Gambar", App.Path & "\Jam.Bmp"))End Sub
Sub TutupMouse(X As Single, Y As Single) Static xAkhir, yAkhir Dim xSkr, ySkr xSkr = X: ySkr = Y If xAkhir = 0 And yAkhir = 0 Then xAkhir = xSkr yAkhir = ySkr Exit Sub End If If xSkr <> xAkhir Or ySkr <> yAkhir Then Unload Me: End
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 25
![Page 26: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/26.jpg)
182183
End IfEnd Sub
Baris kode pada: frmSET1
2345689101112131415
161718
192021
22
23
242526
272829
3031323334
353637383940414243
4445
46
47
48
49
50
Option Explicit'Private Sub cmdAlamat_Click() With Me.dlgSet .DialogTitle = "Pilih Gambar" .Flags = 4096 .Filter = "File Gambar|*.jpg;*.bmp;*.gif" .CancelError = True On Error Resume Next .ShowOpen If .FileName <> "" Then Me.txtAlamat.Text = .FileName End If End WithEnd Sub
Private Sub cmdCancel_Click() Unload MeEnd Sub
Private Sub cmdOK_Click() SaveSettings: Unload MeEnd Sub
Private Sub cmdWarnaJam_Click() UbahWarna Me.cmdWarnaJamEnd Sub
Private Sub cmdWarnaMenit_Click() UbahWarna Me.cmdWarnaMenitEnd Sub
Private Sub cmdWarnaDetik_Click() UbahWarna Me.cmdWarnaDetikEnd Sub
Sub UbahWarna(ctl As Control) With Me.dlgSet .ShowColor: ctl.BackColor = .Color End WithEnd Sub
Private Sub Form_Load() Dim i As Integer For i = 1 To 10 Me.cboTebalJam.AddItem CStr(i) Me.cboTebalMenit.AddItem CStr(i) Me.cboTebalDetik.AddItem CStr(i) Next GetSettingsEnd Sub
Sub SaveSettings() VBA.SaveSetting "Jam", "Warna", "Jam", _ CStr(Me.cmdWarnaJam.BackColor) VBA.SaveSetting "Jam", "Warna", "Menit", _ CStr(Me.cmdWarnaMenit.BackColor) VBA.SaveSetting "Jam", "Warna", "Detik", _ CStr(Me.cmdWarnaDetik.BackColor) VBA.SaveSetting "Jam", "Alamat", "Gambar", _ Me.txtAlamat.Text VBA.SaveSetting "Jam", "Tebal", "Jam", _ Me.cboTebalJam.Text VBA.SaveSetting "Jam", "Tebal", "Menit", _
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 26
![Page 27: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/27.jpg)
51
52
5354
55
56
57
58
59
60
61
Me.cboTebalMenit.Text VBA.SaveSetting "Jam", "Tebal", "Detik", _ Me.cboTebalDetik.TextEnd Sub
Sub GetSettings() Me.cmdWarnaJam.BackColor = CLng( _ VBA.GetSetting("Jam", "Warna", "Jam", _ CLng(vbRed))) Me.cmdWarnaMenit.BackColor = CLng( _ VBA.GetSetting("Jam", "Warna", "Menit", _ CLng(vbGreen))) Me.cmdWarnaDetik.BackColor = CLng( _ VBA.GetSetting("Jam", "Warna", "Detik", _ CLng(vbBlue))) Me.cboTebalJam.Text = CStr( _ VBA.GetSetting("Jam", "Tebal", "Jam", "5")) Me.cboTebalMenit.Text = CStr( _ GetSetting("Jam", "Tebal", "Menit", "5")) Me.cboTebalDetik.Text = CStr( _ GetSetting("Jam", "Tebal", "Detik", "5")) Me.txtAlamat.Text = CStr( _ VBA.GetSetting("Jam", "Alamat", "Gambar", _ App.Path & "\Jam.Bmp"))End Sub
c. Tes Program
Anda tidak akan dapat menjalankan program. Anda harus membuat eksekusi dari project Anda. Klik menu FileMake 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
![Page 28: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/28.jpg)
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 PropertiPengaturan pada: frmPaintNo Objek Kontrol Properti Perubahan
1 Picture1
Name picLeftBorderStyle 0-NoneAlignment 3-Align LeftWidth 375(Posisi) (Sisi kiri Form)
2 Picture2
Name picBawahBorderStyle 0-NoneAlignment 3-Align BottomHeight 645(Posisi) (Sisi bawah Form)
3 Picture3
Name picGambarAutoRedraw TrueBorderStyle 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
![Page 29: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/29.jpg)
Pengaturan PropertiPengaturan pada: frmPaintNo Objek Kontrol Properti Perubahan
4 Option1
Name optToolIndex 0Height 375Width 375Style 1-GraphicPicture Gambar berformat ico
5 Option2
Name optToolIndex 1Height 375Width 375Style 1-GraphicPicture Gambar berformat ico
6 Option3
Name optToolIndex 2Height 375Width 375Style 1-GraphicPicture Gambar berformat ico
Pada picBawah gambarkan dua buah PictureBox, empat buah Label, dan sebuah ComboBox. Ubah propertinya seperti table di bawah.
Pengaturan PropertiPengaturan pada: frmPaintNo Objek Kontrol Properti Perubahan
7 Picture1
Name picPickBackColor HitamHeight 375Width 375
8 Picture2Name picColorAutoRedraw TrueWidth 3015
9 Label1 Caption Line Width
10 Label2Name lblXCaption X
11 Label3Name lblYCaption Y
12 Label4Name lblRGBAutoSize TrueCaption R
13 Combo1Name cboLineWidthText 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
![Page 30: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/30.jpg)
Baris KodeBaris kode pada: frmPaint1
2345
67
8
910
11
121314
15
1617181920
2122232425262728293031
3233
34
35
363738
39
40414243
44454647
Option Explicit
Dim X1!, Y1!, Y1!, Y2!, cX!, cY!, LX!, LY!,Dim PusatX!, PusatY!, Aspek!, Radius!, nTool%Dim WarnaDasar As OLE_COLORDim Seret As Boolean
Private Sub cboLineWidth_Change() Me.picGambar.DrawWidth = _ Val(Me.cboLineWidth.Text)End Sub
Private Sub cboLineWidth_Click() Me.picGambar.DrawWidth = _ Val(Me.cboLineWidth.Text)End Sub
Private Sub Form_Unload(Cancel As Integer) On Error Resume Next VB.SavePicture Me.picGambar.Image, _ "C:\Gambar.bmp"End Sub
Private Sub optTool_Click(Index As Integer) If Me.optTool(Index).Value = True Then nTool = Index End IfEnd Sub
Private Sub Form_Load() Dim i As Integer nTool = 100 BikinWarna With Me.cboLineWidth .AddItem "1" For i = 2 To 20 Step 2 .AddItem i Next End WithEnd Sub
Private Sub Form_Resize() Me.picGambar.Move picKiri.Width, 0, _ Me.ScaleWidth - Me.picKiri.Width, _ Me.ScaleHeight - Me.picBawah.HeightEnd Sub
Private Sub picColor_MouseUp( _Button As Integer, Shift As Integer, _X As Single, Y As Single) picPick.BackColor = picColor.Point(X, Y) WarnaDasar = picColor.Point(X, Y)End Sub
Private Sub picGambar_MouseDown( _Button As Integer, Shift As Integer, _X As Single, Y As Single)Select Case nTool Case 2 Me.picGambar.MousePointer = 99 Me.picGambar.MouseIcon = _ Me.optTool(2).PictureEnd Select If Button And 3 Then Seret = True X1 = X: Y1 = Y: X2 = X: Y2 = Y
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 30
![Page 31: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/31.jpg)
48495051
5253
545556575859606162636465
66
67686970717273747576
7778798081
828384858687888990919293949596
97
98
99100101102103
Me.picGambar.DrawMode = 10 Me.picGambar.ForeColor = WarnaDasar If nTool = 0 Then Me.picGambar.Line (X1, Y1)- _ (X2, Y2), , B ElseIf nTool = 1 Then If Lingkaran(X1, Y1, X2, Y2) Then picGambar.Circle (PusatX, _ PusatY), Radius, , , , Aspek Radius = 0 End If ElseIf nTool = 2 Then Me.picGambar.ForeColor = WarnaDasar Me.picGambar.Line (X1, Y1)-(X, Y) End If If Button = 2 Then Me.picGambar.FillStyle = vbFSSolid Me.picGambar.FillColor = WarnaDasar End If End IfEnd Sub
Private Sub picGambar_MouseMove( _Button As Integer, Shift As Integer, _X As Single, Y As Single) Dim clr&, R&, G&, B& If Seret Then If nTool = 0 Then picGambar.ForeColor = WarnaDasar picGambar.Line (X1, Y1)-(X2, Y2), , B X2 = X: Y2 = Y picGambar.Line (X1, Y1)-(X2, Y2), , B ElseIf nTool = 1 Then If Lingkaran(X1, Y1, X2, Y2) Then picGambar.Circle (PusatX, PusatY), _ Radius, , , , Aspek Radius = 0 End If X2 = X: Y2 = Y If Lingkaran(X1, Y1, X2, Y2) Then picGambar.Circle (PusatX, PusatY), _ Radius, , , , Aspek Radius = 0 End If ElseIf nTool = 2 Then Me.picGambar.Line (X1, Y1)-(X, Y) X1 = X: Y1 = Y Me.picGambar.Line (X1, Y1)-(X, Y) End If End If Me.lblX.Caption = "X = " & X Me.lblY.Caption = "Y = " & Y clr = Me.picGambar.Point(X, Y) R = clr Mod 256 G = (clr \ 256) Mod 256 B = clr \ 256 \ 256 lblRGB.Caption = " R = " & G & ", G = " & _ G & ", B = " & B & " - " & clrEnd Sub
Private Sub picGambar_MouseUp( _Button As Integer, Shift As Integer, _X As Single, Y As Single) If Seret Then Seret = False Me.picGambar.ForeColor = WarnaDasar Me.picGambar.DrawMode = vbCopyPen If nTool = 0 Then
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 31
![Page 32: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/32.jpg)
104105106107
108109110111112113114115116
117118119120121122123124125126127128129130
131132133134135136137
138
139
140
141142
Me.picGambar.Line (X1, Y1)-(X, Y), , B ElseIf nTool = 1 Then If Lingkaran(X1, Y1, X2, Y2) Then picGambar.Circle (PusatX, PusatY), _ Radius, , , , Aspek Radius = 0 End If ElseIf nTool = 2 Then Me.picGambar.Line (X1, Y1)-(X, Y) End If Me.picGambar.FillStyle = vbFSTransparent End If Me.picGambar.MousePointer = 0End Sub
Private Function Lingkaran(iX1, iY1, iX2, iY2) LX = Abs(iX2 - iX1) If LX <> 0 Then LY = Abs(iY2 - iY1) Aspek = Abs(LY / LX) If LX > LY Then Radius = LX / 2 Else: Radius = LY / 2 End If PusatX = iX1 + (iX2 - iX1) / 2 PusatY = iY1 + (iY2 - iY1) / 2 End If Lingkaran = LXEnd Function
Sub BikinWarna() Dim i%, HalfPic!, HPic As!, WPic As! WPic = Me.picColor.ScaleWidth HPic = Me.picColor.ScaleHeight HalfPic = Me.picColor.ScaleHeight / 2 For i = 0 To 7 Me.picColor.Line (i * (WPic / 8), _ 0)-Step(400, HalfPic), QBColor(i), BF Me.picColor.Line (i * (WPic / 8), _ HalfPic)-Step(400, _ HPic), QBColor(i + 8), BF Me.picColor.Line (i * (WPic / 8), _ 0)-Step(400, HalfPic), QBColor(15), B Me.picColor.Line (i * (WPic / 8), _ HalfPic)-Step(400, _ HPic - 20), QBColor(15), B NextEnd 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
![Page 33: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/33.jpg)
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 PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan
1 Picture1
Name picBrightAutoRedraw TrueAutoSize TrueScaleMode 3-Pixel
2 CommonDialog1Name cdlSave
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 KodeBaris kode pada: Form1
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 33
![Page 34: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/34.jpg)
1
2
3
4
567
891011
121314
151617181920212223
242526272829
3031323334353637
383940
4142434445464748
495051
Option Explicit
Private Declare Function _SetPixelV Lib "gdi32" ( _ByVal hDC As Long, ByVal X&, ByVal Y&, _ByVal crColor As Long) As Byte
Private Declare Function _GetPixel Lib "gdi32" (ByVal hDC As Long, _ByVal X As Long, ByVal Y As Long) As Long
Const NilaTajam = 110
Private Sub mnuEditBrightness_Click()Dim Brightness As SingleDim WarnaBaru&, X%, Y%, R%, G%, B%
Brightness = NilaTajam / 100 For X = 0 To picBright.ScaleWidth For Y = 0 To picBright.ScaleHeight WarnaBaru = GetPixel( _ picBright.hDC, X, Y) R = (WarnaBaru Mod 256) B = (Int(WarnaBaru / 65536)) G = ((WarnaBaru - (B * 65536) _ - R) / 256) R = R * Brightness B = B * Brightness G = G * Brightness If R > 255 Then R = 255 If R < 0 Then R = 0 If B > 255 Then B = 255 If B < 0 Then B = 0 If G > 255 Then G = 255 If G < 0 Then G = 0
SetPixelV picBright.hDC, X, Y, RGB(R, G, B) Next Y If X Mod 10 = 0 Then picBright.Refresh Next X picBright.RefreshEnd Sub
Private Sub mnuFileOpen_Click() With Me.cdlSave .DialogTitle = "Open" .Filter = "Gambar|*.bmp;*jpg;*gif" .CancelError = False .ShowOpen If Len(.FileName) <> 0 Then Me.picBright.Picture = _ LoadPicture(.FileName) End If End WithEnd Sub
Private Sub mnuFileSaveAs_Click() With Me.cdlSave .DialogTitle = "Save As" .Filter = "Bmp|*.bmp" .CancelError = False .ShowSave If Len(.FileName) <> 0 Then SavePicture Me.picBright.Image, _ .FileName End If End WithEnd Sub
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 34
![Page 35: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/35.jpg)
c. Tes Program
Jalankan program, klik menu FileOpen, cari sebuah file gambar bitmap (bmp), klik menu EditBrightness. Efek brightness gambar akan bertambah. Klik kembali menu EditBrightness 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 tblMitraNama Field Tipe Ukuran
NO MITRA Text 10ID1 Number Long IntegerID2 Number Long IntegerNAMA MITRA Text 50Primary Index pada: NO MITRA
Isikan sebanyak 20 (dua puluh) data ke dalam tblMitra tersebut, data seperti pada table di bawah ini.
Nama Tabel tblMitraNO MITRA ID1 ID2 NAMA MITRA070510001 0 1 AGUNG VIANSASTRA NOVIAN070510002 1 1 SYAIFULAH070510003 1 2 AJAT JATNIKA070510004 2 1 PURBADI070510005 2 2 SAEPUL MIKDAR070510006 2 3 ARIF PERMANA070510007 2 4 YUDI ARMAN070510008 3 1 SANTOSO070510009 3 2 ABE HARIS A.070510010 3 3 SUBANA070510011 3 4 RITA ROSITA070510012 3 5 AYU DEWI070510013 3 6 SUHARYANTO070510014 3 7 FANNY PRATIWI R.070510015 3 8 RUDI PRAWIRANEGARA070510016 4 1 RETNO OKTAVIANI070510017 4 2 IRMA IRMAYANTI070510018 4 3 RUSMANJAYA070510019 4 4 RADEN ZAKARIA070510020 4 5 MOH. SANAJI
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 35
![Page 36: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/36.jpg)
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 PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan1 Label1 Caption No. Mitra2 Combo1 Name cboNoMitra
3 Command1Name cmdNamaCaption &Baca Nama
4 TreeView1
Name trvAdoIndentation 100FullRowSelect TrueHotTracking TrueLabelEdit 1-tvwManual
5 ListView1
Name lvwMitraFullRowSelect TrueGridLines TrueLabelEdit 1-lvwManualView 3-lvwReport
6 Adodc1Name adoDataAlign 2-vbAlignBottom
7 ImageList1Name imlIkonImageHeight 16ImageWidth 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
![Page 37: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/37.jpg)
Gambar 16.18. Desain form.
c. Baris Kode
Baris KodeBaris kode pada: Module1123456
7
89101112131415161718
1920
21
2223242526272829303132333435363738
3940414243
44454647
4849505152
Option ExplicitPublic NoMitraLv(10, 100, 100) As StringPublic NamaMitraLv(10, 100, 100) As StringPublic DS$(100, 100)Public NDL$(10, 100, 100)Public Const iJumDs As Integer = 2' Function TentukanIDDSAll(iID As String _) As String On Error Resume Next Dim nID(100) As String, nID1$, nID2$ Dim i&, r&, s&, t&, J%, iSpr% iSpr = InStr(iID, "-") nID1 = Mid(iID, 1, Val(iSpr) - 1) nID2 = Mid(iID, (iSpr + 1)) r = nID2 - 1 s = r * iJumDs + 1 t = s + iJumDs - 1 For i = s To t TentukanIDDSAll = TentukanIDDSAll & _ CStr(CLng(nID1 + 1)) & "-" & CStr(i) & "%" Next End Function'Function TentukanID_DS(iID As String, _Optional N As Integer = 0) As String On Error Resume Next Dim nID(100) As String Dim i&, J%, iSpr%, IDAll As String IDAll = TentukanIDDSAll(iID) J = 1 For i = 1 To Len(IDAll) iSpr = InStr(i, IDAll, "%") If iSpr <> 0 Then nID(J) = Mid(IDAll, i, iSpr - i) i = iSpr J = J + 1 Else Exit For End If Next TentukanID_DS = nID(N)End Function'Function NoMitratoID$(NoMitra As String)On Error Resume Next If NoMitra <> "" Then With FTreeView.adoData .RecordSource = _ "SELECT * FROM " & _ "tblMitra WHERE [NO MITRA]='" _ & NoMitra & "'" .Refresh With .Recordset If .RecordCount <> 0 Then NoMitratoID = ![ID1] _ & "-" & ![ID2] Else NoMitratoID = "" End If End With End With
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 37
![Page 38: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/38.jpg)
5354
5556575859
6061626364656667686970
71727374757677787980
818283848586878889909192
End IfEnd Function'Function NamaMitra$(NoMitra$)On Error Resume Next If NoMitra$ <> "" Then With FTreeView.adoData .RecordSource = "SELECT * FROM " & _ "tblMitra WHERE [NO MITRA]='" & _ NoMitra$ & "'" & _ " OR Right([NO MITRA],4) ='" & _ Right(NoMitra, 4) & "'" .Refresh With .Recordset If .RecordCount <> 0 Then NamaMitra = ![NAMA MITRA] Else NamaMitra$ = "" End If End With End With End IfEnd Function'Function IDtoNoMitra$(iID As String) On Error Resume Next Dim nID1$, nID2$, iSpr% If iID <> "" Then If Len(iID) > 1 Then iSpr = InStr(iID, "-") nID1 = Mid(iID, 1, Val(iSpr) - 1) nID2 = Mid(iID, (iSpr + 1)) With FTreeView.adoData .RecordSource = _ "SELECT * FROM " & _ "tblMitra WHERE [ID1]=" & _ nID1 & " AND [ID2]=" & nID2 & "" .Refresh With .Recordset If .RecordCount <> 0 Then IDtoNoMitra = ![NO MITRA] Else IDtoNoMitra = "" End If End With End With End If End IfEnd Function
Baris kode pada: Form11
2
34567
89
101112
Option Explicit'Dim myList As ListItem'Private Sub cboNoMitra_Click() On Error Resume Next Call BuatTreeLevel(Me.cboNoMitra.Text) Set myList = Me.lvwMitra.FindItem( _ Me.cboNoMitra.Text, 1, , 1) myList.EnsureVisible myList.Selected = True Me.lvwMitra.SetFocusEnd Sub'Private Sub cmdNama_Click() Me.LihatNamaEnd Sub
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 38
![Page 39: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/39.jpg)
131415161718192021
22
23242526
2728
29
30
31323334353637
383940
41424344
45
4647
4849505152535455565758
5960
61
'Private Sub Form_Load() Set Me.trvAdo.ImageList = Me.imlIkon Set Me.lvwMitra.Icons = Me.imlIkon Set Me.lvwMitra.ColumnHeaderIcons = Me.imlIkon Set Me.lvwMitra.SmallIcons = Me.imlIkon Call BuatKolom Me.Show With Me.adoData .ConnectionString = _ "Provider=Microsoft" & _ ".Jet.OLEDB.4.0;Data Source=" & _ App.Path & "\data.mdb;" & _ "Persist Security Info=False" .RecordSource = _ "Select * From tblMitra Order" & _ " By RIGHT([NO MITRA],4)" .Refresh With .Recordset While Not .EOF Me.cboNoMitra.AddItem _ CStr(![NO MITRA]) Set myList = Me.lvwMitra.ListItems _ .Add(, , Format( _ .AbsolutePosition, "000") , 1, 1) myList.SubItems(1) = _ CStr(![NO MITRA]) myList.SubItems(2) = _ CStr(![NAMA MITRA]) .MoveNext DoEvents Wend End With End With Me.cboNoMitra.ListIndex = 0End Sub'Sub TambahNode(X%, i%, A%, B%) On Error Resume Next DS$(B, i) = TentukanID_DS(NoMitratoID( _ NDL$(A - 1, X, i)), B) NDL$(A, B, i) = IDtoNoMitra(DS(B, i)) NoMitraLv(A, B, i) = NDL$(A, B, i) With Me.trvAdo.Nodes .Add "M-" & NoMitraLv(A - 1, X, i), _ tvwChild, "M-" & NoMitraLv(A, B, i), _ NoMitraLv(A, B, i), 1, 2 NamaMitraLv(A, B, i) = _ NamaMitra(NoMitraLv(A, B, i)) End WithEnd Sub'Sub BuatTreeLevel(NoMitra$) Dim nID$, i%, J%, K%, L%, M%, N%, O%, X% On Error Resume Next nID = NoMitratoID(NoMitra$) With Me.trvAdo.Nodes .Clear .Add , , "M-" & NoMitra, NoMitra, 1, 2 For X = 1 To 1 For i = 1 To iJumDs DS$(X, i) = TentukanID_DS(nID, i) NDL$(1, X, i) = _ IDtoNoMitra(DS(X, i)) NoMitraLv(1, X, i) = NDL$(1, X, i) .Add "M-" & NoMitra, tvwChild, _ "M-" & NoMitraLv(1, X, i), _ NoMitraLv(1, X, i), 1, 1
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 39
![Page 40: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/40.jpg)
62636465666768697071727374757677787980818283848586
878889909192939495
96979899100101102103
104105106
107108109110111112113
If DS$(X, i) <> "" Then For J = 1 To iJumDs TambahNode X, i, 2, J If DS$(J, i) <> "" Then For K = 1 To iJumDs TambahNode J, i, 3, K If DS$(K, J) <> "" Then For L = 1 To iJumDs TambahNode K, J, 4, L If DS$(L, K) <> "" Then For M = 1 To iJumDs TambahNode L, K, 4, M Next End If Next End If Next End If Next End If Next Next End With Call SimpanTagEnd Sub'Sub SimpanTag() Dim i As Integer With Me.trvAdo For i = 1 To .Nodes.Count .Nodes(i).Tag = .Nodes(i).Text .Nodes(i).Selected = True Next End WithEnd Sub'Sub LihatNama() Dim i As Integer With Me.trvAdo If .Nodes(1).Tag = "" Then Me.SimpanTag End If For i = 1 To .Nodes.Count .Nodes(i).Text = .Nodes(i).Text & _ " -=> " & NamaMitra(.Nodes(i).Tag) Next End WithEnd Sub'Sub BuatKolom() With Me.lvwMitra.ColumnHeaders .Add , , "No", 800, , 1 .Add , , "No Mitra", 1500, , 2 .Add , , "Nama Mitra", 2800, , 3 End WithEnd 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
![Page 41: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/41.jpg)
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 IndentasimnuFile &File 0mnuFileNew &New Ctrl+N 1mnuFileOpen &Open Ctrl+O 1Spr11 - 1mnuFileSave &Save Ctrl+S 1mnuFileSaveAs Save &As... F12 1mnuFileExit E&xit Ctrl+Q 1mnuEdit &Edit 0mnuEditUndo &Undo Ctrl+Z 1mnuEditRedo &Redo Ctrl+Y 1Spr21 - 1mnuEditCut C&ut Ctrl+X 1mnuEditCopy &Copy Ctrl+C 1mnuEditPaste &Paste Ctrl+V 1mnuView &View 0mnuViewWeb &Web Page Ctrl+W 1
Masukkan objek kontrol-objek kontrol berikut ini, dan atur properti-propertinya:
Pengaturan PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan
1 Picture1
Name picTopAlign 1-Align TopBorderStyle 0-NonoHeight 855
2 RichTextBox1Name rtbHTMLAppearance 1-FlatScrollBar 3-Both
3 CommonDialog1 Name cdlHTML
4 ImageList1Name imlHTMLImageHeight 16ImageWidth 16
Pada kontrol ImageList, masukkan picture sebanyak 9 (sembilan) buah. Picture-picture ini bisa Anda dapatkan pada CD.
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 41
![Page 42: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/42.jpg)
Pada picTop, gambarkan objek kontrol-objek kontrol berikut ini dan atur properti-propertinya.
Pengaturan PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan
5 ToolBar1Name tblHTMLBorderStyle 0-ccNoneStyle 1-tbrFlat
6 Combo1Name cboFormatStyle 2-DropDownListSorted True
7 Combo2Name cboPropertiStyle 2-DropDownListSorted True
8 Combo1Name cboInsertStyle 2-DropDownListSorted True
9 HScrollBar1
Name hscRGBIndex 0Max 255LargeChange 1SmallChange 1Value 90
10 HScrollBar2
Name hscRGBIndex 1Max 255LargeChange 1SmallChange 1Value 110
11 HScrollBar3
Name hscRGBIndex 2Max 255LargeChange 1SmallChange 1Value 140
12 Picture1Name picWarnaBackColor 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 tlbHTMLIndex Style ToolTipText Image
1 0-tbrDefault New (Ctrl+N) 12 0-tbrDefault Open (Ctrl+O) 23 0-tbrDefault Save (Ctrl+S) 34 3-tbrSeparator5 0-tbrDefault Cut (Ctrl+X) 46 0-tbrDefault Copy (Ctrl+C) 57 0-tbrDefault Paste (Ctrl+V) 68 3-tbrSeparator9 0-tbrDefault Undo (Ctrl+Z) 710 0-tbrDefault Redo (Ctrl+Y) 811 3-tbrSeparator12 0-tbrDefault Bowse (Ctrl+W) 9
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 42
![Page 43: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/43.jpg)
Gambar 16.20. Desain Form.
Tambahkan dua buah Module pada project Anda, namai dengan: mdlHTML dan mdlUndo.
b. Baris Kode
Baris KodeBaris kode pada: mdlHTML1
2
3
456
789101112
13
14
1516
17
181920
Option Explicit
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
Function MyShell(PathAndFile As String, _Optional Parameters As String = "", _Optional ShowCmd As Long _= vbNormalNoFocus) As Long Dim Path As String, File As String On Error Resume Next Path = Left(PathAndFile, _ InStrRev(PathAndFile, "\")) While (Right$(Path, 1) = "\") Path = Left(Path, Len(Path) - 1) Wend File = Mid$(PathAndFile, _ InStrRev(PathAndFile, "\") + 1) MyShell = ShellExecute(0, vbNullString, _ File, Parameters, Path, ShowCmd) If MyShell < 32 Then Shell PathAndFile, _ ShowCmdEnd Function
Function StrukturAwal() As String 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>"End Function
Sub fFormat(FRM As Form, sFormat As String) Dim xClip As String, xHasil As String On Error Resume Next
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 43
![Page 44: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/44.jpg)
2122
232425
2627282930
313233
xClip = FRM!rtbHTML.SelText xHasil = "<" & sFormat & ">" & _ xClip & "</" & sFormat & ">" FRM!rtbHTML.SelRTF = Replace( _ FRM!rtbHTML.SelText, xClip, xHasil, , 2)End Sub
Sub fTAG(FRM As Form, sFormat As String) Dim Awal%, xHasil As String On Error Resume Next Awal% = FRM!rtbHTML.SelStart xHasil = "<" & sFormat & ">" & _ " " & "</" & sFormat & ">" FRM!rtbHTML.SelRTF = xHasilFRM!rtbHTML.SelStart = Awal + (Len(xHasil)\ 2)End Sub
Baris kode pada: mdlUndo1
23456
78910111213141516
17181920
212223
2425262728293031323334
35363738394041424344
Option Explicit
Private vItem As VariantPrivate UniqueNum&Public Dirty As BooleanPublic ColUndo As New CollectionPublic ColRedo As New Collection
Public Sub DeleteCollections() On Error Resume Next For Each vItem In ColUndo ColUndo.Remove 1 Next For Each vItem In ColRedo ColRedo.Remove 1 Next UniqueNum = 0End Sub
Public Sub UpdateUndo() On Error Resume Next UniqueNum = UniqueNum + 1 ColUndo.Add frmHTML.rtbHTML.Text, _ CStr(UniqueNum) If Dirty = False Then Exit Sub Dirty = TrueEnd Sub
Public Sub DoUnDo() On Error Resume Next With frmHTML.rtbHTML .Text = ColUndo.Item(ColUndo.Count) .Refresh ColRedo.Add ColUndo.Item(ColUndo.Count) ColUndo.Remove ColUndo.Count .Text = ColUndo.Item(ColUndo.Count) .Refresh End WithEnd Sub
Public Sub DoReDo() On Error Resume Next With frmHTML.rtbHTML .Text = ColUndo.Item(ColUndo.Count) .Refresh ColUndo.Add ColRedo.Item(ColRedo.Count) ColRedo.Remove ColRedo.Count .Text = ColUndo.Item(ColUndo.Count) .Refresh End With
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 44
![Page 45: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/45.jpg)
45
464748495051
End Sub
Public Sub ClearRedo() On Error Resume Next For Each vItem In ColRedo ColRedo.Remove 1 NextEnd Sub
Baris kode pada: frmHTML1
23
45678
9
10111213
141516171819202122
2324252627
2829303132333435
36373839404142
434445
46
Option Explicit
Dim BukaAlamat$, KonstWarna$Dim SudahSimpan As Boolean
Private Sub cboProperti_Click() On Error Resume Next rtbHTML.SelText = " " & Me.cboProperti & "=" Me.rtbHTML.SetFocusEnd Sub
Private Sub Form_QueryUnload( _Cancel As Integer, UnloadMode As Integer) Dim Pesan$ If Not (SudahSimpan) Then Cancel = 1 Pesan = MsgBox( _ "Akhir perubahan belum tersimpan" & _ "Klik Yes untuk menyimpan.", _ vbQuestion + vbYesNoCancel) If Pesan = vbYes Then mnuFileSave_Click: Cancel = 0 ElseIf Pesan = vbNo Then Cancel = 0 Else: Cancel = 1 Me.rtbHTML.SetFocus End If End IfEnd Sub
Private Sub mnuEditCopy_Click() With Me.rtbHTML Clipboard.SetText .SelText End WithEnd Sub
Private Sub mnuEditCut_Click() UpdateUndo With Me.rtbHTML Clipboard.SetText .SelText .SelText = vbNullString UpdateUndo End WithEnd Sub
Private Sub mnuEditPaste_Click() UpdateUndo With Me.rtbHTML .SelText = Clipboard.GetText UpdateUndo End WithEnd Sub
Private Sub mnuEditRedo_Click() DoReDoEnd Sub
Private Sub mnuEditUndo_Click()
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 45
![Page 46: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/46.jpg)
4748
495051
525354555657585960
616263646566
6768697071727374757677
78798081828384858687
888990919293949596979899100101102103104105
DoUnDoEnd Sub
Private Sub mnuFileExit_Click() Unload MeEnd Sub
Private Sub mnuFileNew_Click() With Me.rtbHTML .Text = StrukturAwal .SelStart = InStr(UCase(.Text), _ "</BODY>") - 2 End With SudahSimpan = True: BukaAlamat$ = "" Me.Caption = "HTML Maker"End Sub
Private Sub mnuFileOpen_Click() On Error Resume Next Dim i As Integer, sTag$ With Me.cdlHTML .DialogTitle = "Cari HTML" .Filter = "Web File|" & _ "*.htm;*.html;*.css;*.idb;*.xml|" & _ "Text File|" & _ "*.txt;*.log;*.inf;*.ini|" & _ "Semua File (*.*)|*.*" .FileName = "" .ShowOpen BukaAlamat$ = .FileName If BukaAlamat$ <> "" Then Me.rtbHTML.FileName = BukaAlamat$ sTag$ = "HTML Maker " & BukaAlamat$ Me.Caption = sTag$ SudahSimpan = True End If End WithEnd Sub
Private Sub mnuFileSave_Click() On Error Resume Next BukaAlamat$ = Mid(Me.Caption, 11) If Len(Me.Caption) > 11 Then rtbHTML.SaveFile LTrim(BukaAlamat$), 1 SudahSimpan = True Else mnuFileSaveAs_Click End IfEnd Sub
Private Sub mnuFileSaveAs_Click() On Error Resume Next Dim i As Integer, sTag$ With Me.cdlHTML .DialogTitle = "Save As..." .Flags = &H1000 Or 2 .Filter = "Web Page|*.htm;*.html" .CancelError = True .FileName = "" .ShowSave If .FileName <> "" Then Me.rtbHTML.SaveFile .FileName, 1 Caption = "HTML Maker " & .FileName BukaAlamat$ = .FileName SudahSimpan = True End If End WithEnd Sub
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 46
![Page 47: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/47.jpg)
106107108109110111112113114
115116117118119120
121122
123124
125126
127128
129130
131132
133134
135136137138139
140141142143144
Private Sub cboFormat_Click() On Error Resume Next If Me.rtbHTML.SelLength <> 0 Then fFormat Me, Me.cboFormat.Text Else fTAG Me, Me.cboFormat.Text End If Me.rtbHTML.SetFocusEnd Sub
Private Sub cboInsert_Click() On Error Resume Next Dim Teks$ Select Case LCase(Me.cboInsert.Text) Case "text" Teks$ = "<input type=" & """" & _ "text" & """" & " maxlength=" & _ """" & """" & ">" Case "radio" Teks$ = "<input type=" & """" & _ "radio" & """" & " value=" & _ """" & """" & " checked name=" & _ """" & "R" & """" & ">" Case "select" Teks$ = "<select size=" & """" & _ "1" & """" & " name=" & """" & _ "sct" & """" & ">" & vbCrLf & _ " <option value=" & """" & _ "value1 selected" & _ """" & ">Pilihan1" & _ vbCrLf & " </option>" & _ vbCrLf & "</select>" Case "submit" Teks$ = "<input type=" & """" & _ "submit" & """" & " value=" & _ """" & "Send" & """" & ">" Case "reset" Teks$ = "<input type=" & """" & _ "reset" & """" & ">" Case "button" Teks$ = "<input type=" & """" & _ "button" & """" & " value=" & _ """" & "Tombol" & """" & _ " OnClick=" & """" & """" & ">" Case "checkbox" Teks$ = "<input type=" & _ """" & "checkbox" & """" & _ " name=" & """" & "chk" & """" & _ " value=" & """" & "ON" & _ """" & ">" Case "textarea" Teks$ = "<textarea " & "name=" & _ """" & "txt" & """" & _ " rows=5 cols=20" & " wrap=" & _ """" & "off" & """" & ">" & _ vbCrLf & "</textarea>" End Select With Me.rtbHTML .SelText = Teks: .SetFocus End WithEnd Sub
Private Sub Form_Load() With Me.cboInsert .AddItem "Text": .AddItem "Submit" .AddItem "Reset": .AddItem "Button" .AddItem "Radio": .AddItem "Select"
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 47
![Page 48: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/48.jpg)
145146147148149150151152153154155156157158159160161162163164165166
167168170171172
173174
175
176177178179180181182183184
185186187188189190191
192193194
195
196197198199120121122123
.AddItem "CheckBox": .AddItem "TextArea" .ListIndex = 0 End With With Me.cboFormat .AddItem "B": .AddItem "I" .AddItem "U": .AddItem "H1" .AddItem "H2": .AddItem "H3" .AddItem "H4": .AddItem "H5" .AddItem "P": .AddItem "FONT" .AddItem "MARQUEE": .AddItem "BR" .AddItem "HR": .AddItem "OL" .AddItem "UL": .AddItem "A" .ListIndex = 0 End With With Me.cboProperti .AddItem "BGCOLOR": .AddItem "SIZE" .AddItem "SRC": .AddItem "HREF" .AddItem "NAME": .AddItem "TYPE" .AddItem "BACKGROUND": .AddItem "ALIGN" .AddItem "VALUE": .AddItem "WIDTH" .AddItem "HEIGHT": .ListIndex = 0 End With
mnuFileNew_Click hscRGB_Change 0 hscRGB_Change 1 hscRGB_Change 2End Sub
Private Sub Form_Resize() On Error Resume Next Me.rtbHTML.Move 0, picTop.Height, _ ScaleWidth, ScaleHeight - picTop.HeightEnd Sub
Private Sub mnuViewWeb_Click() Dim Pesan BukaAlamat$ = Mid(Me.Caption, 11) If Len(Me.Caption) > 11 Then rtbHTML.SaveFile LTrim(BukaAlamat$), 1 MyShell LTrim(BukaAlamat) Else rtbHTML.SaveFile LTrim(BukaAlamat$), 1 Pesan = MsgBox("Anda harus menyimpan" & _ " Web lebih dulu. Klik Yes untuk" & _ " menyimpan", vbQuestion + vbYesNo) If Pesan = vbYes Then mnuFileSaveAs_Click MyShell LTrim(BukaAlamat) Else: Exit Sub End If End IfEnd Sub
Private Sub picWarna_DblClick() rtbHTML.SelText = """" & KonstWarna & """"End Sub
Private Sub rtbHTML_KeyDown( _KeyCode As Integer, Shift As Integer) If KeyCode = Asc(vbTab) Then KeyCode = 0 rtbHTML.SelText = vbTab End If UpdateUndo If Shift = 2 Then If KeyCode = vbKeyZ Then DoUnDo
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 48
![Page 49: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/49.jpg)
124125126127128129130131132
133
134135
136
137138139140
141
142143144145146147148149150151152153
154155
156
157
158159160
Me.rtbHTML.Refresh End If If KeyCode = vbKeyY Then DoReDo Me.rtbHTML.Refresh End If End If UpdateUndoEnd Sub
Private Sub rtbHTML_KeyPress( _KeyAscii As Integer) SudahSimpan = FalseEnd Sub
Private Sub rtbHTML_MouseDown( _Button As Integer, Shift As Integer, _x As Single, y As Single) If Button = 2 Then Me.PopupMenu Me.mnuEdit, 2 Or 4 End IfEnd Sub
Private Sub tlbHTML_ButtonClick(ByVal Button _As MSComctlLib.Button) Select Case Button.Index Case 1: mnuFileNew_Click Case 2: mnuFileOpen_Click Case 3: mnuFileSave_Click Case 5: mnuEditCut_Click Case 6: mnuEditCopy_Click Case 7: mnuEditPaste_Click Case 9: mnuEditUndo_Click Case 10: mnuEditRedo_Click Case 12: mnuViewWeb_Click End SelectEnd Sub
Private Sub hscRGB_Change(Index As Integer) Me.picWarna.BackColor = _ RGB(Me.hscRGB(0).Value, hscRGB(1).Value, _ Me.hscRGB(2).Value) KonstWarna = "#" & _ CStr(Hex(Me.hscRGB(0).Value) & _ Hex(Me.hscRGB(1).Value) & _ Hex(Me.hscRGB(2).Value))End Sub
Private Sub hscRGB_Scroll(Index As Integer) hscRGB_Change IndexEnd 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”.
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 49
![Page 50: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/50.jpg)
4. Geser-geserkan ketiga buah scrollbar, sampai Anda menemukan warna yang menarik (tercetak pada picturebox di sebelahnya). Jika sudah, klik ganda picturebox tersebut.
5. Untuk melihat hasilnya, klik menu ViewWeb 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
![Page 51: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/51.jpg)
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 ProjetComponent... 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 PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan
1 SSTab1Name SSTab1Orientation 1-ssTabOrientationBottomStyle 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 PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan
1 WMPlayer1
Name mplMusicVisible FalseVolume -2500Style 1-ssStylePropertiPage
2 CommonDialog1Name dlgMusicMaxFileSize 1024
3 Slider1
Name sldMainMax 100SmallChange 5LargeChange 10
4 Label1
Name lblPosAutoSize TrueBackColor HitamFont Courier New, 48, Bold
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 51
![Page 52: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/52.jpg)
5 TimerName tmrSliderEnabled TrueInterval 900
6 Slider2
Name sldVolMax 100SmallChange 5LargeChange 10Orientation 1-ccOrientationVerticalTickStyle 3-sldNoTicks
7 Command1Name cmdPrevCaption |< P&rev
8 Command2Name cmdPlayCaption > &Play
9 Command3Name cmdStopCaption [] &Stop
10 Command4Name cmdNextCaption >| &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 PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan
11 ListView1
Name lvwLaguBackColor HitamFullRowSelect TrueGridLines TrueHotTracking TrueHideColumnHeader TrueHideSelection FalseView 3-lvwReport
12 Command1Name cmdBukaCaption &Buka
13 Command2Name cmdSimpanCaption &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
![Page 53: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/53.jpg)
b. Baris Kode
Baris KodeBaris kode pada: Form11
234567
8910
1112131415
161718
192021222324
252627
28
2930
31
3233343536373839404142434445464748
4950
Option Explicit
Private FileNames() As StringDim myList As ListItemDim Detik%, Menit%, strMenit$, strDetik$Dim FNum%, i%, JumList%, Waktu$Dim AlamatDefault$, SaveFile$, sFile$Dim PlayPause As Byte. LoadTips As String
Private Sub cmdBuka_Click() CariFileEnd Sub
Private Sub cmdNext_Click() Dim ListAktif As Integer With Me.lvwLagu PlayPause = 0 ListAktif = .SelectedItem.Index 'Pindah ke list berikutnya If ListAktif <= .ListItems.Count - 1 Then ListAktif = ListAktif + 1 Else 'Pindah ke list awal ListAktif = 1 End If .ListItems(ListAktif).Selected = True cmdPlay_Click End WithEnd Sub
Sub cmdPlay_Click()On Error Resume Next Dim Batas As%, sTag$, PlayFile$ 'Jika sebuah list pada listview terpilih If Not (Me.lvwLagu.SelectedItem _ Is Nothing) Then Me.cmdPlay.Caption = "|| &Pause" sTag = Me.lvwLagu.SelectedItem.Tag 'Nama file yang akan dimainkan PlayFile = sTag & _ Me.lvwLagu.SelectedItem.SubItems(1) If PlayPause = 0 Then PlayPause = 1 Me.mplMusic.FileName = PlayFile ElseIf PlayPause = 1 Then Me.mplMusic.Pause Me.cmdPlay.Caption = "> &Play" Me.tmrSilder.Enabled = False PlayPause = 2 ElseIf PlayPause = 2 Then PlayPause = 1 Me.cmdPlay.Caption = "|| &Pause" Me.tmrSilder.Enabled = True Me.mplMusic.Play Menit = 0 Detik = 0 End If tmrSilder.Enabled = True 'MEngatur nilai slider If Me.mplMusic.CurrentPosition > 0 Then Me.sldMain.Value = ( _ Me.mplMusic.CurrentPosition / _ Me.mplMusic.Duration) * 100
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 53
![Page 54: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/54.jpg)
51525354
5556575859
606162
636465666768
6970717273
7475767778798081828384
858687888990
91
9293949596979899
100101
102103104105106
End If TandaiLagu End IfEnd Sub
Private Sub cmdPrev_Click() Dim ListAktif As Integer With Me.lvwLagu PlayPause = 0 ListAktif = .SelectedItem.Index 'pindah ke list sebelumny If ListAktif > 1 Then ListAktif = ListAktif - 1 Else 'pindah ke list terakhir ListAktif = .ListItems.Count End If .ListItems(ListAktif).Selected = True cmdPlay_Click End WithEnd Sub
Private Sub cmdSimpan_Click()On Error Resume Next With Me.dlgMusik .DialogTitle = "Simpan PlayList" .Filter = "INOCHI PlayList " & _ "(*.pla)|*.pla" & _ "|Winamp PlayList (*.m3u)|*.m3u;" .FilterIndex = 2 .Flags = cdlOFNOverwritePrompt .FileName = "" .CancelError = True .ShowSave If .FileName <> "" Then SaveFile = .FileName SimpanPlayList End If End WithEnd Sub
Sub SimpanPlayList() FNum = FreeFile Open SaveFile For Output As #FNum Print #FNum, "#EXTM3UPlayList" Print #FNum, "#Programmed By: Agung Novian" Print #FNum, _ "#CopyRight © 2006 INOCHISoftware" Print #FNum, "#----=======> o <=======---" 'Menulisi pada file PlayList 'sesuai daftar pada ListView For i = 1 To Me.lvwLagu.ListItems.Count Print #FNum, Me.lvwLagu.ListItems(i).Tag & _ Me.lvwLagu.ListItems(i).SubItems(1) Next Print #FNum, "#---=======> o <=======----" Print #FNum, "#Makasih Udah pake program ini" Close #FNumEnd Sub
Private Sub cmdStop_Click() If Not (Me.lvwLagu.SelectedItem _ Is Nothing) Then Me.mplMusic.Stop tmrSilder.Enabled = False Me.sldMain.Value = 0 PlayPause = 0 Me.cmdPlay.Caption = "> &Play"
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 54
![Page 55: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/55.jpg)
107108
109110111112
113
114115
116117118119120121122123124
125
126127128129130
131
132133134135136137
138
139
140
141142143144145146147
148
149150151152153154155
End IfEnd Sub
Private Sub Form_Load() On Error Resume Next Dim sAwal As String, sAkhir As String PlayPause = 0 'Membuat tabel PlayList BuatTabel 'Menyamakan volume player 'dengan slider: sldVol Me.mplMusic.Volume = -Me.sldVol.Value * 2 JumList = 0 'Cara menjalankan file secara langsung '(mengklik ganda file dengan ekstensi .pla)" If Command <> "" Then For i = Len(Command) To 1 Step -1 sAkhir = Mid(Command, i, 1) If sAkhir = "\" Then sAkhir = Mid(Command, i + 1) sAwal = Mid(Command, 2, i - 2) Exit For End If Next ' If UCase(Right(Command, 5)) = _ "*.PLA" & """" Or _ UCase(Right(Command, 5)) = _ "*.m3u" & """" Then AlamatDefault = sAwal DaftarLagu Mid(Command, 2, Len(Command) - 2) Else sAwal = Mid(Command, 2, i - 1) sAkhir = Mid(Command, i + 1, Len(Command) _ - Len(sAwal) - 2) Set myList = Me.lvwLagu.ListItems.Add( _ , , Format(JumList + 1, "000")) Me.lvwLagu.ListItems(JumList + _ 1).Tag = sAwal & "\" myList.SubItems(1) = sAkhir End If cmdPlay_Click Else 'Membuka daftar lagu pada file Music.fla DaftarLagu App.Path & "\Music.pla" 'Menjalankan file Jika Daftar Lagu 'tidak kosong If Me.lvwLagu.ListItems.Count <> 0 Then'Menentukan baris ke..? yang akan dimainkan nList = CInt(VBA.GetSetting("MPlayer", _ "PlayList", "Index", 5)) Me.lvwLagu.ListItems(nList).Selected = True Me.lvwLagu.SetFocus Me.cmdPlay_Click End If End If JumList = Me.lvwLagu.ListItems.CountEnd Sub
Sub BuatTabel() 'Membuat Kolom pada ListView With Me.lvwLagu.ColumnHeaders .Clear .Add , , , 500 .Add , , , Me.lvwLagu.Width - 1100 .Add , , , 300 End WithEnd Sub
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 55
![Page 56: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/56.jpg)
156
157
158
159
160
161
162163164
165
166
167168169170171172173174175176177
178179180181
182
183184185186187188189190191192193
194195
197
198199200
Sub CariFile() On Error Resume Next Dim sAkhir As String, sAwal As String 'Mengatur Filter (ekstensi file yang 'bisa dipilih) dlgMusik.Filter = "File Musik " & _ "(*.mp3;*.mid;*.wav)" & _ "|*.mp3;*.mid;*.wav|" & _ "INOCHI PlayList (*.pla)|*.pla|" & _ "Winamp PlatList (*.m3u)|*.m3u" dlgMusik.FilterIndex = 1 'Menentukan flag (cdlOFNAllowMultiselect 'digunakan agar user diperbolehkan 'memilih lebih dari 1 file) dlgMusik.Flags = cdlOFNExplorer Or _ cdlOFNAllowMultiselect dlgMusik.DialogTitle = _ "Pilih satu atau beberapa lagu" dlgMusik.FileName = "" dlgMusik.CancelError = True dlgMusik.ShowOpen 'Memecah file-file terpilih FileNames() = Split(dlgMusik.FileName, _ vbNullChar) 'Mengidentifikasi jenis ektensi file If UCase(Right(dlgMusik.FileName, 4)) = _ ".PLA" Or UCase(Right( _ dlgMusik.FileName, 4)) = ".M3U" Then For i = Len(FileNames(0)) To 1 Step -1 sAkhir = Mid(FileNames(0), i, 1) If sAkhir = "\" Then sAkhir = Mid(FileNames(0), i + 1) sAwal = Mid(FileNames(0), 1, i - 1) Exit For End If Next AlamatDefault = sAwal DaftarLagu FileNames(0) Else 'Mengisi file terpilih ke dalam listview JumList = Me.lvwLagu.ListItems.Count If UBound(FileNames) > 0 Then For i = 1 To UBound(FileNames) Set myList = Me.lvwLagu.ListItems.Add( _ , , Format(JumList + i, "000")) Me.lvwLagu.ListItems(JumList + i).Tag = _ FileNames(0) & "\" myList.SubItems(1) = FileNames(i) Next ElseIf UBound(FileNames) = 0 Then For i = Len(FileNames(0)) To 1 Step -1 sAkhir = Mid(FileNames(0), i, 1) If sAkhir = "\" Then sAkhir = Mid(FileNames(0), i + 1) sAwal = Mid(FileNames(0), 1, i - 1) Exit For End If Next
Set myList = _ Me.lvwLagu.ListItems.Add( _ , , Format(JumList + 1, "000")) Me.lvwLagu.ListItems(JumList + _ 1).Tag = sAwal & "\" myList.SubItems(1) = sAkhir End If Me.SimpanDefaultPlayList
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 56
![Page 57: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/57.jpg)
201202
203
204205206207
208209210211
212
213214215216217
218
219220
221222
223
224225
226227
228229230231232
233234235236
237238
239
240
241242
End IfEnd Sub
Private Sub Form_Unload(Cancel As Integer) 'Menyimpan PlayList saat form ditutup If Me.lvwLagu.ListItems.Count >= 1 Then SimpanDefaultPlayList End IfEnd Sub
Private Sub lvwLagu_DblClick() PlayPause = 0 cmdPlay_ClickEnd Sub
Private Sub lvwLagu_MouseDown( _Button As Integer, Shift As Integer, _x As Single, y As Single) 'Menghapus daftar pada listview 'saat mengklik kanan If Button = 2 Then Me.lvwLagu.ListItems.Remove _ Me.lvwLagu.SelectedItem.Index End IfEnd Sub
Private Sub sldMain_Click() 'Mengubah posisi file yang dimainkan 'saat mengklik slider Me.tmrSilder.Enabled = False Me.mplMusic.CurrentPosition = ( _ Me.mplMusic.Duration / 100) * _ Me.sldMain.Value Me.tmrSilder.Enabled = TrueEnd Sub'Private Sub sldVol_Click() 'Mengubah volume dari Media Player Me.mplMusic.Volume = -Me.sldVol.Value * 2End Sub
Private Sub tmrSilder_Timer()On Error Resume Next 'Menampilkan tampilan detik 'file yang sedang dimainkan Detik = Round(Me.mplMusic.CurrentPosition, 0) If Detik >= 59 Then Detik = Detik Mod 60 End If Menit = Round( _ Me.mplMusic.CurrentPosition, 0) \ 60 strMenit = Format(Menit, "00") strDetik = Format(Detik, "00") Waktu = strMenit & ":" & strDetik Me.lblPos.Caption = Waktu 'Mengatur nilai slider If Me.mplMusic.CurrentPosition > 0 Then Me.sldMain.Value = ( _ Me.mplMusic.CurrentPosition / _ Me.mplMusic.Duration) * 100 End If 'Pindah ke file berikutnya saat posis 'file yang dimainkan sudah mencapai 'akhir durasi If Me.mplMusic.CurrentPosition >= _ Me.mplMusic.Duration Then cmdNext_Click End If
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 57
![Page 58: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/58.jpg)
243
244245246247248249250251252253254255256257
258259260261262263264265266267268269270
271
272273274275
276277278279280281282283284
285286287288289290291292293294
295296297298299300
End Sub
Function DaftarLagu(nFile As String) As Boolean Dim NextTip As String Dim InFile As Integer, Batas As Integer Dim i As Integer, sAwal$, sAkhir$ InFile = FreeFile If nFile = "" Then LoadTips = False Exit Function End If If Dir(nFile) = "" Then LoadTips = False Exit Function End If JumList = Me.lvwLagu.ListItems.Count 'Mengisi daftar dari file PlayList 'ke dalam ListView Open nFile For Input As InFile While Not EOF(InFile) Line Input #InFile, NextTip If Left(NextTip, 1) <> "#" Then i = i + 1 For Batas = Len(NextTip) To 1 Step -1 sAkhir = Mid(NextTip, Batas, 1) If sAkhir = "\" Then sAkhir = Mid(NextTip, Batas + 1) sAwal = Mid(NextTip, 1, Batas - 1) Exit For End If Next 'Mengisi daftar dari file PlayList 'ke dalam ListView Set myList = Me.lvwLagu.ListItems.Add( _ , , Format(JumList + i, "000")) If Mid(sAwal, 2, 2) <> ":\" Then sAwal = AlamatDefault & "\" & sAwal End If Me.lvwLagu.ListItems(JumList + _ i).Tag = sAwal & "\" myList.SubItems(1) = sAkhir End If Wend Close InFile DaftarLagu = True If JumList > 0 Then Me.lvwLagu.ListItems(1).Selected = True End IfEnd Function
Sub SimpanDefaultPlayList()On Error Resume Next Dim i As Integer sFile$ = App.Path & "\Music.pla" Open sFile For Output As #2 Print #2, "#EXTM3u" Print #2, "#PlayList" Print #2, "#Programmed By: Agung Novian" Print #2, "#CopyRight © 2006 INOCHISoftware" Print #2, "#----=======> o <=======----" 'Menulisi file PlayList sesuai banyaknya 'daftar pada PlayList If Me.lvwLagu.ListItems.Count > 0 Then For i = 1 To Me.lvwLagu.ListItems.Count Print #2, Me.lvwLagu.ListItems(i).Tag & _ Me.lvwLagu.ListItems(i).SubItems(1) Next End If
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 58
![Page 59: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/59.jpg)
301302303
304
305
306
307308309
310311312313
314315316
317318319
Print #2, "#----=======> o <=======----" Print #2, "#Makasih Udah pake program ini" Close #2 'menyimpan list terakhir dipilih VBA.SaveSetting "MPlayer", _ "PlayList", "Index", _ CStr(Me.lvwLagu.SelectedItem.Index)End Sub'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 With Me.lvwLagu For i = 1 To .ListItems.Count .ListItems(i).SubItems(2) = _ Replace(.ListItems(i).SubItems(2), _ "Ø", vbNullChar) Next .SelectedItem.SubItems(2) = "Ø" End WithEnd Sub
Private Sub sldMain_Scroll() sldMain_ClickEnd Sub
Private Sub sldVol_Scroll() sldVol_ClickEnd 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
![Page 60: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/60.jpg)
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 60
![Page 61: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/61.jpg)
BAB XVIIILATIHAN-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 PropertiPengaturan pada: frmLat1
Properti Perubahan Kegunaan
CaptionKalkulator Sederhana
Tampilan judul pada title bar form.
BorderStyle 1-FixedSingleMengubah bentuk title bar form (hanya dilengkapi dengan sebuah tombol close).
Font Courier New, 10
Mengubah bentuk dan ukuran font dari form, sehingga saat Anda menambahkan objek kontrol pada form, maka secara otomatis bentuk dan ukuran font dari objek kontrol tersebut mengikuti bentuk dan ukuran font dari form.
Icon Gambar ikon (ico)Mengubah ikon form dan ikon program saat dikompail menjadi file eksekusi (exe).
StartUpPosition 2-CenterScreen
Mengatur posisi form pada layar, agar form otomatis berada di tengah-tengah layar saat program dijalankan.
Masukkan objek kontrol-objek kontrol dan ubah propertinya, sebagai berikut:
Pengaturan PropertiPengaturan pada: frmLat1No Kontrol Properti Perubahan Kegunaan
1 Label1
Caption Bilangan &1Mengubah teks yang ditampilkan.
AutoSize 1-TrueAgar ukuran Label mengikuti panjangnya teks yang tercetak.
BackStyle 0-TransparentAgar warna dasar Label transparan/ mengikuti warna dasar form.
TabIndex 0
Mengatur pelarian fokus saat Anda menekan tombol Tab pada keyboard.
2 Label2 Caption &Operator Sda.
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 61
![Page 62: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/62.jpg)
AutoSize 1-True Sda.BackStyle 0-Transparent sda.TabIndex 2 Sda.
3 Label3
Caption Bilangan &2 Sda.AutoSize 1-True Sda.BackStyle 0-Transparent Sda.TabIndex 4 Sda.
4 Label4
Caption Hasil Sda.AutoSize 1-True Sda.BackStyle 0-Transparent Sda.TabIndex 7 Sda.
5 Text1Name txtBil1
Memberi identitas pada TextBox, penting sekali untuk mengenalkan TextBox pada program.
Text dikosongkan Mengkosongkan teks.TabIndex 1 Sda.
6 Text2Name txtBil2 Sda.Text dikosongkan Sda.TabIndex 5 Sda.
7 Text3
Name txtHasil Sda.Text dikosongkan Sda.TabIndex 8 Sda.
8 Combo1
Name cboOprMemberi identitas pada Combo, penting!
Style2-DropDown List
Mengubah bentuk tampilan list ComboBox.
TabIndex 3 Sda.
9 Command1
Name cmdProsesMemberi identitas pada cmdProses, penting!
Caption &ProsesMengubah teks yang ditampilkan.
TabIndex 6 Sda.
10 Frame1
Caption dikosongkanMengubah teks yang ditampilkan.
Height 30
Mengubah tinggi Frame. Nilai 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 KodeBaris kode pada: frmLat11 Option Explicit
'Event saat form akan ditampilkan
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 62
![Page 63: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/63.jpg)
23
4
567891011
12
13141516
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Private Sub Form_Load() With Me.cboOpr 'Mengisi list pada cboOpr 'dengan text = "+" .AddItem "+" 'Mengisi list pada cboOpr 'dengan text = "-" dst... .AddItem "-" .AddItem "*" .AddItem "/" .AddItem "\" .AddItem "mod" End WithEnd Sub
'Event saat mengklik tombol cmdProsesPrivate Sub cmdProses_Click() 'Deklarasi Variabel Dim Bil1 As Long Dim Bil2 As Long Dim Opr As String Dim Hasil As Long 'Mengisi var Bil1 dengan text 'pada txtBil1 dengan sebelumnya 'dikonversikan ke dalam tipe data Long Bil1 = CLng(Me.txtBil1.Text) 'Mengisi var Bil2 dengan text 'pada txtBil1 dengan sebelumnya 'dikonversikan ke dalam tipe data Long Bil2 = CLng(Me.txtBil2.Text) 'var Opr dengan text dari cboOpr Opr = Me.cboOpr.Text 'Menyeleksi nilai dari Opr Select Case Opr 'Jika Opr adalah "+" maka Case "+" 'isi nilai Hasil dengan operasi 'penjumlahan Bil1 dan Bil2 Hasil = Bil1 + Bil2 'Jika Opr adalah "-" maka Case "-" 'isi nilai Hasil dengan operasi 'pengurangan Bil1 dan Bil2 Hasil = Bil1 - Bil2 'Jika Opr adalah "*" maka Case "*" 'isi nilai Hasil dengan operasi 'perkalian Bil1 dan Bil2 Hasil = Bil1 * Bil2 'Jika Opr adalah "/" Case "/" 'isi nilai Hasil dengan operasi 'pembagian Bil1 dan Bil2 Hasil = Bil1 / Bil2 'Jika Opr adalah "\" '"\" adalah simbol pembagian 'bilangan bulat (DIVide) 'yang mengabaikan nilai desimal 'dari nilai yang dihasilkan Case "\" 'isi nilai Hasil dengan operasi 'pembagian bulat Bil1 dan Bil2 Hasil = Bil1 \ Bil2 'Jika Opr adalah "mod" '"mod" adalah simbol pembagian 'Modulus (sisa pembagian) Case "mod" 'isi nilai Hasil dengan operasi
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 63
![Page 64: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/64.jpg)
3233
3435
'modulus Bil1 dan Bil2 Hasil = Bil1 Mod Bil2 End Select 'Menampilkan nilai Hasil pada txtHasil Me.txtHasil.Text = HasilEnd 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 PropertiPengaturan pada: frmLat2No Objek Kontrol Properti Perubahan1 Label1 Caption &Jurusan2 Combo1 Name cboJurusan3 Label2 Caption &Kelas4 Combo2 Name cboKelas5 Label3 Caption usia
6 Option1Name optUsiaCaption &DewasaIndex 0
7 Option2Name optUsiaCaption &Anak-anakIndex 1
8 Command1Name cmdProsesCaption &Proses
9 Frame1Caption DikosongkanHeight 30
10 Label4 Caption TARIF
11 Text1Name txtTarifAlignment 1-Right JustifyText 0
12 Frame2 Caption Keterangan
13 Shape1-Shape8Left, Top, Height, Width
Atur sehingga membentuk tabel seperti gambar
14 Label5-30Left, Top, Width, Caption
Seperti pada gambar
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 64
![Page 65: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/65.jpg)
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 KodeBaris kode pada: frmLat21
234
5
6
7
8
9
1011
12
13
1415
16
171818
Option Explicit
'Deklarasi variabel untuk sebuah modulDim Jurusan As StringDim Kelas As StringDim Dewasa As Boolean
'Event saat tombol Proses diklikPrivate Sub cmdProses_Click() 'Deklarasi variabel Dim Tarif As Long 'Jika nilai var Dewasa adalah True maka If Dewasa = True Then 'Mengisi nilai Tarif dengan nilai 'dari var BesarTarif Tarif = BesarTarif 'Jika tidak (Jika nilai var Dewasa 'adalah False) maka Else 'Mengisi nilai Tarif dengan nilai 'dari var BesarTarif dikalikan 50% Tarif = BesarTarif * (50 / 100) End If 'Menampilkan nilai Tarif pada txtTarif 'dengan sebelumnya diformat String Me.txtTarif.Text = _ Strings.FormatNumber(Tarif, 0)End Sub
'Event saat form akan ditampilkanPrivate Sub Form_Load() With Me.cboJurusan 'Mengisi list cboJurusan dengan 'teks "Jakarta" .AddItem "Jakarta" 'Mengisi list cboJurusan dengan 'teks "Bandung" dst... .AddItem "Bandung" .AddItem "Semarang" .AddItem "Surabaya"
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 65
![Page 66: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/66.jpg)
2021
22
23
242526
2728
29
30
31
32
33
34
353637383940414243444546474849505152535455565758596061626364656667686970
.AddItem "Yogyakarta" End With ' With Me.cboKelas 'Mengisi list cboKelas dengan 'teks "Eksekutif" .AddItem "Eksekutif" 'Mengisi list cboKelas dengan 'teks "Bisnis" dst... .AddItem "Bisnis" .AddItem "Ekonomi" End With 'Menandai optUsia Index 0 '(opsi Dewasa) Me.optUsia(0).Value = TrueEnd Sub
'Fungsi untuk menentukan BesarTarifPrivate Function BesarTarif() As Long 'Mengisi Jurusan dengan teks 'pada cboJurusan Jurusan = Me.cboJurusan.Text 'Mengisi Kelas dengan teks 'pada cboKelas Kelas = Me.cboKelas.Text 'Jika kelas adalah Eksekutif If Kelas = "Eksekutif" Then 'Memilih Jurusan Select Case Jurusan 'Jika jurusan adalah "Jakarta" Case "Jakarta" 'Nilai BesarTarif adalah 100000 BesarTarif = 100000 Case "Bandung" BesarTarif = 80000 Case "Semarang" BesarTarif = 120000 Case "Surabaya" BesarTarif = 135000 Case "Yogyakarta" BesarTarif = 150000 Else BesarTarif = 0 End Select ElseIf Kelas = "Bisnis" Then Select Case Jurusan Case "Jakarta" BesarTarif = 50000 Case "Bandung" BesarTarif = 35000 Case "Semarang" BesarTarif = 95000 Case "Surabaya" BesarTarif = 110000 Case "Yogyakarta" BesarTarif = 120000 Else BesarTarif = 0 End Select ElseIf Kelas = "Ekonomi" Then Select Case Jurusan Case "Jakarta" BesarTarif = 30000 Case "Bandung" BesarTarif = 25000 Case "Semarang" BesarTarif = 75000 Case "Surabaya"
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 66
![Page 67: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/67.jpg)
7172737475767778
79
8081
BesarTarif = 95000 Case "Yogyakarta" BesarTarif = 100000 Else BesarTarif = 0 End Select End IfEnd Function
'Event saat memilih Option optUsiaPrivate Sub optUsia_Click(Index As Integer) 'Mengisi Nilai Dewasa (True atau False) 'Nilai True jika memilih opsi Dewasa Dewasa = Me.optUsia(0).ValueEnd 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 PropertiPengaturan pada: frmLat3No Objek Kontrol Properti Perubahan1 Label1 Caption &Jari-jari
2 Text1Name txtJariAlignment 1-Right JustifyText 0
3 Label2 Caption Keliling
4 Text2Name txtKelAlignment 1-Right JustifyText 0
5 Label3 Caption Luas
6 Text3Name txtLuasAlignment 1-Right JustifyText 0
7 Label4 Caption Volume Bola
8 Text4Name txtVolAlignment 1-Right JustifyText 0
9 Frame1Caption Dikosongkan Height 30
10 Command1Name cmdProsesCapion &Proses
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 67
![Page 68: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/68.jpg)
Gambar 18.3. Desain form.
Baris KodeBaris kode pada: frmLat21
2
3
4567
8
9
10
11
12
1314151617
Option Explicit
'Deklarasi Konstanta piConst pi = 22 / 7
'Event saat mengklik tombol cmdProsesPrivate Sub cmdProses_Click() 'Deklarasi variabel Dim r As Long Dim Keliling As Single Dim Luas As Single Dim Volume As Single 'Mengisi nilai r dengan teks pada txtJari r = Me.txtJari.Text
'Jika value r tidak samadengan 0 maka If Val(r) <> 0 Then 'Keliling adalah pi dikali 2 kali r Keliling = pi * (2 * r) 'Luas adalah pi dikali r dikali r Luas = pi * r * r 'Volume adalah 4/3 dikali pi 'dikali r dikali r Volume = 4 / 3 * pi * r * r
'Output -=> 'Menampilkan nilai Keliling pada txtKel Me.txtKel.Text = Keliling Me.txtLuas.Text = Luas Me.txtVol = Volume End IfEnd 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 KamarML MELATIMW MAWARAG ANGGREKDL DAHLIA
Kode Kelas Jenis KamarE EKONOMIB BISNISX EXECUTIVEP PRESIDENT
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 68
![Page 69: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/69.jpg)
Tabel TarifE B X V P
ML 45.000 65.000 85.000 105.000 125.000MW 47.500 67.500 87.500 107.500 127.500AG 50.000 70.000 90.000 110.000 130.000DL 55.000 75.000 95.000 115.000 135.000
Tabel TarifE 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 PropertiPengaturan pada: frmLat4No Objek Kontrol Properti Perubahan1 Label1 Caption &KODE
2 Text1Name txtKodeText ML-07-P
3 Label2 Caption TANGGAL &MASUK
4 Text2Name txtMasukText 12-01-06
5 Label3 Caption TANGGAL K&ELUAR
6 Text3Name txtKeluarText 15-01-06
7 Frame1Caption DikosongkanHeight 30
8 Label4 Caption KAMAR
9 Text4Name txtKamarText Dikosongkan
10 Label5 Caption NOMOR
11 Text5Name txtNomorText Dikosongkan
12 Label6 Caption LAMA MENGINAP
13 Text6Name txtLamaText 0
14 Label7 Caption TARIF
15 Text7Name txtTarifText 0
16 Label8 Caption DISKON
17 Text8Name txtDiskonText 0
18 Label9 Caption TOTAL BAYAR
19 Text9Name txtTotalText 0
20 Command1Name cmdProsesCaption &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
![Page 70: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/70.jpg)
Gambar 18.4. Desain form.
Ketikkan kode sumber berikut ini:
Baris KodeBaris kode pada: frmLat41
23456789101112
13
14
15
16
171819202122232425262728
29
30
31
Option Explicit
'Deklarasi variabel level untuk sebuah modulDim Kode As StringDim Masuk As DateDim Keluar As DateDim Lama As IntegerDim Kamar As StringDim Kelas As StringDim Nomor As StringDim Tarif As LongDim Diskon As LongDim Total As LongPrivate Sub cmdProses_Click() 'Mengisi var Kode dengan teks dari txtKode Kode = Me.txtKode.Text 'Jika dua huruf awal dari Kode adalah ML If Left(UCase(Kode), 2) = "ML" Then 'Isi nilai var Kamar dengan MELATI Kamar = "MELATI" 'Jika satu huruf terakhir Kode adalah E If Right(UCase(Kode), 1) = "E" Then 'Isi Tarif dengan 45000 Tarif = 45000 ElseIf Right(UCase(Kode), 1) = "B" Then Tarif = 65000 ElseIf Right(UCase(Kode), 1) = "X" Then Tarif = 85000 ElseIf Right(UCase(Kode), 1) = "V" Then Tarif = 105000 ElseIf Right(UCase(Kode), 1) = "P" Then Tarif = 125000 Else Tarif = 0 End If 'Jika dua huruf awal dari Kode adalah MW ElseIf Left(UCase(Kode), 2) = "MW" Then 'Isi nilai var Kamar dengan MAWAR Kamar = "MAWAR" 'Jika satu huruf terakhir Kode adalah E If Right(UCase(Kode), 1) = "E" Then
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 70
![Page 71: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/71.jpg)
323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
77
7879
80
81
82
83
84
'Isi Tarif dengan 47500 Tarif = 47500 ElseIf Right(UCase(Kode), 1) = "B" Then Tarif = 67500 ElseIf Right(UCase(Kode), 1) = "X" Then Tarif = 87500 ElseIf Right(UCase(Kode), 1) = "V" Then Tarif = 107500 ElseIf Right(UCase(Kode), 1) = "P" Then Tarif = 127500 Else Tarif = 0 End If ElseIf Left(UCase(Kode), 2) = "AG" Then Kamar = "ANGGREK" If Right(UCase(Kode), 1) = "E" Then Tarif = 50000 ElseIf Right(UCase(Kode), 1) = "B" Then Tarif = 70000 ElseIf Right(UCase(Kode), 1) = "X" Then Tarif = 90000 ElseIf Right(UCase(Kode), 1) = "V" Then Tarif = 110000 ElseIf Right(UCase(Kode), 1) = "P" Then Tarif = 130000 Else Tarif = 0 End If ElseIf Left(UCase(Kode), 2) = "DL" Then Kamar = "DAHLIA" If Right(UCase(Kode), 1) = "E" Then Tarif = 55000 ElseIf Right(UCase(Kode), 1) = "B" Then Tarif = 75000 ElseIf Right(UCase(Kode), 1) = "X" Then Tarif = 95000 ElseIf Right(UCase(Kode), 1) = "V" Then Tarif = 115000 ElseIf Right(UCase(Kode), 1) = "P" Then Tarif = 135000 Else Tarif = 0 End If Else Kamar = "MAYAT" End If 'Isi nilai var Nomor dengan huruf ke-4 'Sebanyak 2 huruf dari Kode Nomor = Mid(Kode, 4, 2) 'Isi nilai var Masuk dengan teks 'pada txtMasuk yang telah diformat 'ke tipe data Date Masuk = CDate(Me.txtMasuk.Text) Keluar = CDate(Me.txtKeluar.Text) 'Mengisi nilai var Lama dengan 'hasil pengurangan nilai var Keluar 'dengan var Masuk kemudian ditambah 1 Lama = DateDiff("d", Masuk, Keluar) + 1 'Mengisi nilai Tarif dengan perkalian 'Tarif dasar dengan Lama Tarif = Tarif * Lama 'Jika lama adalah 3 atau lebih dari 3 If Lama >= 3 Then 'Jika 1 huruf terakhir dari Kode 'adalah B maka If Right(UCase(Kode), 1) = "B" Then 'Diskon adalah Tarif dikali 5% Diskon = Tarif * 5 / 100
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 71
![Page 72: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/72.jpg)
85
8687888990919293
949596
97
9899100101102103104
'Jika 1 huruf terakhir dari Kode 'adalah X maka ElseIf Right(UCase(Kode), 1) = "X" Then 'Diskon adalah Tarif dikali 10% Diskon = Tarif * 10 / 100 ElseIf Right(UCase(Kode), 1) = "V" Then Diskon = Tarif * 15 / 100 ElseIf Right(UCase(Kode), 1) = "P" Then Diskon = Tarif * 20 / 100 Else Diskon = 0 End If 'Jika tidak (jika Lama kurang dari 3) Else Diskon = 0 End If 'Total adalah Tarif dikurangi Diskon Total = Tarif - Diskon 'Output/keluaran Me.txtKamar.Text = Kamar Me.txtNomor.Text = Nomor Me.txtLama.Text = Lama & " hari" Me.txtTarif.Text = FormatNumber(Tarif, 0) Me.txtDiskon.Text = FormatNumber(Diskon, 0) Me.txtTotal.Text = FormatNumber(Total, 0)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 KeluarMW-24-E 10-02-2006 11-02-2006AG-09-B 11-02-2006 20-02-2006DL-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 PropertiPengaturan pada: frmLat5No Objek Kontrol Properti Perubahan1 Label1 Caption Jam Mulai
2 Text1Name txtMulaiText 00:00:00
3 Label2 Caption Jam Sekarang
4 Text2Name txtSekarangText 00:00:00
5 Label3 Caption Lamanya
6 Text3Name txtLamaText 00:00:00
7 Label4 Caption Tarif
8 Text4Name txtTarifText 0
9 Command1Name cmdMulaiCaption &Mulai
10 Command2Name cmdSelesaiCaption &Selesai
11 Timer1 Name tmrMulai
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 72
![Page 73: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/73.jpg)
Interval 100
12 Timer2Name tmrSekarangInterval 100
13 Timer3Name tmrLamaEnabled FalseInterval 100
Gambar 18.5. Desain form.
Ketikkan kode sumber berikut ini:
Baris KodeBaris kode pada: frmLat51
234567
8
910111213
14
15
1617
1819
20
21
2223
2425
Option Explicit'Deklarasi variabel level untuk sebuah modulDim WaktuMulai As DateDim WaktuSekarang As DateDim Lama As DateDim Mulai As BooleanDim Tarif As LongConst HargaSewa = 1000
'Event saat mengklik tombol cmdMulaiPrivate Sub cmdMulai_Click() 'Mengaktifkan var Mulai Mulai = True WaktuMulai = Me.txtMulai.Text Me.tmrMulai.Enabled = False Me.tmrLama.Enabled = TrueEnd Sub
'Event saat mengklik tombol cmdStopPrivate Sub cmdStop_Click() 'Mengaktifkan tmrMulai Me.tmrMulai.Enabled = True 'Menonaktifkan tmrLama Me.tmrLama.Enabled = FalseEnd Sub
'Event sebelum form ditutupPrivate Sub Form_Unload(Cancel As Integer) Dim PassWord As String 'Membatalkan penutupan form Cancel = 1 'Menampilkan dialog InputBox PassWord = InputBox("Masukkan Password", _ "Password", , (Screen.Width - 5000) / 2, _ (Screen.Height - 2000) / 2) 'Jika Passwor adalah inochi maka 'form ditutup If PassWord = "inochi" Then Cancel = 0End Sub'Private Sub tmrLama_Timer() Dim DetikLaju As Long 'Lama adalah WaktuMulai
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 73
![Page 74: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/74.jpg)
26
27
28
29
3031
323334
35363738
'dikurangi WaktuSekarang Lama = WaktuMulai - WaktuSekarang 'Mengakumulasikan detik terpakai DetikLaju = (Hour(Lama) * 3600) + _ (Minute(Lama) * 60) + Second(Lama) 'Menentukan Tarif perdetik Tarif = (HargaSewa / 3600) * DetikLaju 'Menampilkan nilai Lama pada txtLama Me.txtLama.Text = Lama 'Menampilkan besarnya Tarif Me.txtTarif.Text = "Rp. " & TarifEnd Sub'Private Sub tmrMulai_Timer() Me.txtMulai.Text = TimeEnd Sub'Private Sub tmrSekarang_Timer() WaktuSekarang = Time Me.txtSekarang.Text = TimeEnd 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 PropertiPengaturan pada: frmLat6No Objek Kontrol Properti Perubahan
1 Label1Name lblAngkaCaption Angka ke-1
2 Text1Name txtAngkaAlign 1-Right JustifyText 0
3 Command1Name cmdProsesCaption &Proses
4 Frame1Caption Dikosongkan Height 30
Gambar 18.6. Desain form.
Baris KodeBaris kode pada: frmLat61
2
Option Explicit
'Deklarasi variabel level untuk sebuah modulDim Posisi As Integer
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 74
![Page 75: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/75.jpg)
3
456789
10111213141516
171819202122232425
262728293031323334
35363738394041
4243444546
474849505152
53
54
5556
Dim Angka() As Double
'Deklarasi fungsi untuk menghitung JumlahFunction Jumlah(Angka() As Double) As Double Dim i As Long For i = 1 To UBound(Angka) Jumlah = Jumlah + Angka(i) NextEnd Function
Function Rata_Rata(Angka() As Double) As Double Dim i As Long For i = 1 To UBound(Angka) Rata_Rata = Rata_Rata + Angka(i) Next Rata_Rata = Rata_Rata / (i - 1)End Function
Function Maksimum(Angka() As Double) As Double Dim i As Long Maksimum = Angka(1) For i = 1 To UBound(Angka) If Angka(i) >= Maksimum Then Maksimum = Angka(i) End If NextEnd Function
Function Minimum(Angka() As Double) As Double Dim i As Long Minimum = Angka(1) For i = 1 To UBound(Angka) If Angka(i) <= Minimum Then Minimum = Angka(i) End If NextEnd Function
Private Sub cmdProses_Click() CetakDiForm Posisi = 1 Me.lblAngka.Caption = "Angka ke-1" Me.cmdProses.Enabled = False Me.txtAngka.Text = 0End Sub
Private Sub Form_Load() Me.Height = 6500 Me.AutoRedraw = True Posisi = 1End Sub
Private Sub txtAngka_GotFocus() With Me.txtAngka .SelStart = 0 .SelLength = Len(.Text) End WithEnd Sub
'Event saat menekan tombol'saat pointer pada txtAngkaPrivate Sub txtAngka_KeyPress( _KeyAscii As Integer) ' ReDim Preserve Angka(Posisi) 'Jika menekan tombol Enter maka... If KeyAscii = 13 Then Angka(Posisi) = CDbl(Me.txtAngka.Text)
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 75
![Page 76: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/76.jpg)
5758
59
60616263
6465
6667
68
69
70
71
72
73
747576
777879
80818283
848586
87
'Memfokuskan txtAngka txtAngka_GotFocus Posisi = Posisi + 1 ' Me.lblAngka.Caption = _ "Angka ke-" & CStr(Posisi) Me.Cls Me.cmdProses.Enabled = True End IfEnd Sub
Sub CetakDiForm() Dim i As Integer 'Mengatur batas Kiri dan batas Atas Me.ScaleLeft = -200 Me.ScaleTop = -1100 'Mengatur posisi Kiri Me.CurrentX = 0 'Pengulangan sebanyak Angka yang dimasukan For i = 1 To UBound(Angka) 'Mengatur posisi Atas Me.CurrentY = 0 + (i * 300) 'Mencetak ke form Me.Print "Angka ke-" & CStr(i) & _ " = " & CStr(Angka(i)) Next 'Mencetak baris Me.Line (0, i * 300)-(2500, i * 300) 'Mencetak teks Jumlah = ... Me.CurrentX = 0 Me.CurrentY = (i) * 300 + 100 Me.Print "Jumlah = " & _ CStr(Jumlah(Angka)) 'Mencetak teks Rata-Rata = ... Me.CurrentX = 0 Me.CurrentY = (i + 1) * 300 + 100 Me.Print "Rata-Rata = " & _ CStr(Round(Rata_Rata(Angka), 2)) 'Mencetak teks Maximum = ... Me.CurrentX = 0 Me.CurrentY = (i + 2) * 300 + 100 Me.Print "Maximum = " & _ CStr(Maksimum(Angka)) 'Mencetak teks Minimum = ... Me.CurrentX = 0 Me.CurrentY = (i + 3) * 300 + 100 Me.Print "Minimum = " & _ CStr(Minimum(Angka))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
![Page 77: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/77.jpg)
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 PropertiPengaturan pada: frmLat7No Objek Kontrol Properti Perubahan
1 Picture1Name picGambarAppearance 0-FlatAutoRedraw True
2 Frame1 Caption Pilih Gambar
3 Command1Name cmdClearCaption &Clear
Di dalam Frame, gambarkan sebuah PictureBox, dan atur properti-propertinya sebagai berikut:
Pengaturan PropertiPengaturan pada: frmLat7No Objek Kontrol Properti Perubahan
4 Picture1
Name picCapAutoSize TrueBorderStyle 0-NoneDragMode 1-AutomaticIndex 0
PictureGambar dengan 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
![Page 78: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/78.jpg)
Ketikkan kode berikut:
Baris KodeBaris kode pada: frmLat61
2345
678910111213
14
15
16
17
18
19
20
212223
242526
27
2829303132
333435363738
3940
41
42
Option Explicit'Dim sX!, sY!, aX!, aY!Dim x1!, y1!, x2!, y2!Dim idxGambar As IntegerDim Pilih As Boolean'Sub CapLingkar(X As Single, Y As Single) Dim Teks As String Dim txWdt As Long, txHgt As Long sX = X: sY = Y With Me.picGambar Teks = "ANDI OFFSET" txWdt = .TextWidth(Teks) txHgt = .TextHeight(Teks) 'Menentukan tebal garis .DrawWidth = 4 'Menentukan warna garis .ForeColor = &H800000 'Menggambar lingkaran pertama 'dengan titik pusat (sY, sY) 'dan berdiameter 800px Me.picGambar.Circle (sX, sY), 800 'Menentukan tebal garis .DrawWidth = 2 'Menentukan warna garis .ForeColor = vbRed 'Menggambar lingkaran kedua Me.picGambar.Circle (sX, sY), 450 'Menggambar kotak Me.picGambar.Line (sX - 1000, _ sY - 200)-Step _ (2000, 400), RGB(192, 192, 192), BF .CurrentX = sX - txWdt / 2 .CurrentY = sY - txHgt / 2 .ForeColor = vbWhite 'Mencetak Teks Me.picGambar.Print Teks End WithEnd Sub
Private Sub cmdClear_Click() 'Membersihkan PictureBox Me.picGambar.Cls x1 = 0: y1 = 0 x2 = Me.picGambar.ScaleWidth y2 = Me.picGambar.ScaleHeightEnd Sub
Private Sub Form_Load() x1 = 0: y1 = 0 x2 = Me.picGambar.ScaleWidth y2 = Me.picGambar.ScaleHeight Pilih = FalseEnd Sub
Private Sub Form_Resize()On Error Resume Next 'Menyesuaikan posisi dan ukuran picGambar 'dengan form Me.picGambar.Move 1560, 0, _ Me.ScaleWidth - 1560, Me.ScaleHeightEnd Sub
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 78
![Page 79: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/79.jpg)
434445
46
474849
50
51
52
5354555657
58
59
6061
6263646566676869
70
7172737475
76777879
80
81
Private Sub picCap_Click(Index As Integer) idxGambar = IndexEnd Sub
Private Sub picCap_DragOver(Index As Integer, _Source As Control, X As Single, _Y As Single, State As Integer) On Error Resume Next idxGambar = Index Pilih = True 'Mengubah icon saat dragging Source.DragIcon = _ Me.picCap(idxGambar).PictureEnd Sub
'Event saat meletakkan icon ke picGambarPrivate Sub picGambar_DragDrop( _Source As Control, _X As Single, Y As Single) If idxGambar = 3 Then CapLingkar X, Y Else: CapGambar idxGambar, X, Y End IfEnd Sub
'Event saat pointer mouse di atas picGambarPrivate Sub picGambar_MouseMove( _Button As Integer, Shift As Integer, _X As Single, Y As Single) If Pilih = True Then 'Mengubah pointer mouse Me.picGambar.MousePointer = 99 Me.picGambar.MouseIcon = _ Me.picCap(idxGambar).Picture 'Jika sambil menekan tombol kanan mouse If Button = 2 Then If idxGambar = 3 Then CapLingkar X, Y Else: CapGambar idxGambar, X, Y End If End If End IfEnd Sub
'Event saat melepas tombol mousePrivate Sub picGambar_MouseUp( _Button As Integer, Shift As Integer, _X As Single, Y As Single) If idxGambar = 3 Then CapLingkar X, Y Else: CapGambar idxGambar, X, Y End IfEnd Sub
Sub CapGambar(Index%, X!, Y!) Dim wPic As Long, hPic As Long wPic = Me.picCap(Index).Width hPic = Me.picCap(Index).Height 'Menggambar pada picGambar 'sesuai gambar dari picCap terpilih Me.picGambar.PaintPicture _ Me.picCap(Index).Picture, _ X - wPic / 2, Y - hPic / 2, wPic, hPicEnd Sub
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 79
![Page 80: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/80.jpg)
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 PropertiPengaturan pada: frmLat8No Objek Kontrol Properti Perubahan
1 Command1
Name cmdAcakStyle 1-Graphic
PictureGambar ikon (format .ico)
DisabledPictureGambar ikon (format .ico)
2 Timer1Name Timer1Interval 100Enabled False
3 Image1
Name imgIcon
PictureSamakan dengan gambar dari properti: Picture cmdAcak
Gambar 18.10. Desain form.
Ketikkan kode berikut:
Baris KodeBaris kode pada: frmLat81
2
345
6
7
Option Explicit
Dim ANGKA$, Acak As Byte
Private Sub cmdAcak_Click() If Acak = 0 Then Acak = 1 'Mengaktifkan Timer Me.Timer1.Enabled = True 'Mengubah gambar tombol Me.cmdAcak.Picture = _
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 80
![Page 81: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/81.jpg)
8
9
10
1112
13141516
171819
202122
2324
25
262728
29303132
33343536
3738
Me.cmdAcak.DisabledPicture Else: Acak = 0 'Menonaktifkan Timer Me.Timer1.Enabled = False 'Mengubah gambar tombol Me.cmdAcak.Picture = _ Me.imgIcon.Picture End IfEnd Sub
Private Sub Form_Load() Me.AutoRedraw = True AcakAngkaEnd Sub
Private Sub Timer1_Timer() AcakAngkaEnd Sub
Sub AcakAngka() Dim INDEX As Integer Me.Cls 'Mengatur Font dari form Me.Font.Name = "Courier New" Me.Font.Size = 20 'Mulai mengacak 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) Me.ForeColor = vbGreen Me.CurrentX = 1220 Me.CurrentY = 250 'Mencetak Angka (bayangan 1) Me.Print ANGKA Me.ForeColor = vbBlue Me.CurrentX = 1210 Me.CurrentY = 270 'Mencetak Angka (bayangan 2) Me.Print ANGKA Me.ForeColor = vbRed Me.CurrentX = 1205 Me.CurrentY = 275 'Mencetak Angka Me.Print ANGKAEnd 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
![Page 82: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/82.jpg)
Pengaturan PropertiPengaturan pada: frmLat9No Objek Kontrol Properti Perubahan
1 Picture1
Name picSumberAutoSize True
PictureTerserah Anda (bertipe bmp)
SacleMode 3-Pixel
2 Picture2
Name picSumberAutoSize True
PictureTerserah Anda (bertipe bmp)
SacleMode 3-Pixel
3 Command1Name cmdPutar90Caption &Putar 90
4 Command2Name cmdTransparanCaption &Transparan
Gambar 18.12. Desain form.
Ketikkan kode berikut:
Baris KodeBaris kode pada: frmLat91
23
45
6
789
101112
131415
1617
18
19
Option Explicit
Private Sub cmdPutar90_Click() Dim x, y 'Mengubah Scalemode menjadi Pixel Me.picSumber.ScaleMode = 3 Me.picTarget.ScaleMode = 3 'Membersihkan picTarget picTarget.Cls 'Menggambar dan memutar 90º picTarget For y = 0 To Me.picSumber.ScaleHeight For x = 0 To Me.picSumber.ScaleWidth Me.picTarget.PSet (x, y), _ Me.picSumber.Point(y, x) Next NextEnd Sub
Private Sub cmdTransparan_Click() Dim XRd, YRd, PelX, PelY, PelC, ScrX, ScrY Me.picTarget.ScaleMode = 1 ' ScrX = Screen.TwipsPerPixelX ScrY = Screen.TwipsPerPixelY 'Membersihkan picTarget picTarget.Cls 'Mengubah Scalemode picTarget Me.picTarget.ScaleMode = 1
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 82
![Page 83: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/83.jpg)
202122
23
2425
26
2728293031
'Menggambar transparan picTarget For YRd = 0 To (picSumber.ScaleHeight - 1) PelY = picSumber.Top + (YRd * ScrY) For XRd = 0 To ( _ picSumber.ScaleWidth - 1) PelX = picSumber.Left + _ (XRd * ScrX) PelC = picSumber.Point(XRd, YRd) If PelC <> picSumber.Point(0, 0) _ And PelC > 0 Then picTarget.Line (PelX, PelY)- _ Step(ScrX, ScrY), PelC, BF End If Next XRd DoEvents Next YRdEnd 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 PropertiPengaturan pada: frmLat10No Objek Kontrol Properti Perubahan
1 Picture1
Name picTulisAutoSize TrueAppearance 0-FlatBorderColor Putih
2 Label1 Caption &Nama Font3 Label2 Caption &Ukuran Font4 Label3 Caption Posisi &Kiri5 Label4 Caption Posisi &Atas6 Label5 Caption &Teks7 Label6 Caption &Warna
8 Combo1Name cboFontText Dikosongkan
9 Combo2Name cboUkuranText Dikosongkan
10 Text1Name txtXText 0
11 Text2Name txtYText 0
12 Text3Name txtTextText Dikosongkan
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 83
![Page 84: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/84.jpg)
13 Picture2
Name picWarnaAutoSize TrueAppearance 0-FlatBorderColor Putih
14 Command1Name cmdTulisCaption &Tulis
15 Command2Name cmdClearCaption &Clear
Gambar 18.14. Desain form.
Ketikkan kode berikut:
Baris KodeBaris kode pada: frmLat101
2
3
45
6
789
101112
13141516
171819
202122232425
26
Option Explicit
Dim ptX, ptY, intX, intY
Private Sub cmdTulis_Click()' Mencetak tulisan ke picturebox With Me.picTulis .CurrentX = Val(Me.txtX.Text) .CurrentY = Val(Me.txtY.Text) .Font.Name = Me.cboFont.Text .Font.Size = Me.cboUkuran.Text Me.picTulis.Print Me.txtText.Text End WithEnd Sub
Private Sub cmdClear_Click() picTulis.ClsEnd Sub
Private Sub Form_Load() Dim i As Integer, perWdt As Long Me.picTulis.AutoRedraw = True Me.picWarna.AutoRedraw = True'Mengisi combo ukuran dengan angka 'mulai dari 8 For i = 8 To 30 Step 2 Me.cboUkuran.AddItem i Next'Mengisi combo dengan daftar font dari 'sistem komputer Me.cboUkuran.ListIndex = 0 For i = 1 To Screen.FontCount Me.cboFont.AddItem Screen.Fonts(i) Next Me.cboFont.ListIndex = 0End Sub
Private Sub Form_Paint()
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 84
![Page 85: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/85.jpg)
27282930
3132
333435
363738
39
40414243
Dim i, perWdt As Long perWdt = picWarna.Width / 15 For i = 0 To 15 Me.picWarna.Line (i * perWdt, 0)- _ Step((i + 1) * perWdt, _ Me.picWarna.Height), _ QBColor(i), BF Next Me.picWarna.DrawWidth = 2 'Menggambar lingkaran (titik) Me.picWarna.FillStyle = vbFSSolid Me.picWarna.Circle (intX, intY), 30End Sub
Private Sub picWarna_Click() Form_PaintEnd Sub
Private Sub picWarna_MouseDown( _Button As Integer, Shift As Integer, _X As Single, Y As Single) intX = X intY = Y picTulis.ForeColor = picWarna.Point(X, Y)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
![Page 86: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/86.jpg)
Gambar 18.16. Desain Form dan MDIForm.
Pengaturan PropertiPengaturan pada: frmLogoNo Objek Kontrol Properti Perubahan
1 Picture1
Name picLogoAutoSize TrueAppearance 0-FlatBorderColor PutihPicture Terserah Anda
Ketikkan kode berikut:
Baris KodeBaris kode pada: mdiUtama1
234
5
Option Explicit
Private Sub MDIForm_Resize()On Error Resume Next frmLogo.Move 0, 0, mdiUtama.ScaleWidth, _ mdiUtama.ScaleHeightEnd Sub
Baris kode pada: frmLogo1
234
6
Option Explicit
Private Sub Form_Resize() On Error Resume Next Me.picLogo.Move (Me.ScaleWidth - _ Me.picLogo.Width) / 2, (Me.ScaleHeight - _ Me.picLogo.Height) / 2End 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 ProjectComponent... 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
![Page 87: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/87.jpg)
Gambarkan objek kontrol PictureClip, PictureBox, dan Timer ke dalam form. Ubah propertinya seperti pada tabel di bawah ini.
Pengaturan PropertiPengaturan pada: frmLat12No Objek Kontrol Properti Perubahan
1 PicClip1
Name pccDaduCols 6Rows 3Picture Pada CD
2 Picture1
Name picDaduAutoSize TrueAppearance 0-FlatBorderColor PutihPicture Terserah Anda
3 TimerName Timer1Interval 100
Gambar 18.18. Desain Form.
Ketikkan kode berikut:
Baris KodeBaris kode pada: frmLat121
2
34
56
7
8
9
10
111213
14
Option Explicit
Dim x
Private Sub Form_Load() picDadu.Picture = pccDadu.GraphicCell(2) x = 1End Sub
Private Sub Form_Resize() 'Melarikan picDadu ke tengah form Me.picDadu.Move _ (Me.ScaleWidth - Me.picDadu.Width) / 2, _ (Me.ScaleHeight - Me.picDadu.Height) / 2End Sub
Private Sub Timer1_Timer() 'Menggambar picDadu dengan gambar 'dari PictureClip x = x + 1 If x = (Me.pccDadu.Rows * _ Me.pccDadu.Cols) Then x = 0 picDadu.Picture = _ pccDadu.GraphicCell(x)End Sub
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 87
![Page 88: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/88.jpg)
Gambar 18.19. Program sedang berjalan.
Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 88
![Page 89: Latihan](https://reader035.vdocuments.us/reader035/viewer/2022062405/5571f22449795947648c3b02/html5/thumbnails/89.jpg)
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:
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