Latihan

  • Uploaded by: Novian Agung
  • 0
  • 0
  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Latihan as PDF for free.

More details

  • Words: 22,019
  • Pages: 89
BAB XVI SEPULUH PROGRAM MENARIK Pada pembahasan kali ini, saya mengajak Anda mencoba membuat seembilan program menarik menggunakan Visual Basic. Semua program dibuat pada template VB Enterprise Edition Control. Jadi saat Anda menjalankan Visual Basic, pilih tempate tersebut untuk memulai project baru. Diharapkan Anda sudah menguasai semua bahasan-bahasan sebelum bab ini.

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

a. Desain Form Buatlah folder baru di alamat: “C:\Menggali VB\Bab 16”, namai dengan “Explorer”. Pada form, sisipkan objek ImageList, namai dengan: imgMain. Klik kanan pada imgMain, pilih: 16 x 16, pada tab General. Klik tab Images, klik Insert Picture… Masukkan, 25 gambar ikon (ikon-ikon disediakan pada CD yang disertakan). Ubah nama Key dari tiap-tiap Image seperti pada table di bawah ini: Index 1 2 3 4 5 6 7 8 9 10 11 12 13

Key komputer ini inf mid wav bat exe dll imf txt jpg drivelepas doc

Index 14 15 16 17 18 19 20 21 22 23 24 25

Key xls mdb recycle filegeneric mp3 folder1 folder2 diska cdrom desktop disket diskanet

Catatan: Hati-hati dalam pemberian nama Key dari Image-Image pada ImageList. Perbedaan huruf besar dan huruf kecil sangat berpengaruh pada hasil bersifat (case sensitif). Sisipkan objek kontrol dan atur propertinya seperti pada table di bawah ini: Pengaturan Properti Pengaturan pada: Form1 No Objek Kontrol Properti Name 2 TreeView ImageList Name 3 ListView ImageList Name 4 RichTextBox Appearance ScrollBar Name 5 ProgressBar Scrolling

Perubahan tvwExplor imgMain lvwExplor imgMain rtbExplor 0-rtfFlat 3-rtfBoth pgbExplor 1-ccScrollingSmooth

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

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

1

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

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

2

37 38 39 20 21 22 23 24 25 26 27 28 29 30 31 32 33

34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

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 = True End 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.Height End 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.Caption End 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

58 59 60 61 62 63 64 65 66 67 68 39 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

101 102 103 104

105

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 Next End 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

106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144

Next If Me.pgbExplor.Value >= 100 Then Me.pgbExplor.Value = 0 i = 0 End If End 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 Sub ErrHandler: On Error GoTo 0 rtfExplor.Text = "Format tidak dikenal" rtfExplor.Refresh rtfExplor.Locked = True End Sub

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

Gambar 16.2. Program sedang berjalan, menampilkan file gambar.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

5

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

a. Desain Form Gambarkan sebuah objek CommandButton, namai dengan: cmdNumber, gandakan menjadi 10 buah, ubah Caption, sesuai dengan Index-nya masing-masing. Gambarkan lagi sebuah objek CommandButton namai dengan cmdOperator, gandakan menjadi 5 buah. Ubah properti Caption seperti pada table di bawah ini. Objek pada: Form1 Nama Objek Properti Name Index Command2 Caption TabIndex Name Index Command2 Caption TabIndex Name Index Command2 Caption TabIndex Name Index Command2 Caption TabIndex Name Index Command2 Caption TabIndex

Perubahan cmdOperator 0 / 13 cmdOperator 1 + 14 cmdOperator 2 x 15 cmdOperator 3 16 cmdOperator 4 = 17

Gambarkan lagi 4 (empat) buah CommandButton dan sebuah Label, atur properti seperti pada table di bawah: Objek pada: Form1 Nama Objek Properti Name Command1 Caption TabIndex Name Command2 Caption TabIndex Name Command3 Caption TabIndex Name Command4 Caption TabIndex Name Caption Alignment Label1 BackColor TabIndex

Perubahan cmdPercent % 18 cmdDecimal . 19 cmdCancel C 1 cmdCancelEntry CE 2 lblDisplay 0. 1-Right Justify Putih atau warna terang lainnya 0

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

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

6

Gambar 16.3. Desain Form kalkulator.

b. Baris Kode Baris Kode Baris kode pada: Form1 1 Option Explicit 2 3 4 5 6 7

Dim Dim Dim Dim Dim Dim

8 9 10 11 12 13 14

Private Sub cmdCancel_Click() On Error Resume Next lblDisplay = "0." Operator1 = 0 Operator2 = 0 Form_Load End 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 _

15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

Operator1, Operator2 DecimalFlag As Integer NumOps As Integer AkhirMasukan JnOperator TempPembacaan

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

7

78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93

lblDisplay = "-" & lblDisplay AkhirMasukan = "NUMS" End If End 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 If End Sub

94 95 96 97 98 99 100 101

Private Sub cmdPercent_Click() On Error Resume Next lblDisplay = lblDisplay / 100 AkhirMasukan = "OPS" JnOperator = "%" NumOps = NumOps + 1 DecimalFlag = True End Sub

102 103

Private Sub Form_KeyPress(KeyAscii As Integer) If KeyAscii >= Asc("0") And _ KeyAscii <= Asc("9") Then

44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

8

104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122

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 If End Sub

123 124 125 126 127 128 129

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 Properti Pengaturan pada: Form1 No Objek Kontrol Properti 1 Label1 Caption 2 Label2 Caption 3 Label3 Caption 4 Label4 Caption 5 Label5 Caption Name 6 Text1 Alignment Name 7 Text2 Alignment Name 8 Text3 Alignment Name 9 Text4 Alignment

Perubahan Angka Masukan Konversi Romawi Konversi Binear Konversi Hexa Konversi Huruf txtAngka 1 – Right Justify txtKonversi1 0 – Left Justify txtKonversi2 1 – Right Justify txtKonversi3 1 – Right Justify

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

9

10

Text5

11

Command1

Name Alignment Multiline ScrollBar Name Caption

txtKonversi4 0 – Left Justify True 2 – Vertical cmdKonversi &Konversi

Tampilan akhir desain form seperti pada gambar di bawah ini.

Gambar 16.4. Desain form Konversi. Tambahkan sebuah Module pada project Anda, namai dengan mdlKonversi.

b. Baris Kode Baris Kode Baris kode pada: mdlKonversi 1 Dim HurufKe(20) As Double 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Function HurufSatuan(Angka As Select Case Angka Case 1: HurufSatuan = Case 2: HurufSatuan = Case 3: HurufSatuan = Case 4: HurufSatuan = Case 5: HurufSatuan = Case 6: HurufSatuan = Case 7: HurufSatuan = Case 8: HurufSatuan = Case 9: HurufSatuan = Case 0: HurufSatuan = End Select End Function

16 17 18 19 20 21 22 23 24 25 26 27

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 "

28 29 30 31 32 33 34 35

Double) As String "se" "dua" "tiga" "empat" "lima" "enam" "tujuh" "delapan" "sembilan" ""

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

10

36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90

ElseIf HurufKe(2) = 1 Then If HurufKe(1) > 0 Then 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 Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

11

91 92 93

139

ElseIf HurufKe(8) = 1 Then If HurufKe(7) = 0 Then 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$ & Satuan End Function

140 141 142 143 144 145

Function BASIS(IntAngka%, NBASIS%) As String Dim INTNILAI&, INTLEN%, J% Dim STRHASIL$, STRHEXA$, STREND$, STRSUB$ Do INTNILAI = IntAngka Mod NBASIS IntAngka = IntAngka \ NBASIS

94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

12

146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165

Select Case INTNILAI Case 10: STRHEXA = "A" 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 If End Function

166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211

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 Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

13

212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233

If IntLimaPuluh = 1 Then StrSepuluh = StrRomawi + "XC" 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 = StrRomawi End Function

Baris kode pada: Form1 1 Option Explicit 2 3 4 5 6 7

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

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 &Editor &New &Open &Save Cu&t &Copy &Paste &Bold &Italic &Underline &Left C&enter &Right &Font… &Gambar… &Quit

Name mnuEditor mnuENew mnuEOpen mnuESave Spr1 mnuECut mnuECopy mnuEPaste Spr2 mnuEBold mnuEItalic mnuEUnderline Spr3 mnuELeft mnuECenter mnuERoght Spr4 mnuEFont mnuEGambar Spr5 mnuEQuit

ShortCut

CheckBox

Ctrl + N Ctrl + O Ctrl + S Ctrl + X Ctrl + C Ctrl + V Ctrl + B Ctrl + I Ctrl + U

tandai tandai tandai

Ctrl + L Ctrl + E Ctrl + R

tandai tandai tandai

Ctrl + F Ctrl + G Ctrl + Q

Indentasi 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Tampilan akhir desain seperti pada gambar di bawah:

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

15

Gambar 16.7. Desain form Editor.

b. Baris Kode Baris Kode Baris kode pada: Form1 1 Option Explicit 2

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

3

13 14 15 16 17 18 19 20

Dim TwipsInHimetric! ' Private Sub EBold() With Me.rtbEditor If Not .SelBold Then .SelBold = True Else: .SelBold = False End If End With End Sub ' Private Sub EItalic() With Me.rtbEditor If Not .SelItalic Then .SelItalic = True Else: .SelItalic = False End If End With End Sub

21 22 23 24 25 26 27 28

Private Sub EUnderline() With Me.rtbEditor If Not .SelUnderline Then .SelUnderline = True Else: .SelUnderline = False End If End With End Sub

29 30 31 32

Private Sub ECut() Clipboard.SetText Me.rtbEditor.SelRTF Me.rtbEditor.SelText = vbNullString End Sub

33 34 35

Private Sub ECopy() Clipboard.SetText Me.rtbEditor.SelRTF End Sub

36 37 38

Private Sub EPaste() Me.rtbEditor.SelRTF = Clipboard.GetText End Sub

39 40 41 42 43 44

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

4 5 6 7 8 9 10 11

45 46 47

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

16

48 49 50 51 52

Exit Sub Else: Me.rtbEditor.FileName = .FileName End If End With End Sub

53 54 55 56 57 58

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 With End Sub

59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87

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 With End Sub

88 89 90

Private Sub ERight() Me.rtbEditor.SelAlignment = rtfRight End Sub

91 92 93

Private Sub ECenter() Me.rtbEditor.SelAlignment = rtfCenter End Sub

94 95 95

Private Sub ELeft() Me.rtbEditor.SelAlignment = rtfLeft End Sub

96 97 98 99 100 101 102

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

103

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

17

104 105 106 107 108 109 110

If .FileName = "" Then Exit Sub Else: Error Resume Next Me.rtbEditor.SaveFile .FileName End If End With End Sub

111 112 113

Private Sub ENew() Me.rtbEditor.Text = "" End Sub

114 115 116

Private Sub Form_Load() rtbEditor_SelChange: Call TambahkanGambar Me End Sub

117 118 119 120

Private Sub Form_Resize() On Error Resume Next Me.rtbEditor.Move 0, 0, Me.ScaleWidth, _ Me.ScaleHeight End Sub

121 122 123

Private Sub mnuEBold_Click() Call EBold End Sub

124 125 126

Private Sub mnuECenter_Click() Call ECenter End Sub

127 128 129

Private Sub mnuECopy_Click() Call ECopy End Sub

130 131 132

Private Sub mnuECut_Click() Call ECut End Sub

133 134 135

Private Sub mnuEFont_Click() Call EFont End Sub

136 137 138

Private Sub mnuEGambar_Click() Call EGambar End Sub

139 140 141

Private Sub mnuEItalic_Click() Call EItalic End Sub

142 143 144

Private Sub mnuELeft_Click() Call ELeft End Sub

145 146 147

Private Sub mnuENew_Click() Call ENew End Sub

148 149 150

Private Sub mnuEOpen_Click() Call EOpen End Sub

151 152 153

Private Sub mnuEPaste_Click() Call EPaste End Sub

154 155

Private Sub mnuEQuit_Click() Unload Me Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

18

156

End Sub

157 158 159

Private Sub mnuERight_Click() Call ERight End Sub

160 161 162

Private Sub mnuEUnderline_Click() Call EUnderline End Sub

163 164 165

Private Sub mnuESave_Click() Call ESave End Sub

166

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 If End Sub

167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196

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 Me End Sub

c. Tes Program

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

19

Gambar 16.8. Program Editor sedang berjalan, menampilkan teks dan gambar. Jalankan program! Bukan hanya teks yang dapat Anda sisipkan pada program Text Editor ini, Anda diperkenankan untuk menyisipkan file gambar seperti: jpg, bmp atau gif. Selain itu menu-menu yang ditampilkan pun lebih kelihatan menarik, karena dihiasi gambar-gambar kecil di sisi tiaptiap menunya. Cobalah untuk menggunakan semua menu yang disediakan

16.5. Screen Saver Tentunya Anda tahu definisi Screen Saver. Jika tidak tahu, Screen Saver adalah tampilan program saat Sistem Operasi tidak menerima suatu aksi baik itu penekanan tombol keyboard ataupun pergerakkan pointer mouse. Contoh program berikut ini, mencoba membuat sebuah file Screen Saver dengan tampilan jam analog. Seperti biasa, buatlah sebuah folder baru di alamat: “C:\Menggali VB\Bab 16”, namai degan “Screen Saver”. a.

Desain Program

Ubah nama Project1 menjadi: “ssaverVian” (perubahan nama project sebetulnya tidak terlalu berperan, jadi boleh saja bagi Anda untuk tidak menggantinya). Ubah Name dari Form1 menjadi: frmJAM, ubah BorderStyle menjadi: 0-None. Gambarkan sebuah PictureBox, di dalam PictureBox tersebut gambarkan objek Line. Ubah properti Name dari Line1 dengan: linJam, dan ubah nilai properti Index menjadi: 0 (nol). Gambarkan objek kontrol Timer. Ubah properti-properti dari PictureBox dan Timer, seperti pada table di bawah: Objek pada: frmJAM Nama Object Properti Name Autosize AutoRedraw Picture1 BorderStyle DrawStyle FillStyle Picture Name Timer1 Interval

Pengaturan picLogo True True 0-None 0-Solid 1-Transparent Terserah Anda tmrJam 100

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

20

Gambar 16.9. Desain form frmJAM. Tambahkan sebuah form baru, Namai dengan: frmSET. Bila perlu ubah Caption dengan: “Settings”. Masukkan objek control-objek control dan atur properti-propertinya seperti pada table di bawah ini: Pengaturan Properti Pengaturan pada: Form1 No Objek Kontrol Properti 1 Frame Caption 2 Frame Caption 3 Label1 Caption 4 Label2 Caption 5 Label3 Caption 6 Label4 Caption 7 Label5 Caption 8 Label6 Caption 9 Label7 Caption 10 Text1 Name 11 Combo1 Name 12 Combo2 Name 13 Combo3 Name Name 14 Command1 Caption Name 15 Command2 Caption Name 16 Command3 Caption Name 17 Command4 Caption Name 18 Command5 Caption Default Name 19 Command6 Caption Cancel 20 CommonDialog Name

Perubahan Tebal Jarum Warna Jarum Jam Jam Menit Menit Detik Detik Alamat &Gambar txtAlamat cboTebalJam cboTebalMenit cboTebalDetik cmdAlamat … cmdWarnaJam … cmdWarnaMenit … cmdWarnaDetik … cmdOK OK True cmdCancel Cancel True dlgSet

Gambar 16.10. Desain form frmSET. Tambahkan sebuah Module pada project Anda. Kita mulai membuat kode sumber.

b. Baris kode Baris Kode Baris kode pada: Module1 1 Option Explicit 2

Public Declare Function SystemParametersInfo _ Lib "user32" Alias "SystemParametersInfoA" _ (ByVal uAction As Long, ByVal uParam As Long, _ ByRef lpvParam As Any, _ ByVal fuWinIni As Long ) As Long Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

21

3

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

4

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

5 6 7 8 9 10 11

Const Const Const Const Const Const Const

12

Public Const SPI_SETSCREENSAVEACTIVE = 17

13 14

Sub MakeNormal(iForm As Form) SetWindowPos iForm.hwnd, _ HWND_NOTOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS End Sub

15 16 17 18

HWND_TOPMOST = -1 HWND_NOTOPMOST = -2 SWP_NOMOVE = &H2 SWP_NOSIZE = &H1 SWP_NOACTIVATE = &H10 SWP_SHOWWINDOW = &H40 TOPMOST_FLAGS = _ SWP_NOMOVE Or SWP_NOSIZE

Sub MakeTopMost(iForm As Form) SetWindowPos iForm.hwnd, _ HWND_TOPMOST, 0, 0, 0, 0, TOPMOST_FLAGS End Sub

Baris kode pada: frmJAM 1 Option Explicit 2 3 4 5 6 7 8

Private Private Private Private Private Private Private

WarnaJam& WarnaMenit& WarnaDetik& TebalJam% TebalMenit% TebalDetik% Alamat$

10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34

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

35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

End Sub

linJam(J).Y2 = Sin(Sudut) linJam(J).BorderColor = vbBlue

Private Sub Form_KeyDown( _ KeyCode As Integer, Shift As Integer) Unload Me: End End 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 Select End Sub Private Sub Form_MouseMove(Button As Integer, _ Shift As Integer, X As Single, Y As Single) Me.TutupMouse X, Y End 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) / 2 End 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

78 79

Private Sub picLogo_MouseMove( _ Button As Integer, Shift As Integer, _ X As Single, Y As Single) TutupMouse X, Y End Sub

80 81 82 83 84 85 86

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

87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 115 116 117 118 119 120 121 122 123 124 125 126 127 128 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

133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163

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 With End Sub

170

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

171 172 173 174 175 176 177 178 179 180 181

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

164 165 166 167 168 169

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

25

182 183

End If End Sub

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

Private Sub cmdCancel_Click() Unload Me End Sub

19 20 21

Private Sub cmdOK_Click() SaveSettings: Unload Me End Sub

22 23

Private Sub cmdWarnaJam_Click() UbahWarna Me.cmdWarnaJam End Sub

24 25 26

Private Sub cmdWarnaMenit_Click() UbahWarna Me.cmdWarnaMenit End Sub

27 28 29

Private Sub cmdWarnaDetik_Click() UbahWarna Me.cmdWarnaDetik End Sub

30 31 32 33 34

Sub UbahWarna(ctl As Control) With Me.dlgSet .ShowColor: ctl.BackColor = .Color End With End Sub

35 36 37 38 39 40 41 42 43

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 GetSettings End Sub

44 45

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", _

46 47 48 49 50

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

26

51 52 53 54 55 56 57 58 59 60 61

Me.cboTebalMenit.Text VBA.SaveSetting "Jam", "Tebal", "Detik", _ Me.cboTebalDetik.Text End 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 FileMake ssaverVian.exe. Pada dialog Make Prooject, Almatkan kombo “Save in:” ke: “C:\Windows\System32” (untuk OS Windows XP) atau ke: “C:\Windows\ System” (untuk OS Windows 98). Ketikkan: “Screen.scr” di kotak: “File name”. Terakhir OK.

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

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

27

Gambar 16.12. Dialog Display Propertis. Menampilkan form Setting.

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

16.6. Paint Mari kita mencoba membuat program pengolah grafis. Berikut ini contoh program untuk mengolah grafis seperti: Menggambar garis, kotak, dan lingkaran. Program ini mencontoh program aplikasi Ms. Paint yang merupakan program bawaan Windows untuk menggambar, menampilkan atau menangkap gambar/grafis. Program sederhana ini hanya meggunakan sebuah form. Sebelumnya seperti biasa, buat folder di: “C:\Menggali VB\Bab 16”, namai dengan “Paint”.

a. Desain Form Gambarkan 4 (empat) buah PictureBox. Ubah propertinya sebagai berikut: Pengaturan Properti Pengaturan pada: frmPaint No Objek Kontrol Properti Name BorderStyle 1 Picture1 Alignment Width (Posisi) Name BorderStyle 2 Picture2 Alignment Height (Posisi) Name AutoRedraw 3 Picture3 BorderStyle (Posisi) BackColor

Perubahan picLeft 0-None 3-Align Left 375 (Sisi kiri Form) picBawah 0-None 3-Align Bottom 645 (Sisi bawah Form) picGambar True 0-None (Sisi tengah Form) Putih

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

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

28

Pengaturan Properti Pengaturan pada: frmPaint No Objek Kontrol Properti Name Index Height 4 Option1 Width Style Picture Name Index Height 5 Option2 Width Style Picture Name Index Height 6 Option3 Width Style Picture

Perubahan optTool 0 375 375 1-Graphic Gambar berformat ico optTool 1 375 375 1-Graphic Gambar berformat ico optTool 2 375 375 1-Graphic Gambar berformat ico

Pada picBawah gambarkan dua buah PictureBox, empat buah Label, dan sebuah ComboBox. Ubah propertinya seperti table di bawah. Pengaturan Properti Pengaturan pada: frmPaint No Objek Kontrol Properti Name BackColor 7 Picture1 Height Width Name 8 Picture2 AutoRedraw Width 9 Label1 Caption Name 10 Label2 Caption Name 11 Label3 Caption Name 12 Label4 AutoSize Caption Name 13 Combo1 Text

Perubahan picPick Hitam 375 375 picColor True 3015 Line Width lblX X lblY Y lblRGB True R cboLineWidth 1

Tampilan akhir desain seperti gambar di berikut ini:

Gambar 16.14. Form saat didesain.

b. Baris Kode

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

29

Baris Kode Baris kode pada: frmPaint 1 Option Explicit 2 3 4 5

Dim Dim Dim Dim

6 7

Private Sub cboLineWidth_Change() Me.picGambar.DrawWidth = _ Val(Me.cboLineWidth.Text) End Sub

8 9 10 11 12 13 14

X1!, Y1!, Y1!, Y2!, cX!, cY!, LX!, LY!, PusatX!, PusatY!, Aspek!, Radius!, nTool% WarnaDasar As OLE_COLOR Seret As Boolean

Private Sub cboLineWidth_Click() Me.picGambar.DrawWidth = _ Val(Me.cboLineWidth.Text) End Sub

15

Private Sub Form_Unload(Cancel As Integer) On Error Resume Next VB.SavePicture Me.picGambar.Image, _ "C:\Gambar.bmp" End Sub

16 17 18 19 20

Private Sub optTool_Click(Index As Integer) If Me.optTool(Index).Value = True Then nTool = Index End If End Sub

21 22 23 24 25 26 27 28 29 30 31

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 With End Sub

32 33

Private Sub Form_Resize() Me.picGambar.Move picKiri.Width, 0, _ Me.ScaleWidth - Me.picKiri.Width, _ Me.ScaleHeight - Me.picBawah.Height End Sub

34 35 36 37 38 39 40 41 42 43 44 45 46 47

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).Picture End 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

48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103

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 If End 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 & " " & clr End 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

104 105 106 107 108 109 110 111 112 113 114 115 116

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 = 0 End Sub

117 118 119 120 121 122 123 124 125 126 127 128 129 130

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 = LX End Function

131 132 133 134 135 136 137

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 Next End Sub

138 139 140 141 142

c. Tes Program Jalankan program, klik sebuah tombol di sisi kiri layar, pindahkan pointer ke daerah kanvas (layar tengah), kemudian lakukan dragging di daerah kanvas. Tentukan ketebalan garis dengan memilih angka ketebalan pada combobox “LineWidth”. Coba pula klik tombol bergambar Ellips, pindahkan pointer ke daerah kanvas. Lakukkan dragging dengan menggunakan klik kanan di daerah kanvas. Klik tombol Close (x). Periksa drive C dengan menggunakan Windows Explorer. Anda akan menemukan sebuah file gambar dengan format (.bmp) dengan nama Gambar.bmp. Klik ganda file tersebut. Gambar dari file tersebut adalah gambar yang telah Anda buat pada program paint tadi.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

32

Gambar 16.15. Program sedang berjalan.

16.7. Brightness Ini adalah contoh program untuk menambahkan efek pencahayaan (brightness) suatu file gambar, yang mungkin sering Anda temukan pada program aplikasi pengolah grafis seperti CorelDraw, PhotoShop dan sebagainnya. Program ini hanya menggunakan sebuah form dan dua buah objek kontrol.

a. Desain Form Jalankan Visual Basic pada template VB Enterprise Edition Control. Masukkan sebuah PictureBox dan sebuah CommonDialog ke dalam form, kemudian atur propertinya sebagai berikut: Pengaturan Properti Pengaturan pada: Form1 No Objek Kontrol Properti Name AutoRedraw 1 Picture1 AutoSize ScaleMode Name 2 CommonDialog1

Perubahan picBright True True 3-Pixel cdlSave

Gambar 16.16. Desain form. Dengan Menu Editor, buatlah menu dan sub menu sesuai ketentuan table di bawah ini: Caption &File &Open &Save &Edit &Brightness

Name mnuFile mnuFileOpen mnuFileSaveAs mnuEdit mnuEdit Brightness

ShortCut Ctrl + O Ctrl + S Ctrl + B

CheckBox

Indentasi 0 1 1 0 1

b. Baris Kode Baris Kode Baris kode pada: Form1 1 Option Explicit Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

33

2

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

3

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

4

Const NilaTajam = 110

5 6 7

Private Sub mnuEditBrightness_Click() Dim Brightness As Single Dim WarnaBaru&, X%, Y%, R%, G%, B%

8 9 10 11

15 16 17 18 19 20 21 22 23

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

24 25 26 27 28 29

SetPixelV picBright.hDC, X, Y, RGB(R, G, B) Next Y If X Mod 10 = 0 Then picBright.Refresh Next X picBright.Refresh End Sub

30 31 32 33 34 35 36 37

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 With End Sub

12 13 14

38 39 40 41 42 43 44 45 46 47 48 49 50 51

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 With End Sub

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

34

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

16.8. Jaringan MLM Contoh program berikut ini adalah kutipan dari program aplikasi pengolah data MLM (Multi Level Marketing). Program ini menampilkan data jaringan seorang mitra suatu MLM. Dimana MLM ini menerapkan menggunakan sistem dua bawahan, artinya seorang mitra harus mempunyai dua orang mitra baru sebagai ‘bawahan’. Program berikut ini juga mengimplementasikan penggunaan variable array dinamis multidimensi, khusunya variable array dengan dimesi tiga. Buatlah sebuah folder di alamat: “C:\Menggali VB\Bab 16” dengan nama “MLM”.

a. Desain Database Sebelum memulai project, Anda harus membuat sebuah database. Dengan Ms. Access, buatlah sebuah file database dengan nama: “Data.mdb”, simpan database Anda di: “C:\Menggali VB\Bab 16\MLM”. Berikut ini struktur database yang harus Anda buat: Nama Tabel tblMitra Nama Field NO MITRA ID1 ID2 NAMA MITRA Primary Index pada:

Tipe Text Number Number Text NO MITRA

Ukuran 10 Long Integer Long Integer 50

Isikan sebanyak 20 (dua puluh) data ke dalam tblMitra tersebut, data seperti pada table di bawah ini. Nama Tabel NO MITRA 070510001 070510002 070510003 070510004 070510005 070510006 070510007 070510008 070510009 070510010 070510011 070510012 070510013 070510014 070510015 070510016 070510017 070510018 070510019 070510020

tblMitra ID1 0 1 1 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4

ID2 1 1 2 1 2 3 4 1 2 3 4 5 6 7 8 1 2 3 4 5

NAMA MITRA AGUNG VIANSASTRA NOVIAN SYAIFULAH AJAT JATNIKA PURBADI SAEPUL MIKDAR ARIF PERMANA YUDI ARMAN SANTOSO ABE HARIS A. SUBANA RITA ROSITA AYU DEWI SUHARYANTO FANNY PRATIWI R. RUDI PRAWIRANEGARA RETNO OKTAVIANI IRMA IRMAYANTI RUSMANJAYA RADEN ZAKARIA MOH. SANAJI

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

35

Gambar 16.17. Desain database dengan Ms. Access.

b. Desain Form Jalankan Visual Basic pada template VB Enterprise Edition Control. Tambahkan sebuah module. Namai degan mdlJaringan. Pada form tambahkan objek kontrol-objek kontrol dan atur propertinya, seperti pada table di bawah ini. Pengaturan Properti Pengaturan pada: Form1 No Objek Kontrol Properti 1 Label1 Caption 2 Combo1 Name Name 3 Command1 Caption Name Indentation 4 TreeView1 FullRowSelect HotTracking LabelEdit Name FullRowSelect 5 ListView1 GridLines LabelEdit View Name 6 Adodc1 Align Name 7 ImageList1 ImageHeight ImageWidth

Perubahan No. Mitra cboNoMitra cmdNama &Baca Nama trvAdo 100 True True 1-tvwManual lvwMitra True True 1-lvwManual 3-lvwReport adoData 2-vbAlignBottom imlIkon 16 16

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

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

36

Gambar 16.18. Desain form.

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

37

53 54 55 56 57 58 59

60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80

81 82 83 84 85 86 87 88 89 90 91 92

End If End 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 If End 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 If End Function

Baris kode pada: Form1 1 Option Explicit ' 2 Dim myList As ListItem ' 3 Private Sub cboNoMitra_Click() 4 On Error Resume Next 5 Call BuatTreeLevel(Me.cboNoMitra.Text) 6 Set myList = Me.lvwMitra.FindItem( _ 7 Me.cboNoMitra.Text, 1, , 1) myList.EnsureVisible myList.Selected = True 8 Me.lvwMitra.SetFocus 9 End Sub ' 10 Private Sub cmdNama_Click() 11 Me.LihatNama 12 End Sub Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

38

13 14 15 16 17 18 19 20 21

22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

' 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 = 0 End 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 With End 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

62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113

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 SimpanTag End 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 With End 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 With End Sub ' Sub BuatKolom() With Me.lvwMitra.ColumnHeaders .Add , , "No", 800, , 1 .Add , , "No Mitra", 1500, , 2 .Add , , "Nama Mitra", 2800, , 3 End With End Sub

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

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

40

Gambar 16.19. Program sedang berjalan.

16.9. HTML Maker Berikut ini contoh program untuk membuat dan mengedit file web atau HTML. Bagi Anda yang biasa menggunakan Notepad untuk membuat HTML, sekarang saatnya beralih ke program buatan Anda sendiri. Seperti biasa, buatlah sebuah folder baru, di alamat: “C:\Menggali VB\Bab 16”, namai dengan: “HTMLMaker”.

a. Desain Form Namai form dengan frmHTML. Buatlah menu-menu dengan ketentuan seperti pata tabel berikut ini: Name mnuFile mnuFileNew mnuFileOpen Spr11 mnuFileSave mnuFileSaveAs mnuFileExit mnuEdit mnuEditUndo mnuEditRedo Spr21 mnuEditCut mnuEditCopy mnuEditPaste mnuView mnuViewWeb

Caption &File &New &Open &Save Save &As... E&xit &Edit &Undo &Redo C&ut &Copy &Paste &View &Web Page

Shortcut Ctrl+N Ctrl+O Ctrl+S F12 Ctrl+Q Ctrl+Z Ctrl+Y Ctrl+X Ctrl+C Ctrl+V Ctrl+W

Indentasi 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1

Masukkan objek kontrol-objek kontrol berikut ini, dan atur properti-propertinya: Pengaturan Properti Pengaturan pada: Form1 No Objek Kontrol Properti Name Align 1 Picture1 BorderStyle Height Name 2 RichTextBox1 Appearance ScrollBar 3 CommonDialog1 Name Name 4 ImageList1 ImageHeight ImageWidth

Perubahan picTop 1-Align Top 0-Nono 855 rtbHTML 1-Flat 3-Both cdlHTML imlHTML 16 16

Pada kontrol ImageList, masukkan picture sebanyak 9 (sembilan) buah. Picture-picture ini bisa Anda dapatkan pada CD. Pada picTop, gambarkan objek kontrol-objek kontrol berikut ini dan atur properti-propertinya. Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

41

Pengaturan Properti Pengaturan pada: Form1 No Objek Kontrol Properti Name 5 ToolBar1 BorderStyle Style Name 6 Combo1 Style Sorted Name 7 Combo2 Style Sorted Name 8 Combo1 Style Sorted Name Index Max 9 HScrollBar1 LargeChange SmallChange Value Name Index Max 10 HScrollBar2 LargeChange SmallChange Value Name Index Max 11 HScrollBar3 LargeChange SmallChange Value Name 12 Picture1 BackColor

Perubahan tblHTML 0-ccNone 1-tbrFlat cboFormat 2-DropDownList True cboProperti 2-DropDownList True cboInsert 2-DropDownList True hscRGB 0 255 1 1 90 hscRGB 1 255 1 1 110 hscRGB 2 255 1 1 140 picWarna 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: Index Style 1 0-tbrDefault 2 0-tbrDefault 3 0-tbrDefault 4 3-tbrSeparator 5 0-tbrDefault 6 0-tbrDefault 7 0-tbrDefault 8 3-tbrSeparator 9 0-tbrDefault 10 0-tbrDefault 11 3-tbrSeparator 12 0-tbrDefault

Button tlbHTML ToolTipText New (Ctrl+N) Open (Ctrl+O) Save (Ctrl+S)

Image 1 2 3

Cut (Ctrl+X) Copy (Ctrl+C) Paste (Ctrl+V)

4 5 6

Undo (Ctrl+Z) Redo (Ctrl+Y)

7 8

Bowse (Ctrl+W)

9

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

42

Gambar 16.20. Desain Form. Tambahkan dua buah Module pada project Anda, namai dengan: mdlHTML dan mdlUndo.

b. Baris Kode Baris Kode Baris kode pada: mdlHTML 1 Option Explicit 2

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

3

Function MyShell(PathAndFile As String, _ Optional Parameters As String = "", _ Optional ShowCmd As Long _ = vbNormalNoFocus) As Long 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, _ ShowCmd End Function

4 5 6 7 8 9 10 11 12 13 14 15 16

17

Function StrukturAwal() As String StrukturAwal = "" & vbCrLf & _ vbCrLf & vbCrLf & " " & vbCrLf & "<TITLE> " & ".:. My Web .:. " vbCrLf & vbCrLf & " " & _ vbCrLf & " " & vbCrLf & vbCrLf & " " & vbCrLf & _ "" & vbCrLf & "" End Function

18 19 20

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

21 22 23 24 25 26 27 28 29 30 31 32 33

xClip = FRM!rtbHTML.SelText xHasil = "<" & sFormat & ">" & _ xClip & "" 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 & ">" & _ " " & "" FRM!rtbHTML.SelRTF = xHasil FRM!rtbHTML.SelStart = Awal + (Len(xHasil)\ 2) End Sub

Baris kode pada: mdlUndo 1 Option Explicit 2 3 4 5 6

Private vItem As Variant Private UniqueNum& Public Dirty As Boolean Public ColUndo As New Collection Public ColRedo As New Collection

7 8 9 10 11 12 13 14 15 16

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 = 0 End Sub

17 18 19 20 21 22 23

Public Sub UpdateUndo() On Error Resume Next UniqueNum = UniqueNum + 1 ColUndo.Add frmHTML.rtbHTML.Text, _ CStr(UniqueNum) If Dirty = False Then Exit Sub Dirty = True End Sub

24 25 26 27 28 29 30 31 32 33 34

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 With End Sub

35 36 37 38 39 40 41 42 43 44

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

45

End Sub

46 47 48 49 50 51

Public Sub ClearRedo() On Error Resume Next For Each vItem In ColRedo ColRedo.Remove 1 Next End Sub

Baris kode pada: frmHTML 1 Option Explicit 2 3

Dim BukaAlamat$, KonstWarna$ Dim SudahSimpan As Boolean

4 5 6 7 8

Private Sub cboProperti_Click() On Error Resume Next rtbHTML.SelText = " " & Me.cboProperti & "=" Me.rtbHTML.SetFocus End Sub

9

14 15 16 17 18 19 20 21 22

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 If End Sub

23 24 25 26 27

Private Sub mnuEditCopy_Click() With Me.rtbHTML Clipboard.SetText .SelText End With End Sub

28 29 30 31 32 33 34 35

Private Sub mnuEditCut_Click() UpdateUndo With Me.rtbHTML Clipboard.SetText .SelText .SelText = vbNullString UpdateUndo End With End Sub

36 37 38 39 40 41 42

Private Sub mnuEditPaste_Click() UpdateUndo With Me.rtbHTML .SelText = Clipboard.GetText UpdateUndo End With End Sub

43 44 45

Private Sub mnuEditRedo_Click() DoReDo End Sub

46

Private Sub mnuEditUndo_Click()

10 11 12 13

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

45

47 48

DoUnDo End Sub

49 50 51

Private Sub mnuFileExit_Click() Unload Me End Sub

52 53 54 55 56 57 58 59 60

Private Sub mnuFileNew_Click() With Me.rtbHTML .Text = StrukturAwal .SelStart = InStr(UCase(.Text), _ "") - 2 End With SudahSimpan = True: BukaAlamat$ = "" Me.Caption = "HTML Maker" End Sub

61 62 63 64 65 66

67 68 69 70 71 72 73 74 75 76 77

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 With End Sub

78 79 80 81 82 83 84 85 86 87

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 If End Sub

88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105

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 With End Sub Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

46

106 107 108 109 110 111 112 113 114

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.SetFocus End Sub

115 116 117 118 119 120

135 136 137 138 139

Private Sub cboInsert_Click() On Error Resume Next Dim Teks$ Select Case LCase(Me.cboInsert.Text) Case "text" Teks$ = "" Case "radio" Teks$ = "" Case "select" Teks$ = "<select size=" & """" & _ "1" & """" & " name=" & """" & _ "sct" & """" & ">" & vbCrLf & _ " " & _ vbCrLf & "" Case "submit" Teks$ = "" Case "reset" Teks$ = "" Case "button" Teks$ = "" Case "checkbox" Teks$ = "" Case "textarea" Teks$ = "" End Select With Me.rtbHTML .SelText = Teks: .SetFocus End With End Sub

140 141 142 143 144

Private Sub Form_Load() With Me.cboInsert .AddItem "Text": .AddItem "Submit" .AddItem "Reset": .AddItem "Button" .AddItem "Radio": .AddItem "Select"

121 122

123 124

125 126 127 128 129 130

131 132

133 134

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

47

145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166

.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

167 168 170 171 172

mnuFileNew_Click hscRGB_Change 0 hscRGB_Change 1 hscRGB_Change 2 End Sub

173 174

Private Sub Form_Resize() On Error Resume Next Me.rtbHTML.Move 0, picTop.Height, _ ScaleWidth, ScaleHeight - picTop.Height End Sub

175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191

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 If End Sub

192 193 194

Private Sub picWarna_DblClick() rtbHTML.SelText = """" & KonstWarna & """" End Sub

195

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

196 197 198 199 120 121 122 123

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

48

124 125 126 127 128 129 130 131 132

Me.rtbHTML.Refresh End If If KeyCode = vbKeyY Then DoReDo Me.rtbHTML.Refresh End If End If UpdateUndo End Sub

133

Private Sub rtbHTML_KeyPress( _ KeyAscii As Integer) SudahSimpan = False End Sub

134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155

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 If End 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 Select End Sub

157

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

158 159 160

Private Sub hscRGB_Scroll(Index As Integer) hscRGB_Change Index End Sub

156

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 dan .

2.

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

3.

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

4.

Geser-geserkan ketiga buah scrollbar, sampai Anda menemukan warna yang menarik (tercetak pada picturebox di sebelahnya). Jika sudah, klik ganda picturebox tersebut. Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

49

5.

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

6.

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

Program ini juga mendukung kemampuan Undo dan Redo, untuk membatalkan atau melanjutkan perintah-perintah pengeditan. List-list dari kombo-kombo yang ada, baru sedikit sekali. Silakan Anda menambahkan list-list dari kombo-kombo tersebut pada jendela kode.

Gambar 16.21. Program sedang berjalan. Di bawah ini contoh halaman web yang dibuat oleh aplikasi HTML Maker.

Gambar 16.22. Sebuah halaman Web.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

50

16.10.Music Player Ini adalah contoh program untuk memainkan file-file audio seperti (mp3, wav, dan mid), yang menyerupai program pemutar file audio yang popouler, Winamp. Seperti biasa, buatlah sebuah folder baru, di alamat: “C:\Menggali VB\Bab 16”, namai dengan: “Multimedia”.

a. Desain Form Jalankan program pada template Standard Exe. Anda perlu menambahkan komponen-komponen lain. Klik menu Projet Component... Tandai listchekbox-listchekbox berikut ini:  Microsoft Common Dialog Control 6.0  Microsoft Tabbed Dialog Control 6.0  Microsoft Windows Common Controls 6.0 (SP6)  Windows Media Player Gambarkan objek kontrol SSTab ke dalam form. Klik kanan SSTab, pilih Properties. Ubah propertinya sebagai berikut: Pengaturan Properti Pengaturan pada: Form1 No Objek Kontrol Properti Perubahan Name SSTab1 1 SSTab1 Orientation 1-ssTabOrientationBottom Style 1-ssStylePropertiPage Klik Tab 0 pada SSTab1, ubah Properti Caption dengan &Main. Klik Tab 1, ubah Properti Caption dengan Play&List. Klik Tab 2, ubah Properti Caption dengan. &About.

Gambar 16.23. Menambahkan SSTab pada form. Klik tab pertama (Main), tambahkan objek kontrol-objek kontrol sebagai berikut dan ubah propertinya sebagai berikut: Pengaturan Properti Pengaturan pada: Form1 No Objek Kontrol Properti Perubahan Name mplMusic Visible False 1 WMPlayer1 Volume -2500 Style 1-ssStylePropertiPage Name dlgMusic 2 CommonDialog1 MaxFileSize 1024 Name sldMain Max 100 3 Slider1 SmallChange 5 LargeChange 10 Name lblPos AutoSize True 4 Label1 BackColor Hitam Font Courier New, 48, Bold

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

51

5

Timer

6

Slider2

7

Command1

8

Command2

9

Command3

10

Command4

Name Enabled Interval Name Max SmallChange LargeChange Orientation TickStyle Name Caption Name Caption Name Caption Name Caption

tmrSlider True 900 sldVol 100 5 10 1-ccOrientationVertical 3-sldNoTicks cmdPrev |< P&rev cmdPlay > &Play cmdStop [] &Stop cmdNext >| &Next

Gambar 16.24. Desain pada tab pertama. Klik tab ke dua (PlayList), tambahkan objek kontrol-objek kontrol sebagai berikut dan ubah propertinya sebagai berikut: Pengaturan Properti Pengaturan pada: Form1 No Objek Kontrol Properti Perubahan Name lvwLagu BackColor Hitam FullRowSelect True GridLines True 11 ListView1 HotTracking True HideColumnHeader True HideSelection False View 3-lvwReport Name cmdBuka 12 Command1 Caption &Buka Name cmdSimpan 13 Command2 Caption &Simpan

Gambar 16.25. Desain pada tab ke dua. Klik tab ke tiga (About), tambahkan objek kontrol-objek kontrol sesuka Anda.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

52

b. Baris Kode Baris Kode Baris kode pada: Form1 1 Option Explicit 2 3 4 5 6 7

Private FileNames() As String Dim myList As ListItem Dim Detik%, Menit%, strMenit$, strDetik$ Dim FNum%, i%, JumList%, Waktu$ Dim AlamatDefault$, SaveFile$, sFile$ Dim PlayPause As Byte. LoadTips As String

8 9 10

Private Sub cmdBuka_Click() CariFile End Sub

11 12 13 14 15

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 With End Sub

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

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

51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106

End If End If End Sub

TandaiLagu

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 With End 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 With End 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 #FNum End 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

107 108

End If End Sub

109 110 111 112

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.Count End Sub

113 114 115 116 117 118 119 120 121 122 123 124 125

126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155

Sub BuatTabel() 'Membuat Kolom pada ListView With Me.lvwLagu.ColumnHeaders .Clear .Add , , , 500 .Add , , , Me.lvwLagu.Width - 1100 .Add , , , 300 End With End Sub Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

55

156 157 158

159

160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 197 198 199 200

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

201 202

End If End Sub

203 204 205 206 207

Private Sub Form_Unload(Cancel As Integer) 'Menyimpan PlayList saat form ditutup If Me.lvwLagu.ListItems.Count >= 1 Then SimpanDefaultPlayList End If End Sub

208 209 210 211

Private Sub lvwLagu_DblClick() PlayPause = 0 cmdPlay_Click End Sub

212

Private Sub lvwLagu_MouseDown( _ Button As Integer, Shift As Integer, _ x As Single, y As Single) 'Menghapus daftar pada listview 'saat mengklik kanan If Button = 2 Then Me.lvwLagu.ListItems.Remove _ Me.lvwLagu.SelectedItem.Index End If End Sub

213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239

240 241 242

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 = True End Sub ' Private Sub sldVol_Click() 'Mengubah volume dari Media Player Me.mplMusic.Volume = -Me.sldVol.Value * 2 End 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

243

End Sub

244 245 246 247 248 249 250 251 252 253 254 255 256 257

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 If End Function

258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300

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

301 302 303

310 311 312 313

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 With End Sub

314 315 316

Private Sub sldMain_Scroll() sldMain_Click End Sub

317 318 319

Private Sub sldVol_Scroll() sldVol_Click End Sub

304 305 306

307 308 309

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 filefile pada daftar. Nyaris seperti program Winamp bukan?

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

59

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

60

BAB XVIII LATIHAN-LATIHAN Meskipun ini adalah bab terakhir, tetapi justru bab ini merupakan bab khusus untuk Anda yang baru mengenal Visual Basic dan memerlukan latihan-latihan dalam membuat program. Bab ini sekaligus memenuhi saran yang masuk dari para pembaca, terima kasih atas saran Anda. Sebelumnya buatlah sebuah folder khusus di drive C, namai dengan “Latihan”. Untuk menyimpan komponen project, buat folder-folder baru di dalam folder “Latihan” tersebut, misal: “Lat1”, “Lat2”, dan seterusnya.

18.1. Latihan 1 Pada latihan pertama ini, saya mengajak Anda membuat program penggunaan operator Visual Basic untuk operasi aritmatika, seperti: penjumlahan, pengurangan, perkalian dan pembagian. Program ini menekankan penggunaan struktur Select Case. Jalankan Visual Basic pada template Standard Exe. Namai project Anda dengan nama pjkLat1. Namai Form1 dengan frmLat1. Ubah properti dari frmLat1 sebagai berikut: Pengaturan Properti Pengaturan pada: frmLat1 Properti Perubahan Kegunaan Kalkulator Caption Tampilan judul pada title bar form. Sederhana Mengubah bentuk title bar form BorderStyle 1-FixedSingle (hanya dilengkapi dengan sebuah tombol close). Mengubah bentuk dan ukuran font dari form, sehingga saat Anda menambahkan objek kontrol pada Font Courier New, 10 form, maka secara otomatis bentuk dan ukuran font dari objek kontrol tersebut mengikuti bentuk dan ukuran font dari form. Mengubah ikon form dan ikon Icon Gambar ikon (ico) program saat dikompail menjadi file eksekusi (exe). Mengatur posisi form pada layar, agar form otomatis berada di StartUpPosition 2-CenterScreen tengah-tengah layar saat program dijalankan. Masukkan objek kontrol-objek kontrol dan ubah propertinya, sebagai berikut: Pengaturan pada: No Kontrol

1

Label1

Pengaturan Properti frmLat1 Properti Perubahan Caption

Bilangan &1

AutoSize

1-True

BackStyle

0-Transparent

TabIndex

0

Kegunaan Mengubah teks yang ditampilkan. Agar ukuran Label mengikuti panjangnya teks yang tercetak. Agar warna dasar Label transparan/ mengikuti warna dasar form. Mengatur pelarian fokus saat Anda menekan tombol Tab pada keyboard.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

61

2

Label2

3

Label3

4

Label4

5

Text1

6

Text2

7

Text3

8

9

10

Combo1

Command1

Caption AutoSize BackStyle TabIndex Caption AutoSize BackStyle TabIndex Caption AutoSize BackStyle TabIndex

&Operator 1-True 0-Transparent 2 Bilangan &2 1-True 0-Transparent 4 Hasil 1-True 0-Transparent 7

Name

txtBil1

Text TabIndex Name Text TabIndex Name Text TabIndex

dikosongkan 1 txtBil2 dikosongkan 5 txtHasil dikosongkan 8

Name

cboOpr

Style

2-DropDown List

TabIndex

3

Name

cmdProses

Caption

&Proses

TabIndex

6

Caption

dikosongkan

Height

30

Frame1

Sda. Sda. sda. Sda. Sda. Sda. Sda. Sda. Sda. Sda. Sda. Sda. Memberi identitas pada TextBox, penting sekali untuk mengenalkan TextBox pada program. Mengkosongkan teks. Sda. Sda. Sda. Sda. Sda. Sda. Sda. Memberi identitas pada Combo, penting! Mengubah bentuk tampilan list ComboBox. Sda. Memberi identitas pada cmdProses, penting! Mengubah teks yang ditampilkan. Sda. Mengubah teks yang ditampilkan. 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 Kode Baris kode pada: frmLat1 1 Option Explicit

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

62

2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

17

18 19 20 21 22 23 24 25 26 27 28

29 30

31

'Event saat form akan ditampilkan 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 With End Sub 'Event saat mengklik tombol cmdProses Private 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" Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

63

32 33 34 35

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

Jalankan program! Masukkan angka kedalam textbox Bilangan 1, kemudian klik combobox Operator, pilih sebuah operator. Masukkan angka pada textbox Bilangan 2. klik tombol Proses. Pada textbox Hasil akan tercetak hasil dari operasi yang Anda tentukan. Catatan: Untuk latihan-latihan selanjutnya, biasakan untuk mengubah properti-properti dari form seperti cara pengaturan di atas.

18.2. Latihan 2 Latihan ke-dua ini adalah program untuk menentukan tarif untuk penumpang kereta api berdasarkan kota jurusan, kelas tempat duduk dan katagori usia penumpang. Program ini menekankan penggunaan struktur If ... Then ... Else dan Select Case. Jalankan Visual Basic pada template Standard Exe. Namai project Anda dengan nama pjkLat2. Namai Form1 dengan frmLat2. Masukkan objek kontrol-objek kontrol dan atur propertinya seperti pada tabel di bawah ini: Pengaturan pada: No Objek Kontrol 1 Label1 2 Combo1 3 Label2 4 Combo2 5 Label3 6

Option1

7

Option2

8

Command1

9

Frame1

10

Label4

11

Text1

12

Frame2

13

Shape1-Shape8

14

Label5-30

Pengaturan Properti frmLat2 Properti Perubahan Caption &Jurusan Name cboJurusan Caption &Kelas Name cboKelas Caption usia Name optUsia Caption &Dewasa Index 0 Name optUsia Caption &Anak-anak Index 1 Name cmdProses Caption &Proses Caption Dikosongkan Height 30 Caption TARIF Name txtTarif Alignment 1-Right Justify Text 0 Caption Keterangan Left, Top, Height, Atur sehingga membentuk Width tabel seperti gambar Left, Top, Width, Seperti pada gambar Caption

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

64

Gambar 18.2. Desain form. Catatan: Jika Anda merasa kesusahan menggunakan Shape untuk membentuk tabel seperti pada gambar, silakan tidak perlu Anda lakukan, karena tabel tersebut hanya sekedar informasi yang tidak berpengaruh terhadap baris kode. Ketikkan kode sumber berikut: Baris Kode Baris kode pada: frmLat2 1 Option Explicit 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 18

'Deklarasi variabel untuk sebuah modul Dim Jurusan As String Dim Kelas As String Dim Dewasa As Boolean 'Event saat tombol Proses diklik Private 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 ditampilkan Private 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

20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70

.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 = True End Sub 'Fungsi untuk menentukan BesarTarif Private 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

71 72 73 74 75 76 77 78 79 80 81

BesarTarif = 95000 Case "Yogyakarta" BesarTarif = 100000 Else BesarTarif = 0 End Select End If End Function 'Event saat memilih Option optUsia Private Sub optUsia_Click(Index As Integer) 'Mengisi Nilai Dewasa (True atau False) 'Nilai True jika memilih opsi Dewasa Dewasa = Me.optUsia(0).Value End Sub

Jalankan program! Tentukan: jurusan, kelas dan kategori usia, kemudian klik tombol Proses. Lihat hasilnya, samakan dengan daftar tarif pada tabel yang ditentukan. Catatan: Jurusan dan Kelas bersifat case sensitif, jika Anda mengetikkan: “JAKARTA”, maka tarif yang berlaku adalah 0. Karena pada case sensitif, “JAKARTA” berbeda dengan “Jakarta”. Untuk mengatasinya, silakan pelajari mengenai fungsi manipulasi String, pada Bab 5. 18.3.

Latihan 3

Latihan berikut ini adalah program untuk menentukan keliling lingkaran, luas lingkaran dan volume bola berdasarkan nilai jari-jari yang ditentukan oleh pengguna. Program ini mencontohkan penggunaan variabel konstanta. Jalankan Visual Basic pada template Standard Exe. Namai project Anda dengan nama pjkLat3. Namai Form1 dengan frmLat3. Masukkan objek kontrol-objek kontrol dan atur propertinya seperti pada tabel di bawah ini: Pengaturan Properti Pengaturan pada: frmLat3 No Objek Kontrol Properti 1 Label1 Caption Name 2 Text1 Alignment Text 3 Label2 Caption Name 4 Text2 Alignment Text 5 Label3 Caption Name 6 Text3 Alignment Text 7 Label4 Caption Name 8 Text4 Alignment Text Caption 9 Frame1 Height Name 10 Command1 Capion

Perubahan &Jari-jari txtJari 1-Right Justify 0 Keliling txtKel 1-Right Justify 0 Luas txtLuas 1-Right Justify 0 Volume Bola txtVol 1-Right Justify 0 Dikosongkan 30 cmdProses &Proses

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

67

Gambar 18.3. Desain form. Baris Kode Baris kode pada: frmLat2 1 Option Explicit 2 3 4 5 6 7 8

'Deklarasi Konstanta pi Const pi = 22 / 7 'Event saat mengklik tombol cmdProses Private 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

12

'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

13 14 15 16 17

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

9 10 11

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 ML MW AG DL

Jenis Kamar MELATI MAWAR ANGGREK DAHLIA

Kode Kelas E B X P

Jenis Kamar EKONOMI BISNIS EXECUTIVE PRESIDENT Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

68

ML MW AG DL

E 45.000 47.500 50.000 55.000

Tabel Tarif B X 65.000 85.000 67.500 87.500 70.000 90.000 75.000 95.000

V 105.000 107.500 110.000 115.000

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

P 125.000 127.500 130.000 135.000

P 20% 20% 20% 20%

Program ini menekankan penggunaan fungsi manipulasi string: Left, Mid, dan Right dan penyeleksian kondisi: If ... Then ... Else dan Select Case Jalankan Visual Basic pada template Standard Exe. Namai project Anda dengan nama pjkLat4. Namai Form1 dengan frmLat4. Masukkan objek kontrol-objek kontrol dan atur propertinya seperti pada tabel di bawah ini: Pengaturan Properti Pengaturan pada: frmLat4 No Objek Kontrol Properti 1 Label1 Caption Name 2 Text1 Text 3 Label2 Caption Name 4 Text2 Text 5 Label3 Caption Name 6 Text3 Text Caption 7 Frame1 Height 8 Label4 Caption Name 9 Text4 Text 10 Label5 Caption Name 11 Text5 Text 12 Label6 Caption Name 13 Text6 Text 14 Label7 Caption Name 15 Text7 Text 16 Label8 Caption Name 17 Text8 Text 18 Label9 Caption Name 19 Text9 Text Name 20 Command1 Caption

Perubahan &KODE txtKode ML-07-P TANGGAL &MASUK txtMasuk 12-01-06 TANGGAL K&ELUAR txtKeluar 15-01-06 Dikosongkan 30 KAMAR txtKamar Dikosongkan NOMOR txtNomor Dikosongkan LAMA MENGINAP txtLama 0 TARIF txtTarif 0 DISKON txtDiskon 0 TOTAL BAYAR txtTotal 0 cmdProses &Proses

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

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

69

Gambar 18.4. Desain form. Ketikkan kode sumber berikut ini: Baris Kode Baris kode pada: frmLat4 1 Option Explicit 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

'Deklarasi variabel level untuk sebuah modul Dim Kode As String Dim Masuk As Date Dim Keluar As Date Dim Lama As Integer Dim Kamar As String Dim Kelas As String Dim Nomor As String Dim Tarif As Long Dim Diskon As Long Dim Total As Long Private 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

32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77

78 79

80 81 82 83 84

'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

85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

'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 MW-24-E AG-09-B DL-82-X 18.5.

Tanggal Masuk 10-02-2006 11-02-2006 12-02-2006

Tanggal Keluar 11-02-2006 20-02-2006 12-02-2006

Latihan 5

Latihan berikut ini adalah membuat program “Billing”, utuk menghitung harga sewa dari seorang pengguna komputer, dengan harga sewa perjam adalah 1000. Jalankan Visual Basic pada template Standard Exe. Namai project Anda dengan nama pjkLat5. Namai Form1 dengan frmLat5. Pengaturan Properti Pengaturan pada: frmLat5 No Objek Kontrol Properti 1 Label1 Caption Name 2 Text1 Text 3 Label2 Caption Name 4 Text2 Text 5 Label3 Caption Name 6 Text3 Text 7 Label4 Caption Name 8 Text4 Text Name 9 Command1 Caption Name 10 Command2 Caption

Perubahan Jam Mulai txtMulai 00:00:00 Jam Sekarang txtSekarang 00:00:00 Lamanya txtLama 00:00:00 Tarif txtTarif 0 cmdMulai &Mulai cmdSelesai &Selesai

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

72

11

Timer1

12

Timer2

13

Timer3

Name Interval Name Interval Name Enabled Interval

tmrMulai 100 tmrSekarang 100 tmrLama False 100

Gambar 18.5. Desain form. Ketikkan kode sumber berikut ini: Baris Kode Baris kode pada: frmLat5 1 Option Explicit 'Deklarasi variabel level untuk sebuah modul 2 Dim WaktuMulai As Date 3 Dim WaktuSekarang As Date 4 Dim Lama As Date 5 Dim Mulai As Boolean 6 Dim Tarif As Long 7 Const HargaSewa = 1000 8 9 10 11 12 13 14 15 16 17 18 19 20 21

22 23 24 25

'Event saat mengklik tombol cmdMulai Private Sub cmdMulai_Click() 'Mengaktifkan var Mulai Mulai = True WaktuMulai = Me.txtMulai.Text Me.tmrMulai.Enabled = False Me.tmrLama.Enabled = True End Sub 'Event saat mengklik tombol cmdStop Private Sub cmdStop_Click() 'Mengaktifkan tmrMulai Me.tmrMulai.Enabled = True 'Menonaktifkan tmrLama Me.tmrLama.Enabled = False End Sub 'Event sebelum form ditutup Private 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 = 0 End Sub ' Private Sub tmrLama_Timer() Dim DetikLaju As Long Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

73

26 27 28 29 30 31 32 33 34 35 36 37 38

'Lama adalah WaktuMulai '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. " & Tarif End Sub ' Private Sub tmrMulai_Timer() Me.txtMulai.Text = Time End Sub ' Private Sub tmrSekarang_Timer() WaktuSekarang = Time Me.txtSekarang.Text = Time End Sub

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

Latihan 6

Latihan berikut ini adalah mendemonstrasikan penggunaan fungsi general yang berupa fungsi untuk menghitung nilai rata-rata, maksimum dan minimum dari sekumpulan angka-angka yang dimasukkan. Jalankan Visual Basic pada template Standard Exe. Namai project Anda dengan nama pjkLat6. Namai Form1 dengan frmLat6. Pengaturan Properti Pengaturan pada: frmLat6 No Objek Kontrol Properti Name 1 Label1 Caption Name 2 Text1 Align Text Name 3 Command1 Caption Caption 4 Frame1 Height

Perubahan lblAngka Angka ke-1 txtAngka 1-Right Justify 0 cmdProses &Proses Dikosongkan 30

Gambar 18.6. Desain form. Baris Kode Baris kode pada: frmLat6 1 Option Explicit 'Deklarasi variabel level untuk sebuah modul Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

74

2 3

Dim Posisi As Integer Dim Angka() As Double

4 5 6 7 8 9

'Deklarasi fungsi untuk menghitung Jumlah Function Jumlah(Angka() As Double) As Double Dim i As Long For i = 1 To UBound(Angka) Jumlah = Jumlah + Angka(i) Next End Function

10 11 12 13 14 15 16

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

17 18 19 20 21 22 23 24 25

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 Next End Function

26 27 28 29 30 31 32 33 34

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 Next End Function

35 36 37 38 39 40 41

Private Sub cmdProses_Click() CetakDiForm Posisi = 1 Me.lblAngka.Caption = "Angka ke-1" Me.cmdProses.Enabled = False Me.txtAngka.Text = 0 End Sub

42 43 44 45 46

Private Sub Form_Load() Me.Height = 6500 Me.AutoRedraw = True Posisi = 1 End Sub

47 48 49 50 51 52

Private Sub txtAngka_GotFocus() With Me.txtAngka .SelStart = 0 .SelLength = Len(.Text) End With End Sub

53 54 55

'Event saat menekan tombol 'saat pointer pada txtAngka Private Sub txtAngka_KeyPress( _ KeyAscii As Integer) ' ReDim Preserve Angka(Posisi) 'Jika menekan tombol Enter maka... If KeyAscii = 13 Then Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

75

56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87

Angka(Posisi) = CDbl(Me.txtAngka.Text) 'Memfokuskan txtAngka txtAngka_GotFocus Posisi = Posisi + 1 ' Me.lblAngka.Caption = _ "Angka ke-" & CStr(Posisi) Me.Cls Me.cmdProses.Enabled = True End If End 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

Gambar 18.7. Program menampilkan hasil proses. 18.7.

Latihan 7

Latihan berikut ini adalah mendemonstrasikan pemograman grafis dan penggunaan metoda dragging pada pemograman. Jalankan Visual Basic pada template Standard Exe. Namai project Anda dengan nama pjkLat7. Namai Form1 dengan frmLat7. Masukkan PictureBox, Frame dan CommandButton ke dalam form. Ubah properti-propertinya sebagai berikut: Pengaturan Properti Pengaturan pada: frmLat7 No Objek Kontrol Properti Name 1 Picture1 Appearance AutoRedraw 2 Frame1 Caption Name 3 Command1 Caption

Perubahan picGambar 0-Flat True Pilih Gambar cmdClear &Clear

Di dalam Frame, gambarkan sebuah PictureBox, dan atur properti-propertinya sebagai berikut: Pengaturan Properti Pengaturan pada: frmLat7 No Objek Kontrol Properti Name AutoSize BorderStyle 4 Picture1 DragMode Index Picture

Perubahan picCap True 0-None 1-Automatic 0 Gambar 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

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

Private Sub cmdClear_Click() 'Membersihkan PictureBox Me.picGambar.Cls x1 = 0: y1 = 0 x2 = Me.picGambar.ScaleWidth y2 = Me.picGambar.ScaleHeight End Sub

33 34 35 36 37 38

Private Sub Form_Load() x1 = 0: y1 = 0 x2 = Me.picGambar.ScaleWidth y2 = Me.picGambar.ScaleHeight Pilih = False End Sub

39 40

Private Sub Form_Resize() On Error Resume Next 'Menyesuaikan posisi dan ukuran picGambar 'dengan form Me.picGambar.Move 1560, 0, _ Me.ScaleWidth - 1560, Me.ScaleHeight End Sub

41 42

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

78

43 44 45

Private Sub picCap_Click(Index As Integer) idxGambar = Index End Sub

46

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).Picture End Sub

47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81

'Event saat meletakkan icon ke picGambar Private 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 If End Sub 'Event saat pointer mouse di atas picGambar Private 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 If End Sub 'Event saat melepas tombol mouse Private 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 If End 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, hPic End Sub

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

79

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

Gambar 18.9. Program sedang berjalan. 18.8.

Latihan 8

Latihan berikut ini adalah contoh program untuk mengacak nomor seperti saat pengundian. Jalankan Visual Basic pada Standard Exe. Namai project dengan pjkLat8. namai form1 dengan frmLat8. Ubah BackColor form menjadi warna hitam. Tambahkan objek kontrol-objek kontrol berikut ini dan atur propertinya. Pengaturan Properti Pengaturan pada: frmLat8 No Objek Kontrol Properti Name Style 1

Command1

Picture DisabledPicture

2

Timer1

3

Image1

Name Interval Enabled Name Picture

Perubahan cmdAcak 1-Graphic Gambar ikon (format .ico) Gambar ikon (format .ico) Timer1 100 False imgIcon Samakan dengan gambar dari properti: Picture cmdAcak

Gambar 18.10. Desain form. Ketikkan kode berikut: Baris Kode Baris kode pada: frmLat8 1 Option Explicit 2

Dim ANGKA$, Acak As Byte

3 4 5

Private Sub cmdAcak_Click() If Acak = 0 Then Acak = 1 'Mengaktifkan Timer Me.Timer1.Enabled = True 'Mengubah gambar tombol Me.cmdAcak.Picture = _ Me.cmdAcak.DisabledPicture

6 7

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

80

8

11 12

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

13 14 15 16

Private Sub Form_Load() Me.AutoRedraw = True AcakAngka End Sub

17 18 19

Private Sub Timer1_Timer() AcakAngka End Sub

20 21 22

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 Int(Rnd * 10) & Int(Rnd Int(Rnd * 10) & Int(Rnd Int(Rnd * 10) & Int(Rnd Int(Rnd * 10) & Int(Rnd Int(Rnd * 10) & Int(Rnd Int(Rnd * 10) & Int(Rnd 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 ANGKA End Sub

9 10

23 24 25

26 27 28 29 30 31 32 33 34 35 36 37 38

* * * * * * *

10) 10) 10) 10) 10) 10) 10)

& & & & & &

_ _ _ _ _ _

Jalankan program klik tombol.

Gambar 18.11. Program sedang berjalan. 18.9.

Latihan 9

Mari kita berkreasi dalam grafis! Latihan kali ini mendemonstrasikan cara memutar gambar dan menggambar transparan. Jalankan Visual Basic pada Standard Exe. Namai project dengan pjkLat9. namai form1 dengan frmLat9. Tambahkan objek kontrol-objek kontrol berikut ini dan atur propertinya.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

81

Pengaturan Properti Pengaturan pada: frmLat9 No Objek Kontrol Properti Name AutoSize 1 Picture1 Picture SacleMode Name AutoSize 2

Picture2

3

Command1

4

Command2

Picture SacleMode Name Caption Name Caption

Perubahan picSumber True Terserah Anda (bertipe bmp) 3-Pixel picSumber True Terserah Anda (bertipe bmp) 3-Pixel cmdPutar90 &Putar 90 cmdTransparan &Transparan

Gambar 18.12. Desain form. Ketikkan kode berikut: Baris Kode Baris kode pada: frmLat9 1 Option Explicit 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

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 Next End 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 'Menggambar transparan picTarget Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

82

20 21 22 23 24 25 26 27 28 29 30 31

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 YRd End Sub

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

Gambar 18.13. Program sedang berjalan. 18.10.

Latihan 10

Kali ini kita masih berkreasi dalam grafis! Latihan kali ini akan mendemonstrasikan cara memutar gambar dan menggambar transparan. Jalankan Visual Basic pada Standard Exe. Namai project dengan pjkLat10. namai form1 dengan frmLat10. Tambahkan objek kontrol-objek kontrol berikut ini dan atur propertinya. Pengaturan Properti Pengaturan pada: frmLat10 No Objek Kontrol Properti Name AutoSize 1 Picture1 Appearance BorderColor 2 Label1 Caption 3 Label2 Caption 4 Label3 Caption 5 Label4 Caption 6 Label5 Caption 7 Label6 Caption Name 8 Combo1 Text Name 9 Combo2 Text Name 10 Text1 Text Name 11 Text2 Text Name 12 Text3 Text

Perubahan picTulis True 0-Flat Putih &Nama Font &Ukuran Font Posisi &Kiri Posisi &Atas &Teks &Warna cboFont Dikosongkan cboUkuran Dikosongkan txtX 0 txtY 0 txtText Dikosongkan

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

83

13

Picture2

14

Command1

15

Command2

Name AutoSize Appearance BorderColor Name Caption Name Caption

picWarna True 0-Flat Putih cmdTulis &Tulis cmdClear &Clear

Gambar 18.14. Desain form. Ketikkan kode berikut: Baris Kode Baris kode pada: frmLat10 1 Option Explicit 2

Dim ptX, ptY, intX, intY

3

7 8 9

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 With End Sub

10 11 12

Private Sub cmdClear_Click() picTulis.Cls End Sub

13 14 15 16

20 21 22 23 24 25

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 = 0 End Sub

26

Private Sub Form_Paint()

4 5 6

17 18 19

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

84

27 28 29 30

33 34 35

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), 30 End Sub

36 37 38

Private Sub picWarna_Click() Form_Paint End Sub

39

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

31 32

40 41 42 43

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

Latihan 11

Bagaimana cara mempercantik MDIForm? Salah satunya mungkin dengan memberinya gambar. Tapi bagaimana caranya? MDIForm bisa dikatakan sebagai form yang ‘rewel’, karena tidak mudah untuk disisipi oleh objek kontrol. Latihan kali ini, adalah trik untuk mempercantik MDIForm. Jalankan Visual Basic pada Standard Exe. Namai project dengan pjkLat11. namai form1 dengan frmLogo. Tambahkan MDIForm ke dalam project Anda. Namai dengan mdiUtama. Kembali ke form1 (frmLogo). Ubah properti BorderStyle menjadi: 0-None. Ubah pula MDIChild menjadi: True. Tambahkan PictureBox. Ubah propertinya seperti pada tabel di bawah ini.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

85

Gambar 18.16. Desain Form dan MDIForm. Pengaturan Properti Pengaturan pada: frmLogo No Objek Kontrol Properti Name AutoSize 1 Picture1 Appearance BorderColor Picture Ketikkan kode berikut:

Perubahan picLogo True 0-Flat Putih Terserah Anda

Baris Kode Baris kode pada: mdiUtama 1 Option Explicit 2 3 4 5

Private Sub MDIForm_Resize() On Error Resume Next frmLogo.Move 0, 0, mdiUtama.ScaleWidth, _ mdiUtama.ScaleHeight End Sub

Baris kode pada: frmLogo 1 Option Explicit 2 3 4 6

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

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

Gambar 18.17. Program sedang berjalan. 18.12.

Latihan 12

Sekarang Anda akan saya ajak beranimasi. Berikut ini latihan animasi dengan menggunakan objek kontrol PictureClip. Jalankan Visual Basic pada Standard Exe. Namai project dengan pjkLat12. namai form1 dengan frmLat12. Klik menu ProjectComponent... Pada dialog yang ditampilkan, klik/tandai list “Microsoft PictureClip Control 6.0”, klik OK. Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

86

Gambarkan objek kontrol PictureClip, PictureBox, dan Timer ke dalam form. Ubah propertinya seperti pada tabel di bawah ini. Pengaturan Properti Pengaturan pada: frmLat12 No Objek Kontrol Properti Name Cols 1 PicClip1 Rows Picture Name AutoSize 2 Picture1 Appearance BorderColor Picture Name 3 Timer Interval

Perubahan pccDadu 6 3 Pada CD picDadu True 0-Flat Putih Terserah Anda Timer1 100

Gambar 18.18. Desain Form. Ketikkan kode berikut: Baris Kode Baris kode pada: frmLat12 1 Option Explicit 2

Dim x

3 4

Private Sub Form_Load() picDadu.Picture = pccDadu.GraphicCell(2) x = 1 End Sub

5 6 7 8 9 10 11 12 13 14

Private Sub Form_Resize() 'Melarikan picDadu ke tengah form Me.picDadu.Move _ (Me.ScaleWidth - Me.picDadu.Width) / 2, _ (Me.ScaleHeight - Me.picDadu.Height) / 2 End 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

Gambar 18.19. Program sedang berjalan.

Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian

88

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

[email protected]

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

Related Documents

Latihan-latihan.
May 2020 54
Latihan
May 2020 42
Latihan
November 2019 54
Latihan
December 2019 43
Latihan
May 2020 31
Latihan
October 2019 66

More Documents from "mohamed makki b mohamed zain"

Word
November 2019 43
Tips&trik V B & T P
November 2019 40
Menu Editor
November 2019 54
Agung Animasiformdelphi
November 2019 38
Latihan
November 2019 54
Agung Rental Pascal
November 2019 29