latihan

108
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: Inde x Key Inde x Key 1 komputer 14 xls 2 ini 15 mdb 3 inf 16 recycle 4 mid 17 filegeneric 5 wav 18 mp3 6 bat 19 folder1 7 exe 20 folder2 8 dll 21 diska 9 imf 22 cdrom 10 txt 23 desktop 11 jpg 24 disket 12 drivelepas 25 diskanet 13 doc Catatan : Hati-hati dalam pemberian nama Key dari Image-Image pada ImageList. Perbedaan huruf besar dan huruf kecil sangat berpengaruh pada hasil bersifat (case sensitif). Sisipkan objek kontrol dan atur propertinya seperti pada table di bawah ini: Pengaturan Properti Pengaturan Form1 Menggali Lebih Dalam Ms. Visual Basic 6.0 – Agung Novian 1

Upload: novian-agung

Post on 07-Jun-2015

2.170 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Latihan

BAB XVISEPULUH PROGRAM MENARIK

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

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

16.1. Windows Explorer

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

a. Desain Form

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

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

Index Key Index Key1 komputer 14 xls2 ini 15 mdb3 inf 16 recycle4 mid 17 filegeneric5 wav 18 mp36 bat 19 folder17 exe 20 folder28 dll 21 diska9 imf 22 cdrom10 txt 23 desktop11 jpg 24 disket12 drivelepas 25 diskanet13 doc

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

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

Pengaturan PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan

2 TreeViewName tvwExplorImageList imgMain

3 ListViewName lvwExplorImageList imgMain

4 RichTextBoxName rtbExplorAppearance 0-rtfFlatScrollBar 3-rtfBoth

5 ProgressBarName pgbExplorScrolling 1-ccScrollingSmooth

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

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

Page 2: Latihan

Gambar 16.1. Desain Form Explorer.

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

b. Baris Kode

Baris KodeBaris kode pada: Form11

2

3456

78910111213

14

1516171819202122232425262728293031323334

35

36

Option Explicit'Private Declare Function SendMessage _Lib "user32" Alias "SendMessageA" ( _ByVal hwnd As Long, ByVal wMsg As Long, _ByVal wParam As Long, lParam As Any) As Long'Private ObjekFile As New FileSystemObjectDim strPathX As StringDim TwipsInHimetric!Dim sPath As String'Private Sub Form_Load()On Error Resume Next Dim drvDrive As Drive Dim strIkon As String Dim strNama As String Dim fldFolder As Folder Dim fldDrive As Folder ' TwipsInHimetric = ScaleX(1, vbTwips, _ vbHimetric) For Each drvDrive In ObjekFile.Drives If drvDrive.DriveType = CDRom Then strIkon = "cdrom" If drvDrive.IsReady Then strNama = drvDrive.VolumeName Else: strNama = "CD-ROM" End If ElseIf drvDrive.DriveType = Fixed Then strIkon = "diska" If drvDrive.IsReady Then strNama = drvDrive.VolumeName Else: strNama = "Hard Drive" End If ElseIf drvDrive.DriveType = Remote Then strIkon = "diskanet" If drvDrive.IsReady Then strNama = drvDrive.ShareName Else: strNama = "Network Drive" End If ElseIf drvDrive.DriveType = Removable _ Then If drvDrive.DriveLetter = "A" Or _ drvDrive.DriveLetter = "B" Then strIkon = "disket"

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

Page 3: Latihan

373839202122

23242526272829303132

33

3435

36

3738394041

4243

44

45

46

4748

49

50

5152

5354

55

56

57

Else: strIkon = "drivelepas" End If If drvDrive.IsReady Then strNama = drvDrive.VolumeName Else If drvDrive.DriveLetter = "A" Or _ drvDrive.DriveLetter = "B" Then strNama = "Floppy Drive" Else: strNama = "Drive Lepas" End If End If If drvDrive.IsReady Then strNama = drvDrive.VolumeName Else strNama = "Tidak diketahui" End If End If ' tvwExplor.Nodes.Add , , "pc", _ "komputerku", "komputer", "komputer" tvwExplor.Nodes.Add "pc", _ tvwChild, drvDrive.Path, _ strNama & " (" & _ UCase(drvDrive.DriveLetter) & ":)", strIkon ' If drvDrive.IsReady Then Set fldDrive = ObjekFile.GetFolder( _ drvDrive.RootFolder) For Each fldFolder In fldDrive.SubFolders tvwExplor.Nodes.Add drvDrive.Path, 4, _ fldFolder.Path, fldFolder.Name, "folder1" Next End If Next Me.tvwExplor.Nodes(1).Selected = TrueEnd Sub

Private Sub Form_Resize() Me.tvwExplor.Move tvwExplor.Left, _ tvwExplor.Top, tvwExplor.Width, _ Me.ScaleHeight - Me.pgbExplor.Height Me.lvwExplor.Move lvwExplor.Left, _ lvwExplor.Top, Me.lvwExplor.Width, _ Me.ScaleHeight - Me.pgbExplor.Height Me.pgbExplor.Move 0, Me.ScaleHeight - _ Me.pgbExplor.Height, Me.ScaleWidth, _ Me.pgbExplor.Height Me.rtfExplor.Width = Me.ScaleWidth - _ Me.lvwExplor.Width - _ Me.tvwExplor.Width - 100 Me.rtfExplor.Height = Me.ScaleHeight - _ Me.pgbExplor.HeightEnd Sub

Private Sub lvwExplor_ItemClick( _ByVal Item As MSComctlLib.ListItem) Dim nSt As Integer Me.Caption = strPathX & IIf( _ Len(strPathX) <= 4, "", "\") & Item.Text LihatFile Me.CaptionEnd Sub'Private Sub tvwExplor_Collapse( _ByVal Node As MSComctlLib.Node) If Node.Image = "folder2" Then _ Node.Image = "folder1"End Sub'

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

Page 4: Latihan

58

596061626364

65

66676839

7071727374757677787980

81

82838485868788

899091

9293

9495

96979899100

101102

103104

105

Private Sub tvwExplor_Expand( _ByVal Node As MSComctlLib.Node) On Error Resume Next Dim SubSubfolder As Folder Dim Subfolder As Folder Dim fldFolder As Folder Dim i% If Node.Image = "folder1" Then _ Node.Image = "folder2" Set fldFolder = ObjekFile.GetFolder( _ Node.Key & "\") For Each Subfolder In fldFolder.SubFolders For Each SubSubfolder In Subfolder.SubFolders tvwExplor.Nodes.Add Subfolder.Path, 4, _ SubSubfolder.Path, _ SubSubfolder.Name, "folder1" i = i + 1 Me.pgbExplor.Value = i / _ fldFolder.SubFolders.Count * 100 'DoEvents Next If Me.pgbExplor.Value >= 100 Then Me.pgbExplor.Value = 0 i = 0 End If NextEnd Sub'Private Sub tvwExplor_NodeClick( _ByVal Node As MSComctlLib.Node) On Error Resume Next Dim SubSubfolder As Folder Dim fldFolder As Folder Dim filFile As File Dim Subfolder As Folder lvwExplor.ListItems.Clear Set fldFolder = ObjekFile.GetFolder( _ Node.Key & "\") strPathX = fldFolder Me.Caption = strPathX Dim xFile$, i As Integer ' For Each Subfolder In fldFolder.SubFolders lvwExplor.ListItems.Add , _ Subfolder.Path, Subfolder.Name, _ "folder1", "folder1" i = i + 1 Me.pgbExplor.Value = i / _ fldFolder.SubFolders.Count * 100 DoEvents Next For Each filFile In fldFolder.Files xFile = LCase(Right(filFile.Name, 3)) lvwExplor.ListItems.Add , _ fldFolder.Path & "\" & _ filFile.Name, filFile.Name, xFile, _ xFile i = i + 1 Me.pgbExplor.Value = i / _ fldFolder.Files.Count * 100 ' If Err Then lvwExplor.ListItems.Add , _ fldFolder.Path & "\" & _ filFile.Name, filFile.Name, _ "filegeneric", "filegeneric" End If

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

Page 5: Latihan

106107108109110111

112113114115116117118119120121122123124125126

127128

129130131132

133134

135136137138139140141142143144

Next If Me.pgbExplor.Value >= 100 Then Me.pgbExplor.Value = 0 i = 0 End IfEnd Sub 'Sub LihatFile(sFile As String) rtfExplor.Locked = False rtfExplor.Font.Size = 8 rtfExplor.Text = "" rtfExplor.SelAlignment = 0 rtfExplor.RightMargin = 0 sPath = sFile On Error GoTo ErrHandler Select Case LCase(Right$(sFile, 4)) Case ".bmp", ".jpg", ".gif" Dim pic As StdPicture Set pic = LoadPicture(sPath) Clipboard.Clear Clipboard.SetData pic SendMessage rtfExplor.hwnd, _ &H302, 0, 0 Clipboard.Clear rtfExplor.RightMargin = _ pic.Width \ TwipsInHimetric Case ".rtf" rtfExplor.LoadFile sPath, rtfRTF Case ".txt" rtfExplor.LoadFile sPath, _ rtfText Case Else rtfExplor.LoadFile sPath, _ rtfText End Select rtfExplor.Refresh rtfExplor.Locked = True Exit SubErrHandler: On Error GoTo 0 rtfExplor.Text = "Format tidak dikenal" rtfExplor.Refresh rtfExplor.Locked = TrueEnd Sub

c. Tes Program

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

Gambar 16.2. Program sedang berjalan, menampilkan file gambar.

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

Page 6: Latihan

16.2. Kalkulator

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

a. Desain Form

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

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

Objek pada: Form1Nama Objek Properti Perubahan

Command2

Name cmdOperatorIndex 0Caption /TabIndex 13

Command2

Name cmdOperatorIndex 1Caption +TabIndex 14

Command2

Name cmdOperatorIndex 2Caption xTabIndex 15

Command2

Name cmdOperatorIndex 3Caption -TabIndex 16

Command2

Name cmdOperatorIndex 4Caption =TabIndex 17

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

Objek pada: Form1Nama Objek Properti Perubahan

Command1Name cmdPercentCaption %TabIndex 18

Command2Name cmdDecimalCaption .TabIndex 19

Command3Name cmdCancelCaption CTabIndex 1

Command4Name cmdCancelEntryCaption CETabIndex 2

Label1

Name lblDisplayCaption 0.Alignment 1-Right Justify

BackColorPutih atau warna terang lainnya

TabIndex 0

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

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

Page 7: Latihan

Gambar 16.3. Desain Form kalkulator.

b. Baris Kode

Baris KodeBaris kode pada: Form11

234567

891011121314

151617181920

21222324252627282930

313233343536373839

4041

4243

Option Explicit

Dim Operator1, Operator2Dim DecimalFlag As IntegerDim NumOps As IntegerDim AkhirMasukanDim JnOperatorDim TempPembacaan

Private Sub cmdCancel_Click() On Error Resume Next lblDisplay = "0." Operator1 = 0 Operator2 = 0 Form_LoadEnd Sub'Private Sub cmdCancelEntry_Click() On Error Resume Next lblDisplay = "0." DecimalFlag = False AkhirMasukan = "CE"End Sub'Private Sub cmdDecimal_Click() On Error Resume Next If AkhirMasukan = "NEG" Then lblDisplay = "-0." ElseIf AkhirMasukan <> "NUMS" Then lblDisplay = "0." End If DecimalFlag = True AkhirMasukan = "NUMS"End Sub'Private Sub cmdNomor_Click(Index As Integer) On Error Resume Next If Len(lblDisplay) <= 17 Then If AkhirMasukan <> "NUMS" Then lblDisplay = "." DecimalFlag = False End If If DecimalFlag Then lblDisplay = lblDisplay + _ cmdNomor(Index).Caption Else lblDisplay = Left(lblDisplay, _ InStr(lblDisplay, ".") - 1) + _ cmdNomor(Index).Caption + "." End If If AkhirMasukan = "NEG" Then _

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

Page 8: Latihan

444546

474849505152535455

565758596061

62636465666768697071727374757677

78798081828384858687888990919293

949596979899100101

102103

lblDisplay = "-" & lblDisplay AkhirMasukan = "NUMS" End IfEnd Sub'Private Sub cmdOperator_Click(Index As Integer) On Error Resume Next TempPembacaan = lblDisplay If AkhirMasukan = "NUMS" Then NumOps = NumOps + 1 End If Select Case NumOps Case 0 If cmdOperator(Index).Caption = "-" _ And AkhirMasukan <> "NEG" Then lblDisplay = "-" & lblDisplay AkhirMasukan = "NEG" End If Case 1 Operator1 = lblDisplay If cmdOperator(Index).Caption = "-" _ And AkhirMasukan <> "NUMS" And _ JnOperator <> "=" Then lblDisplay = "-" AkhirMasukan = "NEG" End If Case 2 Operator2 = TempPembacaan Select Case JnOperator Case "+" Operator1 = Operator1 + Operator2 Case "-" Operator1 = Operator1 - Operator2 Case "X" Operator1 = Operator1 * Operator2 Case "/" If Operator2 = 0 Then MsgBox "Ga bisa membagi dengan Nol", _ 48, "Kalkulator" Else Operator1 = Operator1 / Operator2 End If Case "=" Operator1 = Operator2 Case "%" Operator1 = Operator1 * Operator2 End Select lblDisplay = Operator1 NumOps = 1 End Select If AkhirMasukan <> "NEG" Then AkhirMasukan = "OPS" JnOperator = cmdOperator(Index).Caption End IfEnd Sub

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

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

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

Page 9: Latihan

104105106107108109110111112113114115116117118119120121122

123124125126127128129

cmdNomor_Click (KeyAscii - 48) ElseIf KeyAscii = Asc("/") Then cmdOperator_Click (0) ElseIf KeyAscii = Asc("+") Then cmdOperator_Click (1) ElseIf KeyAscii = Asc("*") Then cmdOperator_Click (2) ElseIf KeyAscii = Asc("-") Then cmdOperator_Click (3) ElseIf KeyAscii = Asc("=") Then cmdOperator_Click (4) ElseIf KeyAscii = 13 Then cmdOperator_Click (4) ElseIf KeyAscii = Asc("%") Then cmdPercent_Click ElseIf KeyAscii = Asc(".") Then cmdDecimal_Click End IfEnd Sub

Private Sub Form_Load() On Error Resume Next DecimalFlag = False NumOps = 0 AkhirMasukan = "NONE" JnOperator = " "End Sub

c. Tes Program

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

16.3. Konversi Angka

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

Program ini juga hanya menggunakan satu buah form.

a. Desain Program

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

Pengaturan PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan1 Label1 Caption Angka Masukan2 Label2 Caption Konversi Romawi3 Label3 Caption Konversi Binear4 Label4 Caption Konversi Hexa5 Label5 Caption Konversi Huruf

6 Text1Name txtAngkaAlignment 1 – Right Justify

7 Text2Name txtKonversi1Alignment 0 – Left Justify

8 Text3Name txtKonversi2Alignment 1 – Right Justify

9 Text4Name txtKonversi3Alignment 1 – Right Justify

10 Text5 Name txtKonversi4Alignment 0 – Left Justify

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

Page 10: Latihan

Multiline TrueScrollBar 2 – Vertical

11 Command1Name cmdKonversiCaption &Konversi

Tampilan akhir desain form seperti pada gambar di bawah ini.

Gambar 16.4. Desain form Konversi.

Tambahkan sebuah Module pada project Anda, namai dengan mdlKonversi.

b. Baris Kode

Baris KodeBaris kode pada: mdlKonversi 1

23456789101112131415

161718192021222324252627

2829303132333435

3637

Dim HurufKe(20) As Double

Function HurufSatuan(Angka As Double) As String Select Case Angka Case 1: HurufSatuan = "se" Case 2: HurufSatuan = "dua" Case 3: HurufSatuan = "tiga" Case 4: HurufSatuan = "empat" Case 5: HurufSatuan = "lima" Case 6: HurufSatuan = "enam" Case 7: HurufSatuan = "tujuh" Case 8: HurufSatuan = "delapan" Case 9: HurufSatuan = "sembilan" Case 0: HurufSatuan = "" End SelectEnd Function

Function Huruf(Angka As Double) As String Dim Satuan$, Puluhan$, Ratusan$, Dim Ribuan$, PuluhRibuan$, RatusRibuan$ Dim Jutaan$, PuluhJutaan$, RatusJutaan$ Dim Milyaran$, PuluhMilyaran$ Dim RatusMilyaran$, Panjang%, i% Panjang = Len(CStr(Angka)) For i = 1 To 20 HurufKe(i) = 0 Next For i = Panjang To 1 Step -1 HurufKe(i) = (Mid(CStr(Angka), _ (Panjang + 1) - i, 1)) Next If HurufKe(1) = 1 Then Satuan = "satu" Else Satuan = HurufSatuan(HurufKe(1)) End If If HurufKe(2) > 1 Then Puluhan = HurufSatuan(HurufKe(2)) & _ "puluh " ElseIf HurufKe(2) = 1 Then If HurufKe(1) > 0 Then

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

Page 11: Latihan

38

39404142434445

4647

4849505152

53545556575859

6061

62636465666768

697071

727374

7576

777879

8081

8283848586

878889909192

Satuan = HurufSatuan(HurufKe(1)) & _ "belas" Else Satuan = "sepuluh" End If End If If HurufKe(3) > 0 Then Ratusan = HurufSatuan(HurufKe(3)) & _ "ratus " End If If HurufKe(5) > 1 Then PuluhRibuan = HurufSatuan(HurufKe(5)) & _ "puluh " If HurufKe(4) > 0 Then If HurufKe(4) = 1 Then Ribuan = "satu ribu " Else Ribuan = HurufSatuan( _ HurufKe(4)) & "ribu " End If Else Ribuan = "ribu " End If ElseIf HurufKe(5) = 1 Then If HurufKe(4) = 0 Then PuluhRibuan = HurufSatuan( _ HurufKe(4)) & "sepuluh ribu " Else PuluhRibuan = HurufSatuan( _ HurufKe(4)) & "belas ribu " End If Else If HurufKe(4) > 0 Then Ribuan = HurufSatuan(HurufKe(4)) & _ "ribu " End If End If '-------------------------------------- If HurufKe(6) > 0 Then If HurufKe(5) > 0 Then RatusRibuan = HurufSatuan( _ HurufKe(6)) & "ratus " ElseIf HurufKe(5) = 0 Then If HurufKe(4) = 0 Then RatusRibuan = HurufSatuan( _ HurufKe(6)) & "ratus ribu " Else RatusRibuan = HurufSatuan( _ HurufKe(6)) & "ratus " End If End If End If '------------------------------------ If HurufKe(8) > 1 Then PuluhJutaan = HurufSatuan(HurufKe(8)) & _ "puluh " If HurufKe(7) > 0 Then If HurufKe(7) = 1 Then Jutaan = "satu juta " Else Jutaan = HurufSatuan( _ HurufKe(7)) & "juta " End If Else Jutaan = "juta " End If ElseIf HurufKe(8) = 1 Then If HurufKe(7) = 0 Then

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

Page 12: Latihan

93

9495

96979899100101102

103104105106107

108109110111112113114115116

117118119

120121122123124125126127128129130131132

133134135136

137138

139

140141142143144145146147

PuluhJutaan = HurufSatuan( _ HurufKe(7)) & "sepuluh juta " Else PuluhJutaan = HurufSatuan( _ HurufKe(7)) & "belas juta " End If Else If HurufKe(7) > 0 Then If HurufKe(7) = 1 Then Jutaan = "satu juta " Else Jutaan = HurufSatuan( _ HurufKe(7)) & "juta " End If End If End If If HurufKe(9) > 0 Then RatusJutaan = HurufSatuan( _ HurufKe(9)) & "ratus " End If If HurufKe(11) > 1 Then PuluhMilyaran = HurufSatuan( _ HurufKe(11)) & "puluh " If HurufKe(10) > 0 Then If HurufKe(10) = 1 Then Milyaran = "satu milyar " Else Milyaran = HurufSatuan( _ HurufKe(10)) & "milyar " End If ElseIf HurufKe(10) = 0 Then PuluhMilyaran = HurufSatuan( _ HurufKe(11)) & "puluh milyar " End If ElseIf HurufKe(11) = 1 Then If HurufKe(10) > 0 Then PuluhMilyaran = HurufSatuan( _ HurufKe(10)) & "belas milyar " ElseIf HurufKe(10) = 0 Then PuluhMilyaran = "sepuluh milyar " End If ElseIf HurufKe(11) = 0 Then If HurufKe(10) = 1 Then Milyaran = "satu milyar " ElseIf HurufKe(10) > 1 Then Milyaran = HurufSatuan( _ HurufKe(10)) & "milyar " End If End If If HurufKe(12) > 0 Then RatusMilyaran = HurufSatuan( _ HurufKe(12)) & "ratus " End If Huruf = RatusMilyaran & PuluhMilyaran & _ Milyaran & RatusJutaan & _ PuluhJutaan & Jutaan & _ RatusRibuan & PuluhRibuan & _ Ribuan & Ratusan$ & Puluhan$ & SatuanEnd Function

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

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

Page 13: Latihan

148149150151152153154155156157158159160161162163

164165

166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213

Case 11: STRHEXA = "B" Case 12: STRHEXA = "C" Case 13: STRHEXA = "D" Case 14: STRHEXA = "E" Case 15: STRHEXA = "F" Case Else: STRHEXA = CStr(INTNILAI) End Select STRHASIL = STRHASIL + STRHEXA Loop Until IntAngka < NBASIS INTLEN = Len(STRHASIL): STREND = CStr(IntAngka) For J = INTLEN To 1 Step -1 STRSUB = STRSUB + Mid(STRHASIL, J, 1) Next If (Mid(STREND + STRSUB, 1, 1)) = "0" Then BASIS = Mid(STREND + STRSUB, _ 2, Len(STREND + STRSUB) - 1) Else: BASIS = STREND + STRSUB: End IfEnd Function

Function ROMAN(IntAngka As Integer) As String Dim i%, IntSeribu%, IntLimaRatus% Dim IntSeratus%, IntLimaPuluh% Dim IntSepuluh%, IntLima%, IntSatu% Dim StrSeribu$, StrLimaRatus$, StrSeratus$ Dim StrLimaPuluh$, StrSepuluh$ Dim StrLima$, StrSatu$, StrRomawi$ IntSatu = IntAngka IntSeribu = IntAngka \ 1000 IntSatu = IntAngka Mod 1000 IntLimaRatus = IntSatu \ 500 IntSatu = IntAngka Mod 500 IntSeratus = IntSatu \ 100 IntSatu = IntAngka Mod 100 IntLimaPuluh = IntSatu \ 50 IntSatu = IntAngka Mod 50 IntSepuluh = IntSatu \ 10 IntSatu = IntAngka Mod 10 IntLima = IntSatu \ 5 IntSatu = IntAngka Mod 5 For i = 0 To IntSeribu - 1 StrSeribu = StrSeribu + "M" Next If IntSeratus <> 4 Then For i = 0 To IntLimaRatus - 1 StrLimaRatus = StrLimaRatus + "D" Next End If For i = 0 To IntSeratus - 1 StrSeratus = StrSeratus + "C" Next If IntSeratus = 4 Then If IntLimaRatus = 1 Then StrSeratus = StrRomawi + "CM" Else: StrSeratus = StrRomawi + "CD" End If End If If IntSepuluh <> 4 Then For i = 0 To IntLimaPuluh - 1 StrLimaPuluh = StrLimaPuluh + "L" Next End If For i = 0 To IntSepuluh - 1 StrSepuluh = StrSepuluh + "X" Next If IntSepuluh = 4 Then If IntLimaPuluh = 1 Then StrSepuluh = StrRomawi + "XC"

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

Page 14: Latihan

214215216217218219220221222223224225226227228229230231

232233

Else: StrSepuluh = StrRomawi + "XL" End If End If If IntSatu <> 4 Then For i = 0 To IntLima - 1 StrLima = StrLima + "V" Next End If For i = 0 To IntSatu - 1 StrSatu = StrSatu + "I" Next If IntSatu = 4 Then If IntLima = 1 Then StrSatu = StrRomawi + "IX" Else: StrSatu = StrRomawi + "IV" End If End If StrRomawi = StrSeribu + StrLimaRatus _ + StrSeratus + StrLimaPuluh _ + StrSepuluh + StrLima + StrSatu ROMAN = StrRomawiEnd Function

Baris kode pada: Form11

23

4

5

6

7

Option Explicit

Private Sub cmdKonversi_Click() Me.txtKonversi1.Text = _ ROMAN(CInt(Me.txtAngka.Text)) Me.txtKonversi2.Text = _ BASIS(CInt(Me.txtAngka.Text), 2) Me.txtKonversi3.Text = _ BASIS(CInt(Me.txtAngka.Text), 16) Me.txtKonversi4.Text = _ Huruf(CDbl(Me.txtAngka.Text))End Sub

c. Tes Program

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

Gambar 16.5. Program Konversi sedang berjalan.

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

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

Page 15: Latihan

16.4. Text Editor

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

a. Desain Form

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

Gambar 16.6. Property Pages ImageList.

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

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

Tampilan akhir desain seperti pada gambar di bawah:

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

Page 16: Latihan

Gambar 16.7. Desain form Editor.

b. Baris Kode

Baris KodeBaris kode pada: Form11

2

3

4567891011

1314151617181920

2122232425262728

29303132

333435

363738

394041424344

45464748

Option Explicit

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

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

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

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

Private Sub ECopy() Clipboard.SetText Me.rtbEditor.SelRTFEnd Sub

Private Sub EPaste() Me.rtbEditor.SelRTF = Clipboard.GetTextEnd Sub

Private Sub EOpen() With Me.cdlEditor .DialogTitle = "Buka File" .CancelError = True .FileName = "" .Filter = "Rich Text Format (*.rtf)" & _ "|*.rtf|Word Document (*.doc)" & _ "|*.doc|Text Document (*.txt)" & _ "|*.txt|Semua File (*.*)|*.*" On Error Resume Next .ShowOpen: On Error GoTo 0 If .FileName = "" Then Exit Sub

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

Page 17: Latihan

49505152

535455565758

596061626364

6566676869

70717273747576

7778798081828384858687

888990

919293

949595

96979899100101102

103104

Else: Me.rtbEditor.FileName = .FileName End If End WithEnd Sub

Private Sub EFont() With Me.cdlEditor .Flags = &H3 Or &H100 Or &H1 .FontBold = Me.rtbEditor.SelBold .FontItalic = Me.rtbEditor.SelItalic .FontUnderline = _ rtbEditor.SelUnderline .FontName = Me.rtbEditor.SelFontName .FontSize = Me.rtbEditor.SelFontSize .ShowFont rtbEditor.SelBold = .FontBold rtbEditor.SelItalic = .FontItalic rtbEditor.SelUnderline = _ .FontUnderline rtbEditor.SelColor = .Color rtbEditor.SelFontSize = .FontSize rtbEditor.SelFontName = .FontName End WithEnd Sub

Private Sub EGambar() Dim pic As StdPicture With Me.cdlEditor .DialogTitle = "Buka File" .CancelError = True .FileName = "" .Filter = "Gambar JPG (*.jpg)" & _ "|*.jpg|Gambar Bmp (*.bmp)" & _ "|*.bmp" On Error Resume Next .ShowOpen: On Error GoTo 0 If .FileName = "" Then Exit Sub Else: Set pic = LoadPicture(.FileName) Clipboard.Clear: Clipboard.SetData pic SendMessage rtbEditor.hwnd, &H302, 0, 0 rtbEditor.SelText = vbCrLf End If End WithEnd Sub

Private Sub ERight() Me.rtbEditor.SelAlignment = rtfRightEnd Sub

Private Sub ECenter() Me.rtbEditor.SelAlignment = rtfCenterEnd Sub

Private Sub ELeft() Me.rtbEditor.SelAlignment = rtfLeftEnd Sub

Private Sub ESave() With Me.cdlEditor .DialogTitle = "Simpan File" .CancelError = True .FileName = "" .Filter = "Rich Text File (*.rtf)" & _ "|*.rtf" On Error Resume Next .ShowSave: On Error GoTo 0 If .FileName = "" Then

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

Page 18: Latihan

105106107108109110

111112113

114115116

117118119

120

121122123

124125126

127128129

130131132

133134135

136137138

139140141

142143144

145146147

148149150

151152153

154155156

Exit Sub Else: Error Resume Next Me.rtbEditor.SaveFile .FileName End If End WithEnd Sub

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

Private Sub Form_Load() rtbEditor_SelChange: Call TambahkanGambar MeEnd Sub

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

Private Sub mnuEBold_Click() Call EBoldEnd Sub

Private Sub mnuECenter_Click() Call ECenterEnd Sub

Private Sub mnuECopy_Click() Call ECopyEnd Sub

Private Sub mnuECut_Click() Call ECutEnd Sub

Private Sub mnuEFont_Click() Call EFontEnd Sub

Private Sub mnuEGambar_Click() Call EGambarEnd Sub

Private Sub mnuEItalic_Click() Call EItalicEnd Sub

Private Sub mnuELeft_Click() Call ELeftEnd Sub

Private Sub mnuENew_Click() Call ENewEnd Sub

Private Sub mnuEOpen_Click() Call EOpenEnd Sub

Private Sub mnuEPaste_Click() Call EPasteEnd Sub

Private Sub mnuEQuit_Click() Unload MeEnd Sub

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

Page 19: Latihan

157158159

160161162

163164165

166

167168169170

171172173

174175176177178179180181182183184185186187188189190191192193194195196

Private Sub mnuERight_Click() Call ERightEnd Sub

Private Sub mnuEUnderline_Click() Call EUnderlineEnd Sub

Private Sub mnuESave_Click() Call ESaveEnd Sub

Private Sub rtbEditor_MouseDown( _Button As Integer, Shift As Integer, _x As Single, y As Single) If Button = 2 Then Me.PopupMenu Me.mnuEditor, 2 Or 4 TambahkanGambar Me : End IfEnd Sub

Private Sub rtbEditor_SelChange() With Me.rtbEditor If .SelBold = True Then Me.mnuEBold.Checked = True Else: Me.mnuEBold.Checked = False End If If .SelItalic = True Then Me.mnuEItalic.Checked = True Else: Me.mnuEItalic.Checked = False End If If .SelUnderline = True Then Me.mnuEUnderline.Checked = True Else: Me.mnuEUnderline.Checked = False End If Me.mnuELeft.Checked = False Me.mnuECenter.Checked = False Me.mnuERight.Checked = False If .SelAlignment = 0 Then Me.mnuELeft.Checked = True ElseIf .SelAlignment = 1 Then Me.mnuERight.Checked = True ElseIf .SelAlignment = 2 Then Me.mnuECenter.Checked = True End If End With Call TambahkanGambar MeEnd Sub

c. Tes Program

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

Page 20: Latihan

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

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

Cobalah untuk menggunakan semua menu yang disediakan

16.5. Screen Saver

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

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

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

a. Desain Program

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

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

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

Objek pada: frmJAMNama Object Properti Pengaturan

Picture1

Name picLogoAutosize TrueAutoRedraw TrueBorderStyle 0-NoneDrawStyle 0-SolidFillStyle 1-TransparentPicture Terserah Anda

Timer1Name tmrJamInterval 100

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

Page 21: Latihan

Gambar 16.9. Desain form frmJAM.

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

Pengaturan PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan1 Frame Caption Tebal Jarum2 Frame Caption Warna Jarum3 Label1 Caption Jam4 Label2 Caption Jam5 Label3 Caption Menit6 Label4 Caption Menit7 Label5 Caption Detik8 Label6 Caption Detik9 Label7 Caption Alamat &Gambar10 Text1 Name txtAlamat11 Combo1 Name cboTebalJam12 Combo2 Name cboTebalMenit13 Combo3 Name cboTebalDetik

14 Command1Name cmdAlamatCaption …

15 Command2Name cmdWarnaJamCaption …

16 Command3Name cmdWarnaMenitCaption …

17 Command4Name cmdWarnaDetikCaption …

18 Command5Name cmdOKCaption OKDefault True

19 Command6Name cmdCancelCaption CancelCancel True

20 CommonDialog Name dlgSet

Gambar 16.10. Desain form frmSET.

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

b. Baris kode

Baris KodeBaris kode pada: Module11

2

Option Explicit

Public Declare Function SystemParametersInfo _Lib "user32" Alias "SystemParametersInfoA" _(ByVal uAction As Long, ByVal uParam As Long, _ByRef lpvParam As Any, _ByVal fuWinIni As Long ) As Long

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

Page 22: Latihan

3

4

567891011

12

1314

15

1617

18

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

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

Const HWND_TOPMOST = -1Const HWND_NOTOPMOST = -2Const SWP_NOMOVE = &H2Const SWP_NOSIZE = &H1Const SWP_NOACTIVATE = &H10Const SWP_SHOWWINDOW = &H40Const TOPMOST_FLAGS = _ SWP_NOMOVE Or SWP_NOSIZE Public Const SPI_SETSCREENSAVEACTIVE = 17

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

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

Baris kode pada: frmJAM1

2345678

10111213141516171819202122232425262728293031323334

Option Explicit

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

Sub Loading() On Error Resume Next Dim i, Sudut, X, Y, J GetSettings Me.picLogo.Picture = LoadPicture(Alamat) Me.KeyPreview = True MakeTopMost Me Me.BackColor = 0 Me.linJam(0).X1 = -100 Me.linJam(0).X2 = -200 With Me.picLogo .Cls .PaintPicture .Picture, 0, 0, _ .Width, .Height End With Me.picLogo.AutoSize = True For i = 0 To 10 If i > 0 Then Load linJam(i) linJam(i).Visible = True Next i Me.picLogo.Scale (-1, 1)-(1, -1) Sudut = J * 2 * Atn(1) / 15 linJam(J).X1 = 3 * Cos(Sudut) linJam(J).Y1 = 3 * Sin(Sudut) linJam(J).X2 = Cos(Sudut)

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

Page 23: Latihan

353637

38

3940

414243

444546474849505152

535455565758596061

61

6263

6465666768

69

70717273

7475

76

7879

80818283848586

linJam(J).Y2 = Sin(Sudut) linJam(J).BorderColor = vbBlueEnd Sub

Private Sub Form_KeyDown( _KeyCode As Integer, Shift As Integer) Unload Me: EndEnd Sub

Private Sub Form_Load()Dim X X = SystemParametersInfo( _ SPI_SETSCREENSAVEACTIVE, 0, ByVal 0&, 0) Select Case UCase(Mid(Command$, 2, 1)) Case Is = "P" Unload Me: End: Exit Sub Case Is = "C" FSET.Show Unload Me Exit Sub Case Is = "A" MsgBox "Password tidak" & _ " disediakan", 64, "Informasi" Unload Me: End: Exit Sub Case Is = "S" X = ShowCursor(False) Me.Show Case Else X = ShowCursor(True) Unload Me: End: Exit Sub End SelectEnd Sub

Private Sub Form_MouseMove(Button As Integer, _Shift As Integer, X As Single, Y As Single) Me.TutupMouse X, YEnd Sub

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

Private Sub Form_Unload(Cancel As Integer)Dim Ret MakeNormal Me Ret = SystemParametersInfo( _ SPI_SETSCREENSAVEACTIVE, 2, ByVal 0&, 0) Ret = ShowCursor(True)End Sub

Private Sub picLogo_MouseMove( _Button As Integer, Shift As Integer, _X As Single, Y As Single) TutupMouse X, YEnd Sub

Private Sub tmrJam_Timer()On Error Resume Next Const LenganJam = 10 Const LenganJam2 = 9 Const LenganJam3 = 8 Const LenganMenit = 7 Const LenganMenit2 = 6

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

Page 24: Latihan

87888990919293949596

979899100101

102

103

104105106

107

108

109

110

111112113

115

116

117

118

119120121

122

123

124

125

126127128

129

130

131

132

Const LenganMenit3 = 5 Const LenganDetik = 4 Const LenganDetik2 = 3 Const LenganDetik3 = 2 Dim Sudut Static DetikAkhir If Second(Now) = DetikAkhir Then Exit Sub DetikAkhir = Second(Now) With Me Sudut = 0.5236 * (15 - (Hour(Now) + _ Minute(Now) / 60) + 0.2) .linJam(LenganJam).X1 = 0 .linJam(LenganJam).Y1 = 0 .linJam(LenganJam).X2 = 0.3 * Cos(Sudut) .linJam(LenganJam).Y2 = 0.3 * Sin(Sudut) .linJam(LenganJam).BorderColor = _ WarnaJam .linJam(LenganJam).BorderWidth = _ TebalDetik Sudut = 0.5236 * (15 - (Hour(Now) + _ Minute(Now) / 60) - 0.2) .linJam(LenganJam2).X1 = 0 .linJam(LenganJam2).Y1 = 0 .linJam(LenganJam2).X2 = 0.3 * _ Cos(Sudut) .linJam(LenganJam2).Y2 = 0.3 * _ Sin(Sudut) .linJam(LenganJam2).BorderColor = _ WarnaJam .linJam(LenganJam2).BorderWidth = _ TebalDetik Sudut = 0.5236 * (15 - (Hour(Now) + _ Minute(Now) / 60)) .linJam(LenganJam3).X1 = 0 .linJam(LenganJam3).Y1 = 0 .linJam(LenganJam3).X2 = 0.4 * _ Cos(Sudut) .linJam(LenganJam3).Y2 = 0.4 * _ Sin(Sudut) .linJam(LenganJam3).BorderColor = _ WarnaJam .linJam(LenganJam3).BorderWidth = _ TebalDetik Sudut = 0.1047 * (75 - (Minute(Now) + _ Second(Now) / 60) + 0.4) .linJam(LenganMenit).X1 = 0 .linJam(LenganMenit).Y1 = 0 .linJam(LenganMenit).X2 = 0.5 * _ Cos(Sudut) .linJam(LenganMenit).Y2 = 0.5 * _ Sin(Sudut) .linJam(LenganMenit).BorderColor = _ WarnaMenit .linJam(LenganMenit).BorderWidth = _ TebalMenit Sudut = 0.1047 * (75 - (Minute(Now) + _ Second(Now) / 60) - 0.4) .linJam(LenganMenit2).X1 = 0 .linJam(LenganMenit2).Y1 = 0 .linJam(LenganMenit2).X2 = 0.5 * _ Cos(Sudut) .linJam(LenganMenit2).Y2 = 0.5 * _ Sin(Sudut) .linJam(LenganMenit2).BorderColor = _ WarnaMenit .linJam(LenganMenit2).BorderWidth = _ TebalMenit Sudut = 0.1047 * (75 - (Minute(Now) + _

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

Page 25: Latihan

133134135136137

138

139140141142143144

145

146147148149150151

152

153154155156157158

159

160161

162163

164

165

166

167

168

169

170

171172173174175176177178179180181

Second(Now) / 60)) .linJam(LenganMenit3).X1 = 0 .linJam(LenganMenit3).Y1 = 0 .linJam(LenganMenit3).X2 = 0.6 * Cos(Sudut) .linJam(LenganMenit3).Y2 = 0.6 * Sin(Sudut) .linJam(LenganMenit3).BorderColor = _ WarnaMenit .linJam(LenganMenit3).BorderWidth = _ TebalMenit Sudut = 0.1047 * (75 - Second(Now) + 0.2) .linJam(LenganDetik).X1 = 0 .linJam(LenganDetik).Y1 = 0 .linJam(LenganDetik).X2 = 0.6 * Cos(Sudut) .linJam(LenganDetik).Y2 = 0.6 * Sin(Sudut) .linJam(LenganDetik).BorderColor = _ WarnaDetik .linJam(LenganDetik).BorderWidth = _ TebalDetik Sudut = 0.1047 * (75 - Second(Now) - 0.2) .linJam(LenganDetik2).X1 = 0 .linJam(LenganDetik2).Y1 = 0 .linJam(LenganDetik2).X2 = 0.6 * Cos(Sudut) .linJam(LenganDetik2).Y2 = 0.6 * Sin(Sudut) .linJam(LenganDetik2).BorderColor = _ WarnaDetik .linJam(LenganDetik2).BorderWidth = _ TebalDetik Sudut = 0.1047 * (75 - Second(Now)) .linJam(LenganDetik3).X1 = 0 .linJam(LenganDetik3).Y1 = 0 .linJam(LenganDetik3).X2 = 0.7 * Cos(Sudut) .linJam(LenganDetik3).Y2 = 0.7 * Sin(Sudut) .linJam(LenganDetik3).BorderColor = _ WarnaDetik .linJam(LenganDetik3).BorderWidth = _ TebalDetik End WithEnd Sub

Sub GetSettings() WarnaJam = CLng(VBA.GetSetting("Jam", _ "Warna", "Jam", CLng(vbRed))) WarnaMenit = CLng(VBA.GetSetting("Jam", _ "Warna", "Menit", CLng(vbGreen))) WarnaDetik = CLng(VBA.GetSetting("Jam", _ "Warna", "Detik", CLng(vbBlue))) TebalJam = CStr( _ VBA.GetSetting("Jam", "Tebal", "Jam", "5")) TebalMenit = CStr( _ VBA.GetSetting("Jam", "Tebal", "Jam", "5")) TebalDetik = CStr( _ VBA.GetSetting("Jam", "Tebal", "Jam", "5")) Alamat = CStr(VBA.GetSetting("Jam", _ "Alamat", "Gambar", App.Path & "\Jam.Bmp"))End Sub

Sub TutupMouse(X As Single, Y As Single) Static xAkhir, yAkhir Dim xSkr, ySkr xSkr = X: ySkr = Y If xAkhir = 0 And yAkhir = 0 Then xAkhir = xSkr yAkhir = ySkr Exit Sub End If If xSkr <> xAkhir Or ySkr <> yAkhir Then Unload Me: End

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

Page 26: Latihan

182183

End IfEnd Sub

Baris kode pada: frmSET1

2345689101112131415

161718

192021

22

23

242526

272829

3031323334

353637383940414243

4445

46

47

48

49

50

Option Explicit'Private Sub cmdAlamat_Click() With Me.dlgSet .DialogTitle = "Pilih Gambar" .Flags = 4096 .Filter = "File Gambar|*.jpg;*.bmp;*.gif" .CancelError = True On Error Resume Next .ShowOpen If .FileName <> "" Then Me.txtAlamat.Text = .FileName End If End WithEnd Sub

Private Sub cmdCancel_Click() Unload MeEnd Sub

Private Sub cmdOK_Click() SaveSettings: Unload MeEnd Sub

Private Sub cmdWarnaJam_Click() UbahWarna Me.cmdWarnaJamEnd Sub

Private Sub cmdWarnaMenit_Click() UbahWarna Me.cmdWarnaMenitEnd Sub

Private Sub cmdWarnaDetik_Click() UbahWarna Me.cmdWarnaDetikEnd Sub

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

Private Sub Form_Load() Dim i As Integer For i = 1 To 10 Me.cboTebalJam.AddItem CStr(i) Me.cboTebalMenit.AddItem CStr(i) Me.cboTebalDetik.AddItem CStr(i) Next GetSettingsEnd Sub

Sub SaveSettings() VBA.SaveSetting "Jam", "Warna", "Jam", _ CStr(Me.cmdWarnaJam.BackColor) VBA.SaveSetting "Jam", "Warna", "Menit", _ CStr(Me.cmdWarnaMenit.BackColor) VBA.SaveSetting "Jam", "Warna", "Detik", _ CStr(Me.cmdWarnaDetik.BackColor) VBA.SaveSetting "Jam", "Alamat", "Gambar", _ Me.txtAlamat.Text VBA.SaveSetting "Jam", "Tebal", "Jam", _ Me.cboTebalJam.Text VBA.SaveSetting "Jam", "Tebal", "Menit", _

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

Page 27: Latihan

51

52

5354

55

56

57

58

59

60

61

Me.cboTebalMenit.Text VBA.SaveSetting "Jam", "Tebal", "Detik", _ Me.cboTebalDetik.TextEnd Sub

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

c. Tes Program

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

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

Gambar 16.11. Dialog Make Project.

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

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

Page 28: Latihan

Gambar 16.12. Dialog Display Propertis. Menampilkan form Setting.

Gambar 16.13. Potongan Tampilan Screen Saver.

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

16.6. Paint

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

Program sederhana ini hanya meggunakan sebuah form. Sebelumnya seperti biasa, buat folder di: “C:\Menggali VB\Bab 16”, namai dengan “Paint”.

a. Desain Form

Gambarkan 4 (empat) buah PictureBox. Ubah propertinya sebagai berikut:

Pengaturan PropertiPengaturan pada: frmPaintNo Objek Kontrol Properti Perubahan

1 Picture1

Name picLeftBorderStyle 0-NoneAlignment 3-Align LeftWidth 375(Posisi) (Sisi kiri Form)

2 Picture2

Name picBawahBorderStyle 0-NoneAlignment 3-Align BottomHeight 645(Posisi) (Sisi bawah Form)

3 Picture3

Name picGambarAutoRedraw TrueBorderStyle 0-None(Posisi) (Sisi tengah Form)BackColor Putih

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

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

Page 29: Latihan

Pengaturan PropertiPengaturan pada: frmPaintNo Objek Kontrol Properti Perubahan

4 Option1

Name optToolIndex 0Height 375Width 375Style 1-GraphicPicture Gambar berformat ico

5 Option2

Name optToolIndex 1Height 375Width 375Style 1-GraphicPicture Gambar berformat ico

6 Option3

Name optToolIndex 2Height 375Width 375Style 1-GraphicPicture Gambar berformat ico

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

Pengaturan PropertiPengaturan pada: frmPaintNo Objek Kontrol Properti Perubahan

7 Picture1

Name picPickBackColor HitamHeight 375Width 375

8 Picture2Name picColorAutoRedraw TrueWidth 3015

9 Label1 Caption Line Width

10 Label2Name lblXCaption X

11 Label3Name lblYCaption Y

12 Label4Name lblRGBAutoSize TrueCaption R

13 Combo1Name cboLineWidthText 1

Tampilan akhir desain seperti gambar di berikut ini:

Gambar 16.14. Form saat didesain.

b. Baris Kode

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

Page 30: Latihan

Baris KodeBaris kode pada: frmPaint1

2345

67

8

910

11

121314

15

1617181920

2122232425262728293031

3233

34

35

363738

39

40414243

44454647

Option Explicit

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

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

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

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

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

Private Sub Form_Load() Dim i As Integer nTool = 100 BikinWarna With Me.cboLineWidth .AddItem "1" For i = 2 To 20 Step 2 .AddItem i Next End WithEnd Sub

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

Private Sub picColor_MouseUp( _Button As Integer, Shift As Integer, _X As Single, Y As Single) picPick.BackColor = picColor.Point(X, Y) WarnaDasar = picColor.Point(X, Y)End Sub

Private Sub picGambar_MouseDown( _Button As Integer, Shift As Integer, _X As Single, Y As Single)Select Case nTool Case 2 Me.picGambar.MousePointer = 99 Me.picGambar.MouseIcon = _ Me.optTool(2).PictureEnd Select If Button And 3 Then Seret = True X1 = X: Y1 = Y: X2 = X: Y2 = Y

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

Page 31: Latihan

48495051

5253

545556575859606162636465

66

67686970717273747576

7778798081

828384858687888990919293949596

97

98

99100101102103

Me.picGambar.DrawMode = 10 Me.picGambar.ForeColor = WarnaDasar If nTool = 0 Then Me.picGambar.Line (X1, Y1)- _ (X2, Y2), , B ElseIf nTool = 1 Then If Lingkaran(X1, Y1, X2, Y2) Then picGambar.Circle (PusatX, _ PusatY), Radius, , , , Aspek Radius = 0 End If ElseIf nTool = 2 Then Me.picGambar.ForeColor = WarnaDasar Me.picGambar.Line (X1, Y1)-(X, Y) End If If Button = 2 Then Me.picGambar.FillStyle = vbFSSolid Me.picGambar.FillColor = WarnaDasar End If End IfEnd Sub

Private Sub picGambar_MouseMove( _Button As Integer, Shift As Integer, _X As Single, Y As Single) Dim clr&, R&, G&, B& If Seret Then If nTool = 0 Then picGambar.ForeColor = WarnaDasar picGambar.Line (X1, Y1)-(X2, Y2), , B X2 = X: Y2 = Y picGambar.Line (X1, Y1)-(X2, Y2), , B ElseIf nTool = 1 Then If Lingkaran(X1, Y1, X2, Y2) Then picGambar.Circle (PusatX, PusatY), _ Radius, , , , Aspek Radius = 0 End If X2 = X: Y2 = Y If Lingkaran(X1, Y1, X2, Y2) Then picGambar.Circle (PusatX, PusatY), _ Radius, , , , Aspek Radius = 0 End If ElseIf nTool = 2 Then Me.picGambar.Line (X1, Y1)-(X, Y) X1 = X: Y1 = Y Me.picGambar.Line (X1, Y1)-(X, Y) End If End If Me.lblX.Caption = "X = " & X Me.lblY.Caption = "Y = " & Y clr = Me.picGambar.Point(X, Y) R = clr Mod 256 G = (clr \ 256) Mod 256 B = clr \ 256 \ 256 lblRGB.Caption = " R = " & G & ", G = " & _ G & ", B = " & B & " - " & clrEnd Sub

Private Sub picGambar_MouseUp( _Button As Integer, Shift As Integer, _X As Single, Y As Single) If Seret Then Seret = False Me.picGambar.ForeColor = WarnaDasar Me.picGambar.DrawMode = vbCopyPen If nTool = 0 Then

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

Page 32: Latihan

104105106107

108109110111112113114115116

117118119120121122123124125126127128129130

131132133134135136137

138

139

140

141142

Me.picGambar.Line (X1, Y1)-(X, Y), , B ElseIf nTool = 1 Then If Lingkaran(X1, Y1, X2, Y2) Then picGambar.Circle (PusatX, PusatY), _ Radius, , , , Aspek Radius = 0 End If ElseIf nTool = 2 Then Me.picGambar.Line (X1, Y1)-(X, Y) End If Me.picGambar.FillStyle = vbFSTransparent End If Me.picGambar.MousePointer = 0End Sub

Private Function Lingkaran(iX1, iY1, iX2, iY2) LX = Abs(iX2 - iX1) If LX <> 0 Then LY = Abs(iY2 - iY1) Aspek = Abs(LY / LX) If LX > LY Then Radius = LX / 2 Else: Radius = LY / 2 End If PusatX = iX1 + (iX2 - iX1) / 2 PusatY = iY1 + (iY2 - iY1) / 2 End If Lingkaran = LXEnd Function

Sub BikinWarna() Dim i%, HalfPic!, HPic As!, WPic As! WPic = Me.picColor.ScaleWidth HPic = Me.picColor.ScaleHeight HalfPic = Me.picColor.ScaleHeight / 2 For i = 0 To 7 Me.picColor.Line (i * (WPic / 8), _ 0)-Step(400, HalfPic), QBColor(i), BF Me.picColor.Line (i * (WPic / 8), _ HalfPic)-Step(400, _ HPic), QBColor(i + 8), BF Me.picColor.Line (i * (WPic / 8), _ 0)-Step(400, HalfPic), QBColor(15), B Me.picColor.Line (i * (WPic / 8), _ HalfPic)-Step(400, _ HPic - 20), QBColor(15), B NextEnd Sub

c. Tes Program

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

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

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

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

Page 33: Latihan

Gambar 16.15. Program sedang berjalan.

16.7. Brightness

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

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

a. Desain Form

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

Pengaturan PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan

1 Picture1

Name picBrightAutoRedraw TrueAutoSize TrueScaleMode 3-Pixel

2 CommonDialog1Name cdlSave

Gambar 16.16. Desain form.

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

Caption Name ShortCut CheckBox Indentasi&File mnuFile 0&Open mnuFileOpen Ctrl + O 1&Save mnuFileSaveAs Ctrl + S 1&Edit mnuEdit 0&Brightness mnuEdit Brightness Ctrl + B 1

b. Baris Kode

Baris KodeBaris kode pada: Form1

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

Page 34: Latihan

1

2

3

4

567

891011

121314

151617181920212223

242526272829

3031323334353637

383940

4142434445464748

495051

Option Explicit

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

Private Declare Function _GetPixel Lib "gdi32" (ByVal hDC As Long, _ByVal X As Long, ByVal Y As Long) As Long

Const NilaTajam = 110

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

Brightness = NilaTajam / 100 For X = 0 To picBright.ScaleWidth For Y = 0 To picBright.ScaleHeight WarnaBaru = GetPixel( _ picBright.hDC, X, Y) R = (WarnaBaru Mod 256) B = (Int(WarnaBaru / 65536)) G = ((WarnaBaru - (B * 65536) _ - R) / 256) R = R * Brightness B = B * Brightness G = G * Brightness If R > 255 Then R = 255 If R < 0 Then R = 0 If B > 255 Then B = 255 If B < 0 Then B = 0 If G > 255 Then G = 255 If G < 0 Then G = 0

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

Private Sub mnuFileOpen_Click() With Me.cdlSave .DialogTitle = "Open" .Filter = "Gambar|*.bmp;*jpg;*gif" .CancelError = False .ShowOpen If Len(.FileName) <> 0 Then Me.picBright.Picture = _ LoadPicture(.FileName) End If End WithEnd Sub

Private Sub mnuFileSaveAs_Click() With Me.cdlSave .DialogTitle = "Save As" .Filter = "Bmp|*.bmp" .CancelError = False .ShowSave If Len(.FileName) <> 0 Then SavePicture Me.picBright.Image, _ .FileName End If End WithEnd Sub

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

Page 35: Latihan

c. Tes Program

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

16.8. Jaringan MLM

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

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

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

a. Desain Database

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

Berikut ini struktur database yang harus Anda buat:

Nama Tabel tblMitraNama Field Tipe Ukuran

NO MITRA Text 10ID1 Number Long IntegerID2 Number Long IntegerNAMA MITRA Text 50Primary Index pada: NO MITRA

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

Nama Tabel tblMitraNO MITRA ID1 ID2 NAMA MITRA070510001 0 1 AGUNG VIANSASTRA NOVIAN070510002 1 1 SYAIFULAH070510003 1 2 AJAT JATNIKA070510004 2 1 PURBADI070510005 2 2 SAEPUL MIKDAR070510006 2 3 ARIF PERMANA070510007 2 4 YUDI ARMAN070510008 3 1 SANTOSO070510009 3 2 ABE HARIS A.070510010 3 3 SUBANA070510011 3 4 RITA ROSITA070510012 3 5 AYU DEWI070510013 3 6 SUHARYANTO070510014 3 7 FANNY PRATIWI R.070510015 3 8 RUDI PRAWIRANEGARA070510016 4 1 RETNO OKTAVIANI070510017 4 2 IRMA IRMAYANTI070510018 4 3 RUSMANJAYA070510019 4 4 RADEN ZAKARIA070510020 4 5 MOH. SANAJI

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

Page 36: Latihan

Gambar 16.17. Desain database dengan Ms. Access.

b. Desain Form

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

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

Pengaturan PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan1 Label1 Caption No. Mitra2 Combo1 Name cboNoMitra

3 Command1Name cmdNamaCaption &Baca Nama

4 TreeView1

Name trvAdoIndentation 100FullRowSelect TrueHotTracking TrueLabelEdit 1-tvwManual

5 ListView1

Name lvwMitraFullRowSelect TrueGridLines TrueLabelEdit 1-lvwManualView 3-lvwReport

6 Adodc1Name adoDataAlign 2-vbAlignBottom

7 ImageList1Name imlIkonImageHeight 16ImageWidth 16

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

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

Page 37: Latihan

Gambar 16.18. Desain form.

c. Baris Kode

Baris KodeBaris kode pada: Module1123456

7

89101112131415161718

1920

21

2223242526272829303132333435363738

3940414243

44454647

4849505152

Option ExplicitPublic NoMitraLv(10, 100, 100) As StringPublic NamaMitraLv(10, 100, 100) As StringPublic DS$(100, 100)Public NDL$(10, 100, 100)Public Const iJumDs As Integer = 2' Function TentukanIDDSAll(iID As String _) As String On Error Resume Next Dim nID(100) As String, nID1$, nID2$ Dim i&, r&, s&, t&, J%, iSpr% iSpr = InStr(iID, "-") nID1 = Mid(iID, 1, Val(iSpr) - 1) nID2 = Mid(iID, (iSpr + 1)) r = nID2 - 1 s = r * iJumDs + 1 t = s + iJumDs - 1 For i = s To t TentukanIDDSAll = TentukanIDDSAll & _ CStr(CLng(nID1 + 1)) & "-" & CStr(i) & "%" Next End Function'Function TentukanID_DS(iID As String, _Optional N As Integer = 0) As String On Error Resume Next Dim nID(100) As String Dim i&, J%, iSpr%, IDAll As String IDAll = TentukanIDDSAll(iID) J = 1 For i = 1 To Len(IDAll) iSpr = InStr(i, IDAll, "%") If iSpr <> 0 Then nID(J) = Mid(IDAll, i, iSpr - i) i = iSpr J = J + 1 Else Exit For End If Next TentukanID_DS = nID(N)End Function'Function NoMitratoID$(NoMitra As String)On Error Resume Next If NoMitra <> "" Then With FTreeView.adoData .RecordSource = _ "SELECT * FROM " & _ "tblMitra WHERE [NO MITRA]='" _ & NoMitra & "'" .Refresh With .Recordset If .RecordCount <> 0 Then NoMitratoID = ![ID1] _ & "-" & ![ID2] Else NoMitratoID = "" End If End With End With

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

Page 38: Latihan

5354

5556575859

6061626364656667686970

71727374757677787980

818283848586878889909192

End IfEnd Function'Function NamaMitra$(NoMitra$)On Error Resume Next If NoMitra$ <> "" Then With FTreeView.adoData .RecordSource = "SELECT * FROM " & _ "tblMitra WHERE [NO MITRA]='" & _ NoMitra$ & "'" & _ " OR Right([NO MITRA],4) ='" & _ Right(NoMitra, 4) & "'" .Refresh With .Recordset If .RecordCount <> 0 Then NamaMitra = ![NAMA MITRA] Else NamaMitra$ = "" End If End With End With End IfEnd Function'Function IDtoNoMitra$(iID As String) On Error Resume Next Dim nID1$, nID2$, iSpr% If iID <> "" Then If Len(iID) > 1 Then iSpr = InStr(iID, "-") nID1 = Mid(iID, 1, Val(iSpr) - 1) nID2 = Mid(iID, (iSpr + 1)) With FTreeView.adoData .RecordSource = _ "SELECT * FROM " & _ "tblMitra WHERE [ID1]=" & _ nID1 & " AND [ID2]=" & nID2 & "" .Refresh With .Recordset If .RecordCount <> 0 Then IDtoNoMitra = ![NO MITRA] Else IDtoNoMitra = "" End If End With End With End If End IfEnd Function

Baris kode pada: Form11

2

34567

89

101112

Option Explicit'Dim myList As ListItem'Private Sub cboNoMitra_Click() On Error Resume Next Call BuatTreeLevel(Me.cboNoMitra.Text) Set myList = Me.lvwMitra.FindItem( _ Me.cboNoMitra.Text, 1, , 1) myList.EnsureVisible myList.Selected = True Me.lvwMitra.SetFocusEnd Sub'Private Sub cmdNama_Click() Me.LihatNamaEnd Sub

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

Page 39: Latihan

131415161718192021

22

23242526

2728

29

30

31323334353637

383940

41424344

45

4647

4849505152535455565758

5960

61

'Private Sub Form_Load() Set Me.trvAdo.ImageList = Me.imlIkon Set Me.lvwMitra.Icons = Me.imlIkon Set Me.lvwMitra.ColumnHeaderIcons = Me.imlIkon Set Me.lvwMitra.SmallIcons = Me.imlIkon Call BuatKolom Me.Show With Me.adoData .ConnectionString = _ "Provider=Microsoft" & _ ".Jet.OLEDB.4.0;Data Source=" & _ App.Path & "\data.mdb;" & _ "Persist Security Info=False" .RecordSource = _ "Select * From tblMitra Order" & _ " By RIGHT([NO MITRA],4)" .Refresh With .Recordset While Not .EOF Me.cboNoMitra.AddItem _ CStr(![NO MITRA]) Set myList = Me.lvwMitra.ListItems _ .Add(, , Format( _ .AbsolutePosition, "000") , 1, 1) myList.SubItems(1) = _ CStr(![NO MITRA]) myList.SubItems(2) = _ CStr(![NAMA MITRA]) .MoveNext DoEvents Wend End With End With Me.cboNoMitra.ListIndex = 0End Sub'Sub TambahNode(X%, i%, A%, B%) On Error Resume Next DS$(B, i) = TentukanID_DS(NoMitratoID( _ NDL$(A - 1, X, i)), B) NDL$(A, B, i) = IDtoNoMitra(DS(B, i)) NoMitraLv(A, B, i) = NDL$(A, B, i) With Me.trvAdo.Nodes .Add "M-" & NoMitraLv(A - 1, X, i), _ tvwChild, "M-" & NoMitraLv(A, B, i), _ NoMitraLv(A, B, i), 1, 2 NamaMitraLv(A, B, i) = _ NamaMitra(NoMitraLv(A, B, i)) End WithEnd Sub'Sub BuatTreeLevel(NoMitra$) Dim nID$, i%, J%, K%, L%, M%, N%, O%, X% On Error Resume Next nID = NoMitratoID(NoMitra$) With Me.trvAdo.Nodes .Clear .Add , , "M-" & NoMitra, NoMitra, 1, 2 For X = 1 To 1 For i = 1 To iJumDs DS$(X, i) = TentukanID_DS(nID, i) NDL$(1, X, i) = _ IDtoNoMitra(DS(X, i)) NoMitraLv(1, X, i) = NDL$(1, X, i) .Add "M-" & NoMitra, tvwChild, _ "M-" & NoMitraLv(1, X, i), _ NoMitraLv(1, X, i), 1, 1

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

Page 40: Latihan

62636465666768697071727374757677787980818283848586

878889909192939495

96979899100101102103

104105106

107108109110111112113

If DS$(X, i) <> "" Then For J = 1 To iJumDs TambahNode X, i, 2, J If DS$(J, i) <> "" Then For K = 1 To iJumDs TambahNode J, i, 3, K If DS$(K, J) <> "" Then For L = 1 To iJumDs TambahNode K, J, 4, L If DS$(L, K) <> "" Then For M = 1 To iJumDs TambahNode L, K, 4, M Next End If Next End If Next End If Next End If Next Next End With Call SimpanTagEnd Sub'Sub SimpanTag() Dim i As Integer With Me.trvAdo For i = 1 To .Nodes.Count .Nodes(i).Tag = .Nodes(i).Text .Nodes(i).Selected = True Next End WithEnd Sub'Sub LihatNama() Dim i As Integer With Me.trvAdo If .Nodes(1).Tag = "" Then Me.SimpanTag End If For i = 1 To .Nodes.Count .Nodes(i).Text = .Nodes(i).Text & _ " -=> " & NamaMitra(.Nodes(i).Tag) Next End WithEnd Sub'Sub BuatKolom() With Me.lvwMitra.ColumnHeaders .Add , , "No", 800, , 1 .Add , , "No Mitra", 1500, , 2 .Add , , "Nama Mitra", 2800, , 3 End WithEnd Sub

d. Tes Program

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

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

Page 41: Latihan

Gambar 16.19. Program sedang berjalan.

16.9. HTML Maker

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

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

a. Desain Form

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

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

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

Pengaturan PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan

1 Picture1

Name picTopAlign 1-Align TopBorderStyle 0-NonoHeight 855

2 RichTextBox1Name rtbHTMLAppearance 1-FlatScrollBar 3-Both

3 CommonDialog1 Name cdlHTML

4 ImageList1Name imlHTMLImageHeight 16ImageWidth 16

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

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

Page 42: Latihan

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

Pengaturan PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan

5 ToolBar1Name tblHTMLBorderStyle 0-ccNoneStyle 1-tbrFlat

6 Combo1Name cboFormatStyle 2-DropDownListSorted True

7 Combo2Name cboPropertiStyle 2-DropDownListSorted True

8 Combo1Name cboInsertStyle 2-DropDownListSorted True

9 HScrollBar1

Name hscRGBIndex 0Max 255LargeChange 1SmallChange 1Value 90

10 HScrollBar2

Name hscRGBIndex 1Max 255LargeChange 1SmallChange 1Value 110

11 HScrollBar3

Name hscRGBIndex 2Max 255LargeChange 1SmallChange 1Value 140

12 Picture1Name picWarnaBackColor Putih

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

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

Properti pada: Button tlbHTMLIndex Style ToolTipText Image

1 0-tbrDefault New (Ctrl+N) 12 0-tbrDefault Open (Ctrl+O) 23 0-tbrDefault Save (Ctrl+S) 34 3-tbrSeparator5 0-tbrDefault Cut (Ctrl+X) 46 0-tbrDefault Copy (Ctrl+C) 57 0-tbrDefault Paste (Ctrl+V) 68 3-tbrSeparator9 0-tbrDefault Undo (Ctrl+Z) 710 0-tbrDefault Redo (Ctrl+Y) 811 3-tbrSeparator12 0-tbrDefault Bowse (Ctrl+W) 9

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

Page 43: Latihan

Gambar 16.20. Desain Form.

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

b. Baris Kode

Baris KodeBaris kode pada: mdlHTML1

2

3

456

789101112

13

14

1516

17

181920

Option Explicit

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

Function MyShell(PathAndFile As String, _Optional Parameters As String = "", _Optional ShowCmd As Long _= vbNormalNoFocus) As Long Dim Path As String, File As String On Error Resume Next Path = Left(PathAndFile, _ InStrRev(PathAndFile, "\")) While (Right$(Path, 1) = "\") Path = Left(Path, Len(Path) - 1) Wend File = Mid$(PathAndFile, _ InStrRev(PathAndFile, "\") + 1) MyShell = ShellExecute(0, vbNullString, _ File, Parameters, Path, ShowCmd) If MyShell < 32 Then Shell PathAndFile, _ ShowCmdEnd Function

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

Sub fFormat(FRM As Form, sFormat As String) Dim xClip As String, xHasil As String On Error Resume Next

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

Page 44: Latihan

2122

232425

2627282930

313233

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

Sub fTAG(FRM As Form, sFormat As String) Dim Awal%, xHasil As String On Error Resume Next Awal% = FRM!rtbHTML.SelStart xHasil = "<" & sFormat & ">" & _ " " & "</" & sFormat & ">" FRM!rtbHTML.SelRTF = xHasilFRM!rtbHTML.SelStart = Awal + (Len(xHasil)\ 2)End Sub

Baris kode pada: mdlUndo1

23456

78910111213141516

17181920

212223

2425262728293031323334

35363738394041424344

Option Explicit

Private vItem As VariantPrivate UniqueNum&Public Dirty As BooleanPublic ColUndo As New CollectionPublic ColRedo As New Collection

Public Sub DeleteCollections() On Error Resume Next For Each vItem In ColUndo ColUndo.Remove 1 Next For Each vItem In ColRedo ColRedo.Remove 1 Next UniqueNum = 0End Sub

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

Public Sub DoUnDo() On Error Resume Next With frmHTML.rtbHTML .Text = ColUndo.Item(ColUndo.Count) .Refresh ColRedo.Add ColUndo.Item(ColUndo.Count) ColUndo.Remove ColUndo.Count .Text = ColUndo.Item(ColUndo.Count) .Refresh End WithEnd Sub

Public Sub DoReDo() On Error Resume Next With frmHTML.rtbHTML .Text = ColUndo.Item(ColUndo.Count) .Refresh ColUndo.Add ColRedo.Item(ColRedo.Count) ColRedo.Remove ColRedo.Count .Text = ColUndo.Item(ColUndo.Count) .Refresh End With

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

Page 45: Latihan

45

464748495051

End Sub

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

Baris kode pada: frmHTML1

23

45678

9

10111213

141516171819202122

2324252627

2829303132333435

36373839404142

434445

46

Option Explicit

Dim BukaAlamat$, KonstWarna$Dim SudahSimpan As Boolean

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

Private Sub Form_QueryUnload( _Cancel As Integer, UnloadMode As Integer) Dim Pesan$ If Not (SudahSimpan) Then Cancel = 1 Pesan = MsgBox( _ "Akhir perubahan belum tersimpan" & _ "Klik Yes untuk menyimpan.", _ vbQuestion + vbYesNoCancel) If Pesan = vbYes Then mnuFileSave_Click: Cancel = 0 ElseIf Pesan = vbNo Then Cancel = 0 Else: Cancel = 1 Me.rtbHTML.SetFocus End If End IfEnd Sub

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

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

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

Private Sub mnuEditRedo_Click() DoReDoEnd Sub

Private Sub mnuEditUndo_Click()

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

Page 46: Latihan

4748

495051

525354555657585960

616263646566

6768697071727374757677

78798081828384858687

888990919293949596979899100101102103104105

DoUnDoEnd Sub

Private Sub mnuFileExit_Click() Unload MeEnd Sub

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

Private Sub mnuFileOpen_Click() On Error Resume Next Dim i As Integer, sTag$ With Me.cdlHTML .DialogTitle = "Cari HTML" .Filter = "Web File|" & _ "*.htm;*.html;*.css;*.idb;*.xml|" & _ "Text File|" & _ "*.txt;*.log;*.inf;*.ini|" & _ "Semua File (*.*)|*.*" .FileName = "" .ShowOpen BukaAlamat$ = .FileName If BukaAlamat$ <> "" Then Me.rtbHTML.FileName = BukaAlamat$ sTag$ = "HTML Maker " & BukaAlamat$ Me.Caption = sTag$ SudahSimpan = True End If End WithEnd Sub

Private Sub mnuFileSave_Click() On Error Resume Next BukaAlamat$ = Mid(Me.Caption, 11) If Len(Me.Caption) > 11 Then rtbHTML.SaveFile LTrim(BukaAlamat$), 1 SudahSimpan = True Else mnuFileSaveAs_Click End IfEnd Sub

Private Sub mnuFileSaveAs_Click() On Error Resume Next Dim i As Integer, sTag$ With Me.cdlHTML .DialogTitle = "Save As..." .Flags = &H1000 Or 2 .Filter = "Web Page|*.htm;*.html" .CancelError = True .FileName = "" .ShowSave If .FileName <> "" Then Me.rtbHTML.SaveFile .FileName, 1 Caption = "HTML Maker " & .FileName BukaAlamat$ = .FileName SudahSimpan = True End If End WithEnd Sub

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

Page 47: Latihan

106107108109110111112113114

115116117118119120

121122

123124

125126

127128

129130

131132

133134

135136137138139

140141142143144

Private Sub cboFormat_Click() On Error Resume Next If Me.rtbHTML.SelLength <> 0 Then fFormat Me, Me.cboFormat.Text Else fTAG Me, Me.cboFormat.Text End If Me.rtbHTML.SetFocusEnd Sub

Private Sub cboInsert_Click() On Error Resume Next Dim Teks$ Select Case LCase(Me.cboInsert.Text) Case "text" Teks$ = "<input type=" & """" & _ "text" & """" & " maxlength=" & _ """" & """" & ">" Case "radio" Teks$ = "<input type=" & """" & _ "radio" & """" & " value=" & _ """" & """" & " checked name=" & _ """" & "R" & """" & ">" Case "select" Teks$ = "<select size=" & """" & _ "1" & """" & " name=" & """" & _ "sct" & """" & ">" & vbCrLf & _ " <option value=" & """" & _ "value1 selected" & _ """" & ">Pilihan1" & _ vbCrLf & " </option>" & _ vbCrLf & "</select>" Case "submit" Teks$ = "<input type=" & """" & _ "submit" & """" & " value=" & _ """" & "Send" & """" & ">" Case "reset" Teks$ = "<input type=" & """" & _ "reset" & """" & ">" Case "button" Teks$ = "<input type=" & """" & _ "button" & """" & " value=" & _ """" & "Tombol" & """" & _ " OnClick=" & """" & """" & ">" Case "checkbox" Teks$ = "<input type=" & _ """" & "checkbox" & """" & _ " name=" & """" & "chk" & """" & _ " value=" & """" & "ON" & _ """" & ">" Case "textarea" Teks$ = "<textarea " & "name=" & _ """" & "txt" & """" & _ " rows=5 cols=20" & " wrap=" & _ """" & "off" & """" & ">" & _ vbCrLf & "</textarea>" End Select With Me.rtbHTML .SelText = Teks: .SetFocus End WithEnd Sub

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

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

Page 48: Latihan

145146147148149150151152153154155156157158159160161162163164165166

167168170171172

173174

175

176177178179180181182183184

185186187188189190191

192193194

195

196197198199120121122123

.AddItem "CheckBox": .AddItem "TextArea" .ListIndex = 0 End With With Me.cboFormat .AddItem "B": .AddItem "I" .AddItem "U": .AddItem "H1" .AddItem "H2": .AddItem "H3" .AddItem "H4": .AddItem "H5" .AddItem "P": .AddItem "FONT" .AddItem "MARQUEE": .AddItem "BR" .AddItem "HR": .AddItem "OL" .AddItem "UL": .AddItem "A" .ListIndex = 0 End With With Me.cboProperti .AddItem "BGCOLOR": .AddItem "SIZE" .AddItem "SRC": .AddItem "HREF" .AddItem "NAME": .AddItem "TYPE" .AddItem "BACKGROUND": .AddItem "ALIGN" .AddItem "VALUE": .AddItem "WIDTH" .AddItem "HEIGHT": .ListIndex = 0 End With

mnuFileNew_Click hscRGB_Change 0 hscRGB_Change 1 hscRGB_Change 2End Sub

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

Private Sub mnuViewWeb_Click() Dim Pesan BukaAlamat$ = Mid(Me.Caption, 11) If Len(Me.Caption) > 11 Then rtbHTML.SaveFile LTrim(BukaAlamat$), 1 MyShell LTrim(BukaAlamat) Else rtbHTML.SaveFile LTrim(BukaAlamat$), 1 Pesan = MsgBox("Anda harus menyimpan" & _ " Web lebih dulu. Klik Yes untuk" & _ " menyimpan", vbQuestion + vbYesNo) If Pesan = vbYes Then mnuFileSaveAs_Click MyShell LTrim(BukaAlamat) Else: Exit Sub End If End IfEnd Sub

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

Private Sub rtbHTML_KeyDown( _KeyCode As Integer, Shift As Integer) If KeyCode = Asc(vbTab) Then KeyCode = 0 rtbHTML.SelText = vbTab End If UpdateUndo If Shift = 2 Then If KeyCode = vbKeyZ Then DoUnDo

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

Page 49: Latihan

124125126127128129130131132

133

134135

136

137138139140

141

142143144145146147148149150151152153

154155

156

157

158159160

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

Private Sub rtbHTML_KeyPress( _KeyAscii As Integer) SudahSimpan = FalseEnd Sub

Private Sub rtbHTML_MouseDown( _Button As Integer, Shift As Integer, _x As Single, y As Single) If Button = 2 Then Me.PopupMenu Me.mnuEdit, 2 Or 4 End IfEnd Sub

Private Sub tlbHTML_ButtonClick(ByVal Button _As MSComctlLib.Button) Select Case Button.Index Case 1: mnuFileNew_Click Case 2: mnuFileOpen_Click Case 3: mnuFileSave_Click Case 5: mnuEditCut_Click Case 6: mnuEditCopy_Click Case 7: mnuEditPaste_Click Case 9: mnuEditUndo_Click Case 10: mnuEditRedo_Click Case 12: mnuViewWeb_Click End SelectEnd Sub

Private Sub hscRGB_Change(Index As Integer) Me.picWarna.BackColor = _ RGB(Me.hscRGB(0).Value, hscRGB(1).Value, _ Me.hscRGB(2).Value) KonstWarna = "#" & _ CStr(Hex(Me.hscRGB(0).Value) & _ Hex(Me.hscRGB(1).Value) & _ Hex(Me.hscRGB(2).Value))End Sub

Private Sub hscRGB_Scroll(Index As Integer) hscRGB_Change IndexEnd Sub

c. Tes Program

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

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

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

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

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

Page 50: Latihan

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

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

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

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

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

Gambar 16.21. Program sedang berjalan.

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

Gambar 16.22. Sebuah halaman Web.

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

Page 51: Latihan

16.10.Music Player

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

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

a. Desain Form

Jalankan program pada template Standard Exe. Anda perlu menambahkan komponen-komponen lain. Klik menu ProjetComponent... Tandai listchekbox-listchekbox berikut ini:

Microsoft Common Dialog Control 6.0

Microsoft Tabbed Dialog Control 6.0

Microsoft Windows Common Controls 6.0 (SP6)

Windows Media Player

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

Pengaturan PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan

1 SSTab1Name SSTab1Orientation 1-ssTabOrientationBottomStyle 1-ssStylePropertiPage

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

Gambar 16.23. Menambahkan SSTab pada form.

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

Pengaturan PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan

1 WMPlayer1

Name mplMusicVisible FalseVolume -2500Style 1-ssStylePropertiPage

2 CommonDialog1Name dlgMusicMaxFileSize 1024

3 Slider1

Name sldMainMax 100SmallChange 5LargeChange 10

4 Label1

Name lblPosAutoSize TrueBackColor HitamFont Courier New, 48, Bold

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

Page 52: Latihan

5 TimerName tmrSliderEnabled TrueInterval 900

6 Slider2

Name sldVolMax 100SmallChange 5LargeChange 10Orientation 1-ccOrientationVerticalTickStyle 3-sldNoTicks

7 Command1Name cmdPrevCaption |< P&rev

8 Command2Name cmdPlayCaption > &Play

9 Command3Name cmdStopCaption [] &Stop

10 Command4Name cmdNextCaption >| &Next

Gambar 16.24. Desain pada tab pertama.

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

Pengaturan PropertiPengaturan pada: Form1No Objek Kontrol Properti Perubahan

11 ListView1

Name lvwLaguBackColor HitamFullRowSelect TrueGridLines TrueHotTracking TrueHideColumnHeader TrueHideSelection FalseView 3-lvwReport

12 Command1Name cmdBukaCaption &Buka

13 Command2Name cmdSimpanCaption &Simpan

Gambar 16.25. Desain pada tab ke dua.

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

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

Page 53: Latihan

b. Baris Kode

Baris KodeBaris kode pada: Form11

234567

8910

1112131415

161718

192021222324

252627

28

2930

31

3233343536373839404142434445464748

4950

Option Explicit

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

Private Sub cmdBuka_Click() CariFileEnd Sub

Private Sub cmdNext_Click() Dim ListAktif As Integer With Me.lvwLagu PlayPause = 0 ListAktif = .SelectedItem.Index 'Pindah ke list berikutnya If ListAktif <= .ListItems.Count - 1 Then ListAktif = ListAktif + 1 Else 'Pindah ke list awal ListAktif = 1 End If .ListItems(ListAktif).Selected = True cmdPlay_Click End WithEnd Sub

Sub cmdPlay_Click()On Error Resume Next Dim Batas As%, sTag$, PlayFile$ 'Jika sebuah list pada listview terpilih If Not (Me.lvwLagu.SelectedItem _ Is Nothing) Then Me.cmdPlay.Caption = "|| &Pause" sTag = Me.lvwLagu.SelectedItem.Tag 'Nama file yang akan dimainkan PlayFile = sTag & _ Me.lvwLagu.SelectedItem.SubItems(1) If PlayPause = 0 Then PlayPause = 1 Me.mplMusic.FileName = PlayFile ElseIf PlayPause = 1 Then Me.mplMusic.Pause Me.cmdPlay.Caption = "> &Play" Me.tmrSilder.Enabled = False PlayPause = 2 ElseIf PlayPause = 2 Then PlayPause = 1 Me.cmdPlay.Caption = "|| &Pause" Me.tmrSilder.Enabled = True Me.mplMusic.Play Menit = 0 Detik = 0 End If tmrSilder.Enabled = True 'MEngatur nilai slider If Me.mplMusic.CurrentPosition > 0 Then Me.sldMain.Value = ( _ Me.mplMusic.CurrentPosition / _ Me.mplMusic.Duration) * 100

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

Page 54: Latihan

51525354

5556575859

606162

636465666768

6970717273

7475767778798081828384

858687888990

91

9293949596979899

100101

102103104105106

End If TandaiLagu End IfEnd Sub

Private Sub cmdPrev_Click() Dim ListAktif As Integer With Me.lvwLagu PlayPause = 0 ListAktif = .SelectedItem.Index 'pindah ke list sebelumny If ListAktif > 1 Then ListAktif = ListAktif - 1 Else 'pindah ke list terakhir ListAktif = .ListItems.Count End If .ListItems(ListAktif).Selected = True cmdPlay_Click End WithEnd Sub

Private Sub cmdSimpan_Click()On Error Resume Next With Me.dlgMusik .DialogTitle = "Simpan PlayList" .Filter = "INOCHI PlayList " & _ "(*.pla)|*.pla" & _ "|Winamp PlayList (*.m3u)|*.m3u;" .FilterIndex = 2 .Flags = cdlOFNOverwritePrompt .FileName = "" .CancelError = True .ShowSave If .FileName <> "" Then SaveFile = .FileName SimpanPlayList End If End WithEnd Sub

Sub SimpanPlayList() FNum = FreeFile Open SaveFile For Output As #FNum Print #FNum, "#EXTM3UPlayList" Print #FNum, "#Programmed By: Agung Novian" Print #FNum, _ "#CopyRight © 2006 INOCHISoftware" Print #FNum, "#----=======> o <=======---" 'Menulisi pada file PlayList 'sesuai daftar pada ListView For i = 1 To Me.lvwLagu.ListItems.Count Print #FNum, Me.lvwLagu.ListItems(i).Tag & _ Me.lvwLagu.ListItems(i).SubItems(1) Next Print #FNum, "#---=======> o <=======----" Print #FNum, "#Makasih Udah pake program ini" Close #FNumEnd Sub

Private Sub cmdStop_Click() If Not (Me.lvwLagu.SelectedItem _ Is Nothing) Then Me.mplMusic.Stop tmrSilder.Enabled = False Me.sldMain.Value = 0 PlayPause = 0 Me.cmdPlay.Caption = "> &Play"

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

Page 55: Latihan

107108

109110111112

113

114115

116117118119120121122123124

125

126127128129130

131

132133134135136137

138

139

140

141142143144145146147

148

149150151152153154155

End IfEnd Sub

Private Sub Form_Load() On Error Resume Next Dim sAwal As String, sAkhir As String PlayPause = 0 'Membuat tabel PlayList BuatTabel 'Menyamakan volume player 'dengan slider: sldVol Me.mplMusic.Volume = -Me.sldVol.Value * 2 JumList = 0 'Cara menjalankan file secara langsung '(mengklik ganda file dengan ekstensi .pla)" If Command <> "" Then For i = Len(Command) To 1 Step -1 sAkhir = Mid(Command, i, 1) If sAkhir = "\" Then sAkhir = Mid(Command, i + 1) sAwal = Mid(Command, 2, i - 2) Exit For End If Next ' If UCase(Right(Command, 5)) = _ "*.PLA" & """" Or _ UCase(Right(Command, 5)) = _ "*.m3u" & """" Then AlamatDefault = sAwal DaftarLagu Mid(Command, 2, Len(Command) - 2) Else sAwal = Mid(Command, 2, i - 1) sAkhir = Mid(Command, i + 1, Len(Command) _ - Len(sAwal) - 2) Set myList = Me.lvwLagu.ListItems.Add( _ , , Format(JumList + 1, "000")) Me.lvwLagu.ListItems(JumList + _ 1).Tag = sAwal & "\" myList.SubItems(1) = sAkhir End If cmdPlay_Click Else 'Membuka daftar lagu pada file Music.fla DaftarLagu App.Path & "\Music.pla" 'Menjalankan file Jika Daftar Lagu 'tidak kosong If Me.lvwLagu.ListItems.Count <> 0 Then'Menentukan baris ke..? yang akan dimainkan nList = CInt(VBA.GetSetting("MPlayer", _ "PlayList", "Index", 5)) Me.lvwLagu.ListItems(nList).Selected = True Me.lvwLagu.SetFocus Me.cmdPlay_Click End If End If JumList = Me.lvwLagu.ListItems.CountEnd Sub

Sub BuatTabel() 'Membuat Kolom pada ListView With Me.lvwLagu.ColumnHeaders .Clear .Add , , , 500 .Add , , , Me.lvwLagu.Width - 1100 .Add , , , 300 End WithEnd Sub

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

Page 56: Latihan

156

157

158

159

160

161

162163164

165

166

167168169170171172173174175176177

178179180181

182

183184185186187188189190191192193

194195

197

198199200

Sub CariFile() On Error Resume Next Dim sAkhir As String, sAwal As String 'Mengatur Filter (ekstensi file yang 'bisa dipilih) dlgMusik.Filter = "File Musik " & _ "(*.mp3;*.mid;*.wav)" & _ "|*.mp3;*.mid;*.wav|" & _ "INOCHI PlayList (*.pla)|*.pla|" & _ "Winamp PlatList (*.m3u)|*.m3u" dlgMusik.FilterIndex = 1 'Menentukan flag (cdlOFNAllowMultiselect 'digunakan agar user diperbolehkan 'memilih lebih dari 1 file) dlgMusik.Flags = cdlOFNExplorer Or _ cdlOFNAllowMultiselect dlgMusik.DialogTitle = _ "Pilih satu atau beberapa lagu" dlgMusik.FileName = "" dlgMusik.CancelError = True dlgMusik.ShowOpen 'Memecah file-file terpilih FileNames() = Split(dlgMusik.FileName, _ vbNullChar) 'Mengidentifikasi jenis ektensi file If UCase(Right(dlgMusik.FileName, 4)) = _ ".PLA" Or UCase(Right( _ dlgMusik.FileName, 4)) = ".M3U" Then For i = Len(FileNames(0)) To 1 Step -1 sAkhir = Mid(FileNames(0), i, 1) If sAkhir = "\" Then sAkhir = Mid(FileNames(0), i + 1) sAwal = Mid(FileNames(0), 1, i - 1) Exit For End If Next AlamatDefault = sAwal DaftarLagu FileNames(0) Else 'Mengisi file terpilih ke dalam listview JumList = Me.lvwLagu.ListItems.Count If UBound(FileNames) > 0 Then For i = 1 To UBound(FileNames) Set myList = Me.lvwLagu.ListItems.Add( _ , , Format(JumList + i, "000")) Me.lvwLagu.ListItems(JumList + i).Tag = _ FileNames(0) & "\" myList.SubItems(1) = FileNames(i) Next ElseIf UBound(FileNames) = 0 Then For i = Len(FileNames(0)) To 1 Step -1 sAkhir = Mid(FileNames(0), i, 1) If sAkhir = "\" Then sAkhir = Mid(FileNames(0), i + 1) sAwal = Mid(FileNames(0), 1, i - 1) Exit For End If Next

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

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

Page 57: Latihan

201202

203

204205206207

208209210211

212

213214215216217

218

219220

221222

223

224225

226227

228229230231232

233234235236

237238

239

240

241242

End IfEnd Sub

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

Private Sub lvwLagu_DblClick() PlayPause = 0 cmdPlay_ClickEnd Sub

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

Private Sub sldMain_Click() 'Mengubah posisi file yang dimainkan 'saat mengklik slider Me.tmrSilder.Enabled = False Me.mplMusic.CurrentPosition = ( _ Me.mplMusic.Duration / 100) * _ Me.sldMain.Value Me.tmrSilder.Enabled = TrueEnd Sub'Private Sub sldVol_Click() 'Mengubah volume dari Media Player Me.mplMusic.Volume = -Me.sldVol.Value * 2End Sub

Private Sub tmrSilder_Timer()On Error Resume Next 'Menampilkan tampilan detik 'file yang sedang dimainkan Detik = Round(Me.mplMusic.CurrentPosition, 0) If Detik >= 59 Then Detik = Detik Mod 60 End If Menit = Round( _ Me.mplMusic.CurrentPosition, 0) \ 60 strMenit = Format(Menit, "00") strDetik = Format(Detik, "00") Waktu = strMenit & ":" & strDetik Me.lblPos.Caption = Waktu 'Mengatur nilai slider If Me.mplMusic.CurrentPosition > 0 Then Me.sldMain.Value = ( _ Me.mplMusic.CurrentPosition / _ Me.mplMusic.Duration) * 100 End If 'Pindah ke file berikutnya saat posis 'file yang dimainkan sudah mencapai 'akhir durasi If Me.mplMusic.CurrentPosition >= _ Me.mplMusic.Duration Then cmdNext_Click End If

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

Page 58: Latihan

243

244245246247248249250251252253254255256257

258259260261262263264265266267268269270

271

272273274275

276277278279280281282283284

285286287288289290291292293294

295296297298299300

End Sub

Function DaftarLagu(nFile As String) As Boolean Dim NextTip As String Dim InFile As Integer, Batas As Integer Dim i As Integer, sAwal$, sAkhir$ InFile = FreeFile If nFile = "" Then LoadTips = False Exit Function End If If Dir(nFile) = "" Then LoadTips = False Exit Function End If JumList = Me.lvwLagu.ListItems.Count 'Mengisi daftar dari file PlayList 'ke dalam ListView Open nFile For Input As InFile While Not EOF(InFile) Line Input #InFile, NextTip If Left(NextTip, 1) <> "#" Then i = i + 1 For Batas = Len(NextTip) To 1 Step -1 sAkhir = Mid(NextTip, Batas, 1) If sAkhir = "\" Then sAkhir = Mid(NextTip, Batas + 1) sAwal = Mid(NextTip, 1, Batas - 1) Exit For End If Next 'Mengisi daftar dari file PlayList 'ke dalam ListView Set myList = Me.lvwLagu.ListItems.Add( _ , , Format(JumList + i, "000")) If Mid(sAwal, 2, 2) <> ":\" Then sAwal = AlamatDefault & "\" & sAwal End If Me.lvwLagu.ListItems(JumList + _ i).Tag = sAwal & "\" myList.SubItems(1) = sAkhir End If Wend Close InFile DaftarLagu = True If JumList > 0 Then Me.lvwLagu.ListItems(1).Selected = True End IfEnd Function

Sub SimpanDefaultPlayList()On Error Resume Next Dim i As Integer sFile$ = App.Path & "\Music.pla" Open sFile For Output As #2 Print #2, "#EXTM3u" Print #2, "#PlayList" Print #2, "#Programmed By: Agung Novian" Print #2, "#CopyRight © 2006 INOCHISoftware" Print #2, "#----=======> o <=======----" 'Menulisi file PlayList sesuai banyaknya 'daftar pada PlayList If Me.lvwLagu.ListItems.Count > 0 Then For i = 1 To Me.lvwLagu.ListItems.Count Print #2, Me.lvwLagu.ListItems(i).Tag & _ Me.lvwLagu.ListItems(i).SubItems(1) Next End If

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

Page 59: Latihan

301302303

304

305

306

307308309

310311312313

314315316

317318319

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

Private Sub sldMain_Scroll() sldMain_ClickEnd Sub

Private Sub sldVol_Scroll() sldVol_ClickEnd Sub

Gambar 16.26. Desain pada tab pertama.

c. Tes Program

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

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

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

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

Nyaris seperti program Winamp bukan?

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

Page 60: Latihan

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

Page 61: Latihan

BAB XVIIILATIHAN-LATIHAN

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

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

18.1. Latihan 1

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

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

Ubah properti dari frmLat1 sebagai berikut:

Pengaturan PropertiPengaturan pada: frmLat1

Properti Perubahan Kegunaan

CaptionKalkulator Sederhana

Tampilan judul pada title bar form.

BorderStyle 1-FixedSingleMengubah bentuk title bar form (hanya dilengkapi dengan sebuah tombol close).

Font Courier New, 10

Mengubah bentuk dan ukuran font dari form, sehingga saat Anda menambahkan objek kontrol pada form, maka secara otomatis bentuk dan ukuran font dari objek kontrol tersebut mengikuti bentuk dan ukuran font dari form.

Icon Gambar ikon (ico)Mengubah ikon form dan ikon program saat dikompail menjadi file eksekusi (exe).

StartUpPosition 2-CenterScreen

Mengatur posisi form pada layar, agar form otomatis berada di tengah-tengah layar saat program dijalankan.

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

Pengaturan PropertiPengaturan pada: frmLat1No Kontrol Properti Perubahan Kegunaan

1 Label1

Caption Bilangan &1Mengubah teks yang ditampilkan.

AutoSize 1-TrueAgar ukuran Label mengikuti panjangnya teks yang tercetak.

BackStyle 0-TransparentAgar warna dasar Label transparan/ mengikuti warna dasar form.

TabIndex 0

Mengatur pelarian fokus saat Anda menekan tombol Tab pada keyboard.

2 Label2 Caption &Operator Sda.

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

Page 62: Latihan

AutoSize 1-True Sda.BackStyle 0-Transparent sda.TabIndex 2 Sda.

3 Label3

Caption Bilangan &2 Sda.AutoSize 1-True Sda.BackStyle 0-Transparent Sda.TabIndex 4 Sda.

4 Label4

Caption Hasil Sda.AutoSize 1-True Sda.BackStyle 0-Transparent Sda.TabIndex 7 Sda.

5 Text1Name txtBil1

Memberi identitas pada TextBox, penting sekali untuk mengenalkan TextBox pada program.

Text dikosongkan Mengkosongkan teks.TabIndex 1 Sda.

6 Text2Name txtBil2 Sda.Text dikosongkan Sda.TabIndex 5 Sda.

7 Text3

Name txtHasil Sda.Text dikosongkan Sda.TabIndex 8 Sda.

8 Combo1

Name cboOprMemberi identitas pada Combo, penting!

Style2-DropDown List

Mengubah bentuk tampilan list ComboBox.

TabIndex 3 Sda.

9 Command1

Name cmdProsesMemberi identitas pada cmdProses, penting!

Caption &ProsesMengubah teks yang ditampilkan.

TabIndex 6 Sda.

10 Frame1

Caption dikosongkanMengubah teks yang ditampilkan.

Height 30

Mengubah tinggi Frame. Nilai 30 dimaksudkan agar tampilan frame hanya berbentuk garis.

Desain form seperti pada ilustrasi gambar berikut:

Gambar 18.1. Desain form.

Masuk ke jendela kode, dan ketikkan kode berikut:

Baris KodeBaris kode pada: frmLat11 Option Explicit

'Event saat form akan ditampilkan

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

Page 63: Latihan

23

4

567891011

12

13141516

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

Private Sub Form_Load() With Me.cboOpr 'Mengisi list pada cboOpr 'dengan text = "+" .AddItem "+" 'Mengisi list pada cboOpr 'dengan text = "-" dst... .AddItem "-" .AddItem "*" .AddItem "/" .AddItem "\" .AddItem "mod" End WithEnd Sub

'Event saat mengklik tombol cmdProsesPrivate Sub cmdProses_Click() 'Deklarasi Variabel Dim Bil1 As Long Dim Bil2 As Long Dim Opr As String Dim Hasil As Long 'Mengisi var Bil1 dengan text 'pada txtBil1 dengan sebelumnya 'dikonversikan ke dalam tipe data Long Bil1 = CLng(Me.txtBil1.Text) 'Mengisi var Bil2 dengan text 'pada txtBil1 dengan sebelumnya 'dikonversikan ke dalam tipe data Long Bil2 = CLng(Me.txtBil2.Text) 'var Opr dengan text dari cboOpr Opr = Me.cboOpr.Text 'Menyeleksi nilai dari Opr Select Case Opr 'Jika Opr adalah "+" maka Case "+" 'isi nilai Hasil dengan operasi 'penjumlahan Bil1 dan Bil2 Hasil = Bil1 + Bil2 'Jika Opr adalah "-" maka Case "-" 'isi nilai Hasil dengan operasi 'pengurangan Bil1 dan Bil2 Hasil = Bil1 - Bil2 'Jika Opr adalah "*" maka Case "*" 'isi nilai Hasil dengan operasi 'perkalian Bil1 dan Bil2 Hasil = Bil1 * Bil2 'Jika Opr adalah "/" Case "/" 'isi nilai Hasil dengan operasi 'pembagian Bil1 dan Bil2 Hasil = Bil1 / Bil2 'Jika Opr adalah "\" '"\" adalah simbol pembagian 'bilangan bulat (DIVide) 'yang mengabaikan nilai desimal 'dari nilai yang dihasilkan Case "\" 'isi nilai Hasil dengan operasi 'pembagian bulat Bil1 dan Bil2 Hasil = Bil1 \ Bil2 'Jika Opr adalah "mod" '"mod" adalah simbol pembagian 'Modulus (sisa pembagian) Case "mod" 'isi nilai Hasil dengan operasi

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

Page 64: Latihan

3233

3435

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

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

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

18.2. Latihan 2

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

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

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

Pengaturan PropertiPengaturan pada: frmLat2No Objek Kontrol Properti Perubahan1 Label1 Caption &Jurusan2 Combo1 Name cboJurusan3 Label2 Caption &Kelas4 Combo2 Name cboKelas5 Label3 Caption usia

6 Option1Name optUsiaCaption &DewasaIndex 0

7 Option2Name optUsiaCaption &Anak-anakIndex 1

8 Command1Name cmdProsesCaption &Proses

9 Frame1Caption DikosongkanHeight 30

10 Label4 Caption TARIF

11 Text1Name txtTarifAlignment 1-Right JustifyText 0

12 Frame2 Caption Keterangan

13 Shape1-Shape8Left, Top, Height, Width

Atur sehingga membentuk tabel seperti gambar

14 Label5-30Left, Top, Width, Caption

Seperti pada gambar

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

Page 65: Latihan

Gambar 18.2. Desain form.

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

Ketikkan kode sumber berikut:

Baris KodeBaris kode pada: frmLat21

234

5

6

7

8

9

1011

12

13

1415

16

171818

Option Explicit

'Deklarasi variabel untuk sebuah modulDim Jurusan As StringDim Kelas As StringDim Dewasa As Boolean

'Event saat tombol Proses diklikPrivate Sub cmdProses_Click() 'Deklarasi variabel Dim Tarif As Long 'Jika nilai var Dewasa adalah True maka If Dewasa = True Then 'Mengisi nilai Tarif dengan nilai 'dari var BesarTarif Tarif = BesarTarif 'Jika tidak (Jika nilai var Dewasa 'adalah False) maka Else 'Mengisi nilai Tarif dengan nilai 'dari var BesarTarif dikalikan 50% Tarif = BesarTarif * (50 / 100) End If 'Menampilkan nilai Tarif pada txtTarif 'dengan sebelumnya diformat String Me.txtTarif.Text = _ Strings.FormatNumber(Tarif, 0)End Sub

'Event saat form akan ditampilkanPrivate Sub Form_Load() With Me.cboJurusan 'Mengisi list cboJurusan dengan 'teks "Jakarta" .AddItem "Jakarta" 'Mengisi list cboJurusan dengan 'teks "Bandung" dst... .AddItem "Bandung" .AddItem "Semarang" .AddItem "Surabaya"

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

Page 66: Latihan

2021

22

23

242526

2728

29

30

31

32

33

34

353637383940414243444546474849505152535455565758596061626364656667686970

.AddItem "Yogyakarta" End With ' With Me.cboKelas 'Mengisi list cboKelas dengan 'teks "Eksekutif" .AddItem "Eksekutif" 'Mengisi list cboKelas dengan 'teks "Bisnis" dst... .AddItem "Bisnis" .AddItem "Ekonomi" End With 'Menandai optUsia Index 0 '(opsi Dewasa) Me.optUsia(0).Value = TrueEnd Sub

'Fungsi untuk menentukan BesarTarifPrivate Function BesarTarif() As Long 'Mengisi Jurusan dengan teks 'pada cboJurusan Jurusan = Me.cboJurusan.Text 'Mengisi Kelas dengan teks 'pada cboKelas Kelas = Me.cboKelas.Text 'Jika kelas adalah Eksekutif If Kelas = "Eksekutif" Then 'Memilih Jurusan Select Case Jurusan 'Jika jurusan adalah "Jakarta" Case "Jakarta" 'Nilai BesarTarif adalah 100000 BesarTarif = 100000 Case "Bandung" BesarTarif = 80000 Case "Semarang" BesarTarif = 120000 Case "Surabaya" BesarTarif = 135000 Case "Yogyakarta" BesarTarif = 150000 Else BesarTarif = 0 End Select ElseIf Kelas = "Bisnis" Then Select Case Jurusan Case "Jakarta" BesarTarif = 50000 Case "Bandung" BesarTarif = 35000 Case "Semarang" BesarTarif = 95000 Case "Surabaya" BesarTarif = 110000 Case "Yogyakarta" BesarTarif = 120000 Else BesarTarif = 0 End Select ElseIf Kelas = "Ekonomi" Then Select Case Jurusan Case "Jakarta" BesarTarif = 30000 Case "Bandung" BesarTarif = 25000 Case "Semarang" BesarTarif = 75000 Case "Surabaya"

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

Page 67: Latihan

7172737475767778

79

8081

BesarTarif = 95000 Case "Yogyakarta" BesarTarif = 100000 Else BesarTarif = 0 End Select End IfEnd Function

'Event saat memilih Option optUsiaPrivate Sub optUsia_Click(Index As Integer) 'Mengisi Nilai Dewasa (True atau False) 'Nilai True jika memilih opsi Dewasa Dewasa = Me.optUsia(0).ValueEnd Sub

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

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

18.3. Latihan 3

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

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

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

Pengaturan PropertiPengaturan pada: frmLat3No Objek Kontrol Properti Perubahan1 Label1 Caption &Jari-jari

2 Text1Name txtJariAlignment 1-Right JustifyText 0

3 Label2 Caption Keliling

4 Text2Name txtKelAlignment 1-Right JustifyText 0

5 Label3 Caption Luas

6 Text3Name txtLuasAlignment 1-Right JustifyText 0

7 Label4 Caption Volume Bola

8 Text4Name txtVolAlignment 1-Right JustifyText 0

9 Frame1Caption Dikosongkan Height 30

10 Command1Name cmdProsesCapion &Proses

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

Page 68: Latihan

Gambar 18.3. Desain form.

Baris KodeBaris kode pada: frmLat21

2

3

4567

8

9

10

11

12

1314151617

Option Explicit

'Deklarasi Konstanta piConst pi = 22 / 7

'Event saat mengklik tombol cmdProsesPrivate Sub cmdProses_Click() 'Deklarasi variabel Dim r As Long Dim Keliling As Single Dim Luas As Single Dim Volume As Single 'Mengisi nilai r dengan teks pada txtJari r = Me.txtJari.Text

'Jika value r tidak samadengan 0 maka If Val(r) <> 0 Then 'Keliling adalah pi dikali 2 kali r Keliling = pi * (2 * r) 'Luas adalah pi dikali r dikali r Luas = pi * r * r 'Volume adalah 4/3 dikali pi 'dikali r dikali r Volume = 4 / 3 * pi * r * r

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

18.4. Latihan 4

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

Kode Kamar Jenis KamarML MELATIMW MAWARAG ANGGREKDL DAHLIA

Kode Kelas Jenis KamarE EKONOMIB BISNISX EXECUTIVEP PRESIDENT

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

Page 69: Latihan

Tabel TarifE B X V P

ML 45.000 65.000 85.000 105.000 125.000MW 47.500 67.500 87.500 107.500 127.500AG 50.000 70.000 90.000 110.000 130.000DL 55.000 75.000 95.000 115.000 135.000

Tabel TarifE B X V P

ML 0% 5% 10% 15% 20%MW 0% 5% 10% 15% 20%AG 0% 5% 10% 15% 20%DL 0% 5% 10% 15% 20%Catatan: Diskon berlaku jika lama menginap 3 hari atau lebih.

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

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

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

Pengaturan PropertiPengaturan pada: frmLat4No Objek Kontrol Properti Perubahan1 Label1 Caption &KODE

2 Text1Name txtKodeText ML-07-P

3 Label2 Caption TANGGAL &MASUK

4 Text2Name txtMasukText 12-01-06

5 Label3 Caption TANGGAL K&ELUAR

6 Text3Name txtKeluarText 15-01-06

7 Frame1Caption DikosongkanHeight 30

8 Label4 Caption KAMAR

9 Text4Name txtKamarText Dikosongkan

10 Label5 Caption NOMOR

11 Text5Name txtNomorText Dikosongkan

12 Label6 Caption LAMA MENGINAP

13 Text6Name txtLamaText 0

14 Label7 Caption TARIF

15 Text7Name txtTarifText 0

16 Label8 Caption DISKON

17 Text8Name txtDiskonText 0

18 Label9 Caption TOTAL BAYAR

19 Text9Name txtTotalText 0

20 Command1Name cmdProsesCaption &Proses

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

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

Page 70: Latihan

Gambar 18.4. Desain form.

Ketikkan kode sumber berikut ini:

Baris KodeBaris kode pada: frmLat41

23456789101112

13

14

15

16

171819202122232425262728

29

30

31

Option Explicit

'Deklarasi variabel level untuk sebuah modulDim Kode As StringDim Masuk As DateDim Keluar As DateDim Lama As IntegerDim Kamar As StringDim Kelas As StringDim Nomor As StringDim Tarif As LongDim Diskon As LongDim Total As LongPrivate Sub cmdProses_Click() 'Mengisi var Kode dengan teks dari txtKode Kode = Me.txtKode.Text 'Jika dua huruf awal dari Kode adalah ML If Left(UCase(Kode), 2) = "ML" Then 'Isi nilai var Kamar dengan MELATI Kamar = "MELATI" 'Jika satu huruf terakhir Kode adalah E If Right(UCase(Kode), 1) = "E" Then 'Isi Tarif dengan 45000 Tarif = 45000 ElseIf Right(UCase(Kode), 1) = "B" Then Tarif = 65000 ElseIf Right(UCase(Kode), 1) = "X" Then Tarif = 85000 ElseIf Right(UCase(Kode), 1) = "V" Then Tarif = 105000 ElseIf Right(UCase(Kode), 1) = "P" Then Tarif = 125000 Else Tarif = 0 End If 'Jika dua huruf awal dari Kode adalah MW ElseIf Left(UCase(Kode), 2) = "MW" Then 'Isi nilai var Kamar dengan MAWAR Kamar = "MAWAR" 'Jika satu huruf terakhir Kode adalah E If Right(UCase(Kode), 1) = "E" Then

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

Page 71: Latihan

323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

77

7879

80

81

82

83

84

'Isi Tarif dengan 47500 Tarif = 47500 ElseIf Right(UCase(Kode), 1) = "B" Then Tarif = 67500 ElseIf Right(UCase(Kode), 1) = "X" Then Tarif = 87500 ElseIf Right(UCase(Kode), 1) = "V" Then Tarif = 107500 ElseIf Right(UCase(Kode), 1) = "P" Then Tarif = 127500 Else Tarif = 0 End If ElseIf Left(UCase(Kode), 2) = "AG" Then Kamar = "ANGGREK" If Right(UCase(Kode), 1) = "E" Then Tarif = 50000 ElseIf Right(UCase(Kode), 1) = "B" Then Tarif = 70000 ElseIf Right(UCase(Kode), 1) = "X" Then Tarif = 90000 ElseIf Right(UCase(Kode), 1) = "V" Then Tarif = 110000 ElseIf Right(UCase(Kode), 1) = "P" Then Tarif = 130000 Else Tarif = 0 End If ElseIf Left(UCase(Kode), 2) = "DL" Then Kamar = "DAHLIA" If Right(UCase(Kode), 1) = "E" Then Tarif = 55000 ElseIf Right(UCase(Kode), 1) = "B" Then Tarif = 75000 ElseIf Right(UCase(Kode), 1) = "X" Then Tarif = 95000 ElseIf Right(UCase(Kode), 1) = "V" Then Tarif = 115000 ElseIf Right(UCase(Kode), 1) = "P" Then Tarif = 135000 Else Tarif = 0 End If Else Kamar = "MAYAT" End If 'Isi nilai var Nomor dengan huruf ke-4 'Sebanyak 2 huruf dari Kode Nomor = Mid(Kode, 4, 2) 'Isi nilai var Masuk dengan teks 'pada txtMasuk yang telah diformat 'ke tipe data Date Masuk = CDate(Me.txtMasuk.Text) Keluar = CDate(Me.txtKeluar.Text) 'Mengisi nilai var Lama dengan 'hasil pengurangan nilai var Keluar 'dengan var Masuk kemudian ditambah 1 Lama = DateDiff("d", Masuk, Keluar) + 1 'Mengisi nilai Tarif dengan perkalian 'Tarif dasar dengan Lama Tarif = Tarif * Lama 'Jika lama adalah 3 atau lebih dari 3 If Lama >= 3 Then 'Jika 1 huruf terakhir dari Kode 'adalah B maka If Right(UCase(Kode), 1) = "B" Then 'Diskon adalah Tarif dikali 5% Diskon = Tarif * 5 / 100

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

Page 72: Latihan

85

8687888990919293

949596

97

9899100101102103104

'Jika 1 huruf terakhir dari Kode 'adalah X maka ElseIf Right(UCase(Kode), 1) = "X" Then 'Diskon adalah Tarif dikali 10% Diskon = Tarif * 10 / 100 ElseIf Right(UCase(Kode), 1) = "V" Then Diskon = Tarif * 15 / 100 ElseIf Right(UCase(Kode), 1) = "P" Then Diskon = Tarif * 20 / 100 Else Diskon = 0 End If 'Jika tidak (jika Lama kurang dari 3) Else Diskon = 0 End If 'Total adalah Tarif dikurangi Diskon Total = Tarif - Diskon 'Output/keluaran Me.txtKamar.Text = Kamar Me.txtNomor.Text = Nomor Me.txtLama.Text = Lama & " hari" Me.txtTarif.Text = FormatNumber(Tarif, 0) Me.txtDiskon.Text = FormatNumber(Diskon, 0) Me.txtTotal.Text = FormatNumber(Total, 0)End Sub

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

Contoh format pengisian Kode, Tanggal masuk dan Tanggal keluar:

Kode Tanggal Masuk Tanggal KeluarMW-24-E 10-02-2006 11-02-2006AG-09-B 11-02-2006 20-02-2006DL-82-X 12-02-2006 12-02-2006

18.5. Latihan 5

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

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

Pengaturan PropertiPengaturan pada: frmLat5No Objek Kontrol Properti Perubahan1 Label1 Caption Jam Mulai

2 Text1Name txtMulaiText 00:00:00

3 Label2 Caption Jam Sekarang

4 Text2Name txtSekarangText 00:00:00

5 Label3 Caption Lamanya

6 Text3Name txtLamaText 00:00:00

7 Label4 Caption Tarif

8 Text4Name txtTarifText 0

9 Command1Name cmdMulaiCaption &Mulai

10 Command2Name cmdSelesaiCaption &Selesai

11 Timer1 Name tmrMulai

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

Page 73: Latihan

Interval 100

12 Timer2Name tmrSekarangInterval 100

13 Timer3Name tmrLamaEnabled FalseInterval 100

Gambar 18.5. Desain form.

Ketikkan kode sumber berikut ini:

Baris KodeBaris kode pada: frmLat51

234567

8

910111213

14

15

1617

1819

20

21

2223

2425

Option Explicit'Deklarasi variabel level untuk sebuah modulDim WaktuMulai As DateDim WaktuSekarang As DateDim Lama As DateDim Mulai As BooleanDim Tarif As LongConst HargaSewa = 1000

'Event saat mengklik tombol cmdMulaiPrivate Sub cmdMulai_Click() 'Mengaktifkan var Mulai Mulai = True WaktuMulai = Me.txtMulai.Text Me.tmrMulai.Enabled = False Me.tmrLama.Enabled = TrueEnd Sub

'Event saat mengklik tombol cmdStopPrivate Sub cmdStop_Click() 'Mengaktifkan tmrMulai Me.tmrMulai.Enabled = True 'Menonaktifkan tmrLama Me.tmrLama.Enabled = FalseEnd Sub

'Event sebelum form ditutupPrivate Sub Form_Unload(Cancel As Integer) Dim PassWord As String 'Membatalkan penutupan form Cancel = 1 'Menampilkan dialog InputBox PassWord = InputBox("Masukkan Password", _ "Password", , (Screen.Width - 5000) / 2, _ (Screen.Height - 2000) / 2) 'Jika Passwor adalah inochi maka 'form ditutup If PassWord = "inochi" Then Cancel = 0End Sub'Private Sub tmrLama_Timer() Dim DetikLaju As Long 'Lama adalah WaktuMulai

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

Page 74: Latihan

26

27

28

29

3031

323334

35363738

'dikurangi WaktuSekarang Lama = WaktuMulai - WaktuSekarang 'Mengakumulasikan detik terpakai DetikLaju = (Hour(Lama) * 3600) + _ (Minute(Lama) * 60) + Second(Lama) 'Menentukan Tarif perdetik Tarif = (HargaSewa / 3600) * DetikLaju 'Menampilkan nilai Lama pada txtLama Me.txtLama.Text = Lama 'Menampilkan besarnya Tarif Me.txtTarif.Text = "Rp. " & TarifEnd Sub'Private Sub tmrMulai_Timer() Me.txtMulai.Text = TimeEnd Sub'Private Sub tmrSekarang_Timer() WaktuSekarang = Time Me.txtSekarang.Text = TimeEnd Sub

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

18.6. Latihan 6

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

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

Pengaturan PropertiPengaturan pada: frmLat6No Objek Kontrol Properti Perubahan

1 Label1Name lblAngkaCaption Angka ke-1

2 Text1Name txtAngkaAlign 1-Right JustifyText 0

3 Command1Name cmdProsesCaption &Proses

4 Frame1Caption Dikosongkan Height 30

Gambar 18.6. Desain form.

Baris KodeBaris kode pada: frmLat61

2

Option Explicit

'Deklarasi variabel level untuk sebuah modulDim Posisi As Integer

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

Page 75: Latihan

3

456789

10111213141516

171819202122232425

262728293031323334

35363738394041

4243444546

474849505152

53

54

5556

Dim Angka() As Double

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

Function Rata_Rata(Angka() As Double) As Double Dim i As Long For i = 1 To UBound(Angka) Rata_Rata = Rata_Rata + Angka(i) Next Rata_Rata = Rata_Rata / (i - 1)End Function

Function Maksimum(Angka() As Double) As Double Dim i As Long Maksimum = Angka(1) For i = 1 To UBound(Angka) If Angka(i) >= Maksimum Then Maksimum = Angka(i) End If NextEnd Function

Function Minimum(Angka() As Double) As Double Dim i As Long Minimum = Angka(1) For i = 1 To UBound(Angka) If Angka(i) <= Minimum Then Minimum = Angka(i) End If NextEnd Function

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

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

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

'Event saat menekan tombol'saat pointer pada txtAngkaPrivate Sub txtAngka_KeyPress( _KeyAscii As Integer) ' ReDim Preserve Angka(Posisi) 'Jika menekan tombol Enter maka... If KeyAscii = 13 Then Angka(Posisi) = CDbl(Me.txtAngka.Text)

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

Page 76: Latihan

5758

59

60616263

6465

6667

68

69

70

71

72

73

747576

777879

80818283

848586

87

'Memfokuskan txtAngka txtAngka_GotFocus Posisi = Posisi + 1 ' Me.lblAngka.Caption = _ "Angka ke-" & CStr(Posisi) Me.Cls Me.cmdProses.Enabled = True End IfEnd Sub

Sub CetakDiForm() Dim i As Integer 'Mengatur batas Kiri dan batas Atas Me.ScaleLeft = -200 Me.ScaleTop = -1100 'Mengatur posisi Kiri Me.CurrentX = 0 'Pengulangan sebanyak Angka yang dimasukan For i = 1 To UBound(Angka) 'Mengatur posisi Atas Me.CurrentY = 0 + (i * 300) 'Mencetak ke form Me.Print "Angka ke-" & CStr(i) & _ " = " & CStr(Angka(i)) Next 'Mencetak baris Me.Line (0, i * 300)-(2500, i * 300) 'Mencetak teks Jumlah = ... Me.CurrentX = 0 Me.CurrentY = (i) * 300 + 100 Me.Print "Jumlah = " & _ CStr(Jumlah(Angka)) 'Mencetak teks Rata-Rata = ... Me.CurrentX = 0 Me.CurrentY = (i + 1) * 300 + 100 Me.Print "Rata-Rata = " & _ CStr(Round(Rata_Rata(Angka), 2)) 'Mencetak teks Maximum = ... Me.CurrentX = 0 Me.CurrentY = (i + 2) * 300 + 100 Me.Print "Maximum = " & _ CStr(Maksimum(Angka)) 'Mencetak teks Minimum = ... Me.CurrentX = 0 Me.CurrentY = (i + 3) * 300 + 100 Me.Print "Minimum = " & _ CStr(Minimum(Angka))End Sub

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

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

Page 77: Latihan

Gambar 18.7. Program menampilkan hasil proses.

18.7. Latihan 7

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

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

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

Pengaturan PropertiPengaturan pada: frmLat7No Objek Kontrol Properti Perubahan

1 Picture1Name picGambarAppearance 0-FlatAutoRedraw True

2 Frame1 Caption Pilih Gambar

3 Command1Name cmdClearCaption &Clear

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

Pengaturan PropertiPengaturan pada: frmLat7No Objek Kontrol Properti Perubahan

4 Picture1

Name picCapAutoSize TrueBorderStyle 0-NoneDragMode 1-AutomaticIndex 0

PictureGambar dengan format ico (ikon)

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

Gambar 18.8. Desain form.

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

Page 78: Latihan

Ketikkan kode berikut:

Baris KodeBaris kode pada: frmLat61

2345

678910111213

14

15

16

17

18

19

20

212223

242526

27

2829303132

333435363738

3940

41

42

Option Explicit'Dim sX!, sY!, aX!, aY!Dim x1!, y1!, x2!, y2!Dim idxGambar As IntegerDim Pilih As Boolean'Sub CapLingkar(X As Single, Y As Single) Dim Teks As String Dim txWdt As Long, txHgt As Long sX = X: sY = Y With Me.picGambar Teks = "ANDI OFFSET" txWdt = .TextWidth(Teks) txHgt = .TextHeight(Teks) 'Menentukan tebal garis .DrawWidth = 4 'Menentukan warna garis .ForeColor = &H800000 'Menggambar lingkaran pertama 'dengan titik pusat (sY, sY) 'dan berdiameter 800px Me.picGambar.Circle (sX, sY), 800 'Menentukan tebal garis .DrawWidth = 2 'Menentukan warna garis .ForeColor = vbRed 'Menggambar lingkaran kedua Me.picGambar.Circle (sX, sY), 450 'Menggambar kotak Me.picGambar.Line (sX - 1000, _ sY - 200)-Step _ (2000, 400), RGB(192, 192, 192), BF .CurrentX = sX - txWdt / 2 .CurrentY = sY - txHgt / 2 .ForeColor = vbWhite 'Mencetak Teks Me.picGambar.Print Teks End WithEnd Sub

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

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

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

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

Page 79: Latihan

434445

46

474849

50

51

52

5354555657

58

59

6061

6263646566676869

70

7172737475

76777879

80

81

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

Private Sub picCap_DragOver(Index As Integer, _Source As Control, X As Single, _Y As Single, State As Integer) On Error Resume Next idxGambar = Index Pilih = True 'Mengubah icon saat dragging Source.DragIcon = _ Me.picCap(idxGambar).PictureEnd Sub

'Event saat meletakkan icon ke picGambarPrivate Sub picGambar_DragDrop( _Source As Control, _X As Single, Y As Single) If idxGambar = 3 Then CapLingkar X, Y Else: CapGambar idxGambar, X, Y End IfEnd Sub

'Event saat pointer mouse di atas picGambarPrivate Sub picGambar_MouseMove( _Button As Integer, Shift As Integer, _X As Single, Y As Single) If Pilih = True Then 'Mengubah pointer mouse Me.picGambar.MousePointer = 99 Me.picGambar.MouseIcon = _ Me.picCap(idxGambar).Picture 'Jika sambil menekan tombol kanan mouse If Button = 2 Then If idxGambar = 3 Then CapLingkar X, Y Else: CapGambar idxGambar, X, Y End If End If End IfEnd Sub

'Event saat melepas tombol mousePrivate Sub picGambar_MouseUp( _Button As Integer, Shift As Integer, _X As Single, Y As Single) If idxGambar = 3 Then CapLingkar X, Y Else: CapGambar idxGambar, X, Y End IfEnd Sub

Sub CapGambar(Index%, X!, Y!) Dim wPic As Long, hPic As Long wPic = Me.picCap(Index).Width hPic = Me.picCap(Index).Height 'Menggambar pada picGambar 'sesuai gambar dari picCap terpilih Me.picGambar.PaintPicture _ Me.picCap(Index).Picture, _ X - wPic / 2, Y - hPic / 2, wPic, hPicEnd Sub

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

Page 80: Latihan

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

Gambar 18.9. Program sedang berjalan.

18.8. Latihan 8

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

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

Pengaturan PropertiPengaturan pada: frmLat8No Objek Kontrol Properti Perubahan

1 Command1

Name cmdAcakStyle 1-Graphic

PictureGambar ikon (format .ico)

DisabledPictureGambar ikon (format .ico)

2 Timer1Name Timer1Interval 100Enabled False

3 Image1

Name imgIcon

PictureSamakan dengan gambar dari properti: Picture cmdAcak

Gambar 18.10. Desain form.

Ketikkan kode berikut:

Baris KodeBaris kode pada: frmLat81

2

345

6

7

Option Explicit

Dim ANGKA$, Acak As Byte

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

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

Page 81: Latihan

8

9

10

1112

13141516

171819

202122

2324

25

262728

29303132

33343536

3738

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

Private Sub Form_Load() Me.AutoRedraw = True AcakAngkaEnd Sub

Private Sub Timer1_Timer() AcakAngkaEnd Sub

Sub AcakAngka() Dim INDEX As Integer Me.Cls 'Mengatur Font dari form Me.Font.Name = "Courier New" Me.Font.Size = 20 'Mulai mengacak ANGKA = Int(Rnd * 10) & Int(Rnd * 10) & _ Int(Rnd * 10) & Int(Rnd * 10) & _ Int(Rnd * 10) & Int(Rnd * 10) & _ Int(Rnd * 10) & Int(Rnd * 10) & _ Int(Rnd * 10) & Int(Rnd * 10) & _ Int(Rnd * 10) & Int(Rnd * 10) & _ Int(Rnd * 10) & Int(Rnd * 10) Me.ForeColor = vbGreen Me.CurrentX = 1220 Me.CurrentY = 250 'Mencetak Angka (bayangan 1) Me.Print ANGKA Me.ForeColor = vbBlue Me.CurrentX = 1210 Me.CurrentY = 270 'Mencetak Angka (bayangan 2) Me.Print ANGKA Me.ForeColor = vbRed Me.CurrentX = 1205 Me.CurrentY = 275 'Mencetak Angka Me.Print ANGKAEnd Sub

Jalankan program klik tombol.

Gambar 18.11. Program sedang berjalan.

18.9. Latihan 9

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

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

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

Page 82: Latihan

Pengaturan PropertiPengaturan pada: frmLat9No Objek Kontrol Properti Perubahan

1 Picture1

Name picSumberAutoSize True

PictureTerserah Anda (bertipe bmp)

SacleMode 3-Pixel

2 Picture2

Name picSumberAutoSize True

PictureTerserah Anda (bertipe bmp)

SacleMode 3-Pixel

3 Command1Name cmdPutar90Caption &Putar 90

4 Command2Name cmdTransparanCaption &Transparan

Gambar 18.12. Desain form.

Ketikkan kode berikut:

Baris KodeBaris kode pada: frmLat91

23

45

6

789

101112

131415

1617

18

19

Option Explicit

Private Sub cmdPutar90_Click() Dim x, y 'Mengubah Scalemode menjadi Pixel Me.picSumber.ScaleMode = 3 Me.picTarget.ScaleMode = 3 'Membersihkan picTarget picTarget.Cls 'Menggambar dan memutar 90º picTarget For y = 0 To Me.picSumber.ScaleHeight For x = 0 To Me.picSumber.ScaleWidth Me.picTarget.PSet (x, y), _ Me.picSumber.Point(y, x) Next NextEnd Sub

Private Sub cmdTransparan_Click() Dim XRd, YRd, PelX, PelY, PelC, ScrX, ScrY Me.picTarget.ScaleMode = 1 ' ScrX = Screen.TwipsPerPixelX ScrY = Screen.TwipsPerPixelY 'Membersihkan picTarget picTarget.Cls 'Mengubah Scalemode picTarget Me.picTarget.ScaleMode = 1

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

Page 83: Latihan

202122

23

2425

26

2728293031

'Menggambar transparan picTarget For YRd = 0 To (picSumber.ScaleHeight - 1) PelY = picSumber.Top + (YRd * ScrY) For XRd = 0 To ( _ picSumber.ScaleWidth - 1) PelX = picSumber.Left + _ (XRd * ScrX) PelC = picSumber.Point(XRd, YRd) If PelC <> picSumber.Point(0, 0) _ And PelC > 0 Then picTarget.Line (PelX, PelY)- _ Step(ScrX, ScrY), PelC, BF End If Next XRd DoEvents Next YRdEnd Sub

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

Gambar 18.13. Program sedang berjalan.

18.10.Latihan 10

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

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

Pengaturan PropertiPengaturan pada: frmLat10No Objek Kontrol Properti Perubahan

1 Picture1

Name picTulisAutoSize TrueAppearance 0-FlatBorderColor Putih

2 Label1 Caption &Nama Font3 Label2 Caption &Ukuran Font4 Label3 Caption Posisi &Kiri5 Label4 Caption Posisi &Atas6 Label5 Caption &Teks7 Label6 Caption &Warna

8 Combo1Name cboFontText Dikosongkan

9 Combo2Name cboUkuranText Dikosongkan

10 Text1Name txtXText 0

11 Text2Name txtYText 0

12 Text3Name txtTextText Dikosongkan

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

Page 84: Latihan

13 Picture2

Name picWarnaAutoSize TrueAppearance 0-FlatBorderColor Putih

14 Command1Name cmdTulisCaption &Tulis

15 Command2Name cmdClearCaption &Clear

Gambar 18.14. Desain form.

Ketikkan kode berikut:

Baris KodeBaris kode pada: frmLat101

2

3

45

6

789

101112

13141516

171819

202122232425

26

Option Explicit

Dim ptX, ptY, intX, intY

Private Sub cmdTulis_Click()' Mencetak tulisan ke picturebox With Me.picTulis .CurrentX = Val(Me.txtX.Text) .CurrentY = Val(Me.txtY.Text) .Font.Name = Me.cboFont.Text .Font.Size = Me.cboUkuran.Text Me.picTulis.Print Me.txtText.Text End WithEnd Sub

Private Sub cmdClear_Click() picTulis.ClsEnd Sub

Private Sub Form_Load() Dim i As Integer, perWdt As Long Me.picTulis.AutoRedraw = True Me.picWarna.AutoRedraw = True'Mengisi combo ukuran dengan angka 'mulai dari 8 For i = 8 To 30 Step 2 Me.cboUkuran.AddItem i Next'Mengisi combo dengan daftar font dari 'sistem komputer Me.cboUkuran.ListIndex = 0 For i = 1 To Screen.FontCount Me.cboFont.AddItem Screen.Fonts(i) Next Me.cboFont.ListIndex = 0End Sub

Private Sub Form_Paint()

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

Page 85: Latihan

27282930

3132

333435

363738

39

40414243

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

Private Sub picWarna_Click() Form_PaintEnd Sub

Private Sub picWarna_MouseDown( _Button As Integer, Shift As Integer, _X As Single, Y As Single) intX = X intY = Y picTulis.ForeColor = picWarna.Point(X, Y)End Sub

Gambar 18.15. Program sedang berjalan.

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

18.11.Latihan 11

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

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

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

Page 86: Latihan

Gambar 18.16. Desain Form dan MDIForm.

Pengaturan PropertiPengaturan pada: frmLogoNo Objek Kontrol Properti Perubahan

1 Picture1

Name picLogoAutoSize TrueAppearance 0-FlatBorderColor PutihPicture Terserah Anda

Ketikkan kode berikut:

Baris KodeBaris kode pada: mdiUtama1

234

5

Option Explicit

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

Baris kode pada: frmLogo1

234

6

Option Explicit

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

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

Gambar 18.17. Program sedang berjalan.

18.12.Latihan 12

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

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

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

Page 87: Latihan

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

Pengaturan PropertiPengaturan pada: frmLat12No Objek Kontrol Properti Perubahan

1 PicClip1

Name pccDaduCols 6Rows 3Picture Pada CD

2 Picture1

Name picDaduAutoSize TrueAppearance 0-FlatBorderColor PutihPicture Terserah Anda

3 TimerName Timer1Interval 100

Gambar 18.18. Desain Form.

Ketikkan kode berikut:

Baris KodeBaris kode pada: frmLat121

2

34

56

7

8

9

10

111213

14

Option Explicit

Dim x

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

Private Sub Form_Resize() 'Melarikan picDadu ke tengah form Me.picDadu.Move _ (Me.ScaleWidth - Me.picDadu.Width) / 2, _ (Me.ScaleHeight - Me.picDadu.Height) / 2End Sub

Private Sub Timer1_Timer() 'Menggambar picDadu dengan gambar 'dari PictureClip x = x + 1 If x = (Me.pccDadu.Rows * _ Me.pccDadu.Cols) Then x = 0 picDadu.Picture = _ pccDadu.GraphicCell(x)End Sub

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

Page 88: Latihan

Gambar 18.19. Program sedang berjalan.

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

Page 89: Latihan

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