Friday, June 8, 2012

Antisipasi Dari Pemberian 'Option Explicit' Ganda - VB6 Add-Ins

Kode di bawah berguna untuk mencegah pemberian Option Explicit ganda pada saat memasukan kode pada VBComponent (Form, Module, Class, dll) misalnya dengan menggunakan kode ini.

Adapun kode untuk mengantisipasi dari double Option Explicit adalah sebagai berikut:
Option Explicit 

Public Function
AddOptionExplicit() As String
If
RegRead("HKEY_CURRENT_USER\Software\Microsoft\VBA\Microsoft Visual Basic\RequireDeclaration") = 1 Then
AddOptionExplicit = vbNullString
Else
AddOptionExplicit = "Option Explicit 'Add by Project Builder 2.0" & vbCrLf
End If
End Function

Private Sub
Command1_Click()
MsgBox AddOptionExplicit
End Sub
Return VBNullString jika Option Explicit sudah ada, dan Option Explicit 'Add by Project Builder 2.0 jika Option Explicit belum ada.
READ MORE - Antisipasi Dari Pemberian 'Option Explicit' Ganda - VB6 Add-Ins

Data Report, Bagaimana Cara Menambahkannya Melalui Add-Ins?

Mengenai cara menambah data report project database melalui pemrograman Add-Ins - Apabila kita berusaha menambahkan sebuah data report (lebih umum ActiveX Designer) dengan menggunakan kode disamping: VBInstance.ActiveVBProject.VBComponents.Add (vbext_ct_ActiveXDesigner) seperti pada postingan sebelumnya, maka yang kita peroleh hanyalah peringatan error. Adapun untuk ActiveX designer maka kode adalah seperti disamping: VBInstance.ActiveVBProject.VBComponents.AddCustom("{78E93846-85FD-11D0-8487-00A0C90DC8A9}"). {78E93846-85FD-11D0-8487-00A0C90DC8A9} merupakan CLSID untuk data report default VB6, gantilah {78E93846-85FD-11D0-8487-00A0C90DC8A9} dengan CLSID yang sesuai, misalnya apabila menggunakan Crystal Report atau Active Report.

Adapun contoh kode untuk menambah data report baru melalui pemrograman Add-Ins adalah sebagai berikut:
Public VBInstance As VBIDE.VBE 
Public Connect As Connect

Option Explicit

Private Sub
CancelButton_Click()
Connect.Hide
End Sub

Private Sub
OKButton_Click()
Dim NewReport '- variant?
' //MSDBRPTR.DLL-Microsoft Data Report Designer v6.0
' InsertReferences "{642AC760-AAB4-11D0-8494-00A0C90DC8A9}", "1", "0"
' //msstdfmt.dll-Microsoft Data Formatting Object Library 6.0 (SP4)
' InsertReferences "{6B263850-900B-11D0-9484-00A0C91110ED}", "1", "0"

' //dua referensi .dll (MSDBRPTR.DLL dan msstdfmt.dll) di atas, akan otomatis direferensi pada saat kode di bawah dijalankan

'//Insert data report, CLSID untuk data report {78E93846-85FD-11D0-8487-00A0C90DC8A9}}
'//atau CLSID-nya diganti dengan ProgID juga akan menghasilkan hasil yang sama.
Set NewReport = VBInstance.ActiveVBProject.VBComponents.AddCustom("{78E93846-85FD-11D0-8487-00A0C90DC8A9}")

'mengatur properties
With NewReport
.Name = "rptSiswa" 'rubah nama menjadi rptSiswa
.Properties("Caption") = "Laporan data siswa"
'.dan sebagainya
'.dan sebagainya
End With
End Sub

'-------------------------------------------------------------------------------------------
'//Kode di bawah tidak diperlukan, hanya sebagai pengingat saja...
'-------------------------------------------------------------------------------------------

'Public Function InsertReferences(GUID As String, Mayor As Long, Minor As Long) As Boolean
'On Error GoTo ErrHandler
' 'Add dll references
' VBInstance.ActiveVBProject.References.AddFromGuid GUID, Mayor, Minor
' InsertReferences = True
'ErrHandler:
' InsertReferences = False
'End Function
READ MORE - Data Report, Bagaimana Cara Menambahkannya Melalui Add-Ins?

Mengubah Startup Object Melalui VB6 Add-Ins

Pada saat kita membuat project baru (Standard Exe misalnya), maka secara default yang menjadi standard object untuk project1 adalah Form1. Tetapi permasalahannya, bagaimana jika kita ingin membuat generator code yang Startup Objectnya Sub Main? untuk menyelesaikannya, kita hanya memerlukan 1 baris kode yaitu: VBInstance.ActiveVBProject.VBComponents.StartUpObject = vbext_so_SubMain. Untuk mengujinya buatlah project addin seperti posting terdahulu, gantilah seluruh kode yang terdapat pada frmAddin.
Public VBInstance As VBIDE.VBE 
Public Connect As Connect

Option Explicit

Private Sub
CancelButton_Click()
Connect.Hide
End Sub

Private Sub
OKButton_Click()
VBInstance.ActiveVBProject.VBComponents.StartUpObject = vbext_so_SubMain
End Sub
Compile dan jalankan seperti posting terdahulu.
READ MORE - Mengubah Startup Object Melalui VB6 Add-Ins

Menambah Module Dengan Kode Melalui VB6 Add-Ins

Menjelaskan mengenai cara menambah module melalui Visual Basic 6 Add-Ins - Sebelumnya saya telah memposting mengenai cara menambah Form, Menu, CommandButton, menambah referensi komponen OCX dan DLL melalui pemrograman Add-Ins, maka untuk melengkapi mengenai cara membuat robot software atau generator code tentulah harus dapat menambahkan Module, Class, UserControl, Resource, dsb.

Untuk menjalankan kode di bawah, ikuti langkah-langkah berikut:
  1. Buat project Add-Ins baru dengan cara Klik File, klik New Project, klik Addin
  2. Gantilah seluruh kode yang terdapat pada frmAddin dengan kode di bawah
  3. Lakukan compile dengan cara klik File, klik Make MyAddin.dll
  4. Simpan project, dan tutuplah aplikasi Visual Basic 6

Public VBInstance As VBIDE.VBE 
Public Connect As Connect

Option Explicit

Private Sub
CancelButton_Click()
Connect.Hide
End Sub

Private Sub
OKButton_Click()
AddModule "moDatabase", ConnectionCode
End Sub

Public Function
AddModule(ModulName As String, Optional strCode As String) As Boolean

Dim
newModule As VBComponent

On Error GoTo
ErrHandler

Set
newModule = VBInstance.ActiveVBProject.VBComponents.Add(vbext_ct_StdModule)
With newModule
.Name = ModulName
.CodeModule.AddFromString strCode
End With
Exit Function

ErrHandler:

MsgBox Err.Description

End Function

Private Function
ConnectionCode() As String
Dim
sMsg As String
sMsg = sMsg & "" & vbCrLf
sMsg = sMsg & "Public conn As ADODB.Connection" & vbCrLf
sMsg = sMsg & "" & vbCrLf
sMsg = sMsg & "Public Function OpenDatabase(Filename As String) As Boolean" & vbCrLf
sMsg = sMsg & "" & vbCrLf
sMsg = sMsg & " Dim c As String" & vbCrLf
sMsg = sMsg & " " & vbCrLf
sMsg = sMsg & " On Error GoTo ErrHandler" & vbCrLf
sMsg = sMsg & " " & vbCrLf
sMsg = sMsg & " c = " & Chr(34) & "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & Chr(34) & " & Filename" & vbCrLf
sMsg = sMsg & " " & vbCrLf
sMsg = sMsg & " Set conn = New ADODB.Connection" & vbCrLf
sMsg = sMsg & " conn.ConnectionString = c" & vbCrLf
sMsg = sMsg & " conn.Open" & vbCrLf
sMsg = sMsg & " " & vbCrLf
sMsg = sMsg & " OpenDatabase = True" & vbCrLf
sMsg = sMsg & " Exit Function" & vbCrLf
sMsg = sMsg & "" & vbCrLf
sMsg = sMsg & "ErrHandler:" & vbCrLf
sMsg = sMsg & " " & vbCrLf
sMsg = sMsg & " OpenDatabase = False" & vbCrLf
sMsg = sMsg & " " & vbCrLf
sMsg = sMsg & "End Function" & vbCrLf
ConnectionCode = sMsg
End Function

Untuk mengakses MyAddin.dll, buka project baru klik Add-in Addin Manager.... klik My Add-in, selanjutnya tekanlah tombol OK dan lihatlah hasilnya.
READ MORE - Menambah Module Dengan Kode Melalui VB6 Add-Ins