Showing posts with label Add-Ins-VB6. Show all posts
Showing posts with label Add-Ins-VB6. Show all posts

Monday, July 29, 2013

VB6 Database: Listview Code Generator Source Code

Tools VB6 Add-Ins yang satu ini digunakan untuk mengenerate source code listview untuk berinteraksi dengan database. Cara menggunakan:

  • Registrasikan terlebih dahulu komponen VB6 Listview Generator.dll yang terdapat dalam folder bin.
  • Buka project VB6
  • Klik menu Add-Ins >> VB6 Listview Generator, maka akan muncul form seperti di bawah ini:

VB6 Listview Generator
Gambar - VB6 Listview Generator

  • Pilih database apa saja (terserah), seperti gambar di bawah ini :

VB6 Listview Generator - Memilih database
Gambar: VB6 Listview Generator - Memilih database

  • Pilih tabel apa saja (terserah), seperti gambar di bawah ini:

VB6 Listview Generator - Memilih Tabel
VB6 Listview Generator - Memilih Tabel

Pilih ID (sebaiknya AUTO INCREMENT), seperti gambar di bawah ini:

VB6 Listview Generator - Memilih ID
VB6 Listview Generator - Memilih ID

  • Klik tombol Generate Code.
  • Ulangi seluruh langkah di atas sejumlah form listview yang Anda butuhkan.
  • Terakhir, edit manual jika ada kode yang kurang sesuai.
  • Selesai.

Download: VB6 Listview Generator Source Code. 

READ MORE - VB6 Database: Listview Code Generator Source Code

Monday, July 1, 2013

VB6 Add-Ins - Mengambil String Terpilih (Code Module)

Mengenai cara mengambil string terpilih (selected) dari code module. Adapun kodenya adalah seperti di bawah ini:

Public Function GetSelections() As String 

Dim cd As CodePane
Dim cm As CodeModule

Set cd = VBInstance.ActiveCodePane
Set cm = VBInstance.ActiveCodePane.CodeModule

Dim StartLine As Long
Dim StartColoum As Long
Dim EndLine As Long
Dim EndColoum As Long

Dim sKeyword As String

cd.GetSelection StartLine, StartColoum, EndLine, EndColoum
sKeyword = cm.Lines(StartLine, EndLine)
GetSelections = Mid$(sKeyword, StartColoum, EndColoum - StartColoum)

End Function
READ MORE - VB6 Add-Ins - Mengambil String Terpilih (Code Module)

VB6 Add-Ins Tools - Win32 Keyword Search

Dikarenakan saya tidak memiliki MSDN jadinya harus report membuat tools yang seperti ini. Tools ini gunanya untuk melakukan pencarian pada:
  1. Win32.hlp (sebelumnya Anda harus memiliki file Win32.hlp ukurannya 24MB)
  2. API-Guide.exe
  3. Google (dengan keyword ... + VB6)

Hasilnya, pada menu klik kanan VB6 terdapat 3 tambahan menu seperti terlihat pada gambar:

Win32 Keyword Search
Win32 Keyword Search

Adapun potongan kodenya adalah seperti di bawah:
'----------------------------------------------------------------------------- 
' http://khoiriyyah.blogspot.com
'-----------------------------------------------------------------------------

Option Explicit

Const HELP_COMMAND = &H102&
Const HELP_CONTENTS = &H3&
Const HELP_CONTEXT = &H1
Const HELP_CONTEXTPOPUP = &H8&
Const HELP_FORCEFILE = &H9&
Const HELP_HELPONHELP = &H4
Const HELP_INDEX = &H3
Const HELP_KEY = &H101
Const HELP_MULTIKEY = &H201&
Const HELP_PARTIALKEY = &H105&
Const HELP_QUIT = &H2
Const HELP_SETCONTENTS = &H5&
Const HELP_SETINDEX = &H5
Const HELP_SETWINPOS = &H203&

Private Declare Function WinHelp Lib "user32.dll" Alias "WinHelpA" (ByVal hWndMain As Long, ByVal lpHelpFile As String, ByVal uCommand As Long, dwData As Any) As Long
Private Declare Function
ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpszOp As String, ByVal lpszFile As String, ByVal lpszParams As String, ByVal LpszDir As String, ByVal FsShowCmd As Long) As Long

Public VBInstance As VBIDE.VBE

Private oWin32Search As Office.CommandBarControl
Private oGoogleSearch As Office.CommandBarControl
Private oAPIGuideSearch As Office.CommandBarControl

Private WithEvents Win32Search As CommandBarEvents
Private WithEvents GoogleSearch As CommandBarEvents
Private WithEvents APIGuideSearch As CommandBarEvents

Private Sub SearchKeyword(Keyword As String)
Dim ret As Long
ret = WinHelp(frmDummy.hwnd, App.Path & "\win32.hlp", HELP_KEY, ByVal Keyword)
End Sub

Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)

On Error GoTo ErrHandler:

Set VBInstance = Application

If ConnectMode = ext_cm_Startup Then
Set oWin32Search = AddItemToMenu("&Win32 Keyword Search", "Code Window")
Set Win32Search = VBInstance.Events.CommandBarEvents(oWin32Search)

Set oGoogleSearch = AddItemToMenu("&Google Search", "Code Window")
Set GoogleSearch = VBInstance.Events.CommandBarEvents(oGoogleSearch)

Set oAPIGuideSearch = AddItemToMenu("&API-Guide Search", "Code Window")
Set APIGuideSearch = VBInstance.Events.CommandBarEvents(oAPIGuideSearch)
End If

Exit Sub

ErrHandler:

MsgBox Err.Description

End Sub

Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode As AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)
On Error Resume Next
Call oWin32Search.Delete
Set oWin32Search = Nothing
Call oGoogleSearch.Delete
Set oWin32Search = Nothing
Call oWin32Search.Delete
Set oAPIGuideSearch = Nothing
Set Win32Search = Nothing
Set GoogleSearch = Nothing
Set APIGuideSearch = Nothing
Set VBInstance = Nothing
End Sub

Private Function AddItemToMenu(sCaption As String, sMenuName As String, Optional Bitmap As Object) As Office.CommandBarControl

Dim cbMenuCommandBar As Office.CommandBarControl
Dim cbMenu As CommandBar
Dim oTemp As Object
Dim sClipText As String

On Error GoTo ErrHandler:

Set cbMenu = VBInstance.CommandBars(sMenuName)
If cbMenu Is Nothing Then Exit Function

Set cbMenuCommandBar = cbMenu.Controls.Add(msoControlButton, , , VBInstance.CommandBars(sMenuName).Controls.Item("&Definition").Index)
cbMenuCommandBar.Caption = sCaption

' If Not Bitmap Is Nothing Then
' With Clipboard
' sClipText = .GetText
' Set oTemp = .GetData
' .SetData Bitmap, vbCFBitmap
' cbMenuCommandBar.PasteFace
' .Clear
' If Not oTemp Is Nothing Then
' .SetData oTemp
' End If
' .SetText sClipText
' End With
' If Err Then GoTo ErrHandler
' End If

Set AddItemToMenu = cbMenuCommandBar

Exit Function

ErrHandler:

MsgBox Err.Description

End Function

Private Sub Win32Search_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean)
Dim sSelections As String
sSelections = GetSelections
If Trim$(sSelections) = "" Then Exit Sub
Call SearchKeyword(sSelections)
End Sub

Private Sub GoogleSearch_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean)
Dim r As Long
Dim sSelections As String
sSelections = Trim$(GetSelections)
If sSelections = "" Then Exit Sub
r = ShellExecute(0, "open", "http://www.google.com/search?q=" & sSelections & "+VB6", 0, 0, 1)
End Sub

Private Sub APIGuideSearch_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean)
Dim sSelections As String
sSelections = Trim$(GetSelections)
If sSelections = "" Then Exit Sub
Dim wsh As New IWshRuntimeLibrary.WshShell
wsh.RegWrite "HKCU\Software\KPD-Team\API-Guide\LastAPI", sSelections
Shell "C:\Program Files\API-Guide\API-Guide.exe", vbNormalFocus
End Sub

Public Function GetSelections() As String

Dim cd As CodePane
Dim cm As CodeModule

Set cd = VBInstance.ActiveCodePane
Set cm = VBInstance.ActiveCodePane.CodeModule

Dim StartLine As Long
Dim StartColoum As Long
Dim EndLine As Long
Dim EndColoum As Long

Dim sKeyword As String

cd.GetSelection StartLine, StartColoum, EndLine, EndColoum
sKeyword = cm.Lines(StartLine, EndLine)
GetSelections = Mid$(sKeyword, StartColoum, EndColoum - StartColoum)

End Function
Selengkapnya bisa didownload pada link di bawah ini:
Download: Win32KeywordSearch
READ MORE - VB6 Add-Ins Tools - Win32 Keyword Search

Sunday, March 31, 2013

VB6 Tools: VB6 Code Tidy


Sebelumnya saya pernah memposting beberapa VB6 Tools, salah satu yang dianggap bermanfaat diantaranya adalah Manifest Creator yang dibuat LaVolpe.
Kali ini masih mengenai VB6 tools yang berguna untuk men-tidy code-code VB6. Contoh kode:
Private Sub GetProfilIDAndBloggerID(TextXML As String)

Dim child As IXMLDOMNode
Dim x As New DOMDocument
x.loadXML TextXML
Dim strID As String
Dim i As Integer
' Add the child nodes

ReDim strIDAndProfiles(0)

For Each child In x.documentElement.childNodes
If child.NodeName = "entry" Then
For i = 0 To child.childNodes.Length - 1
If child.childNodes(i).NodeName = "id" Then
strID = child.childNodes(i).Text
If Trim$(strID) <> "" Then
strIDAndProfiles(UBound(strIDAndProfiles)) = strID
End If
ReDim Preserve strIDAndProfiles(UBound(strIDAndProfiles) + 1)
End If
Next
End If
Next

If blnFromFile = False Then
strPathXML = App.Path & "\" & strTitle & ".XML"
End If

Dim b As Integer

frmBlog.List1.Clear

If UBound(strIDAndProfiles) > 0 Then
For i = 0 To UBound(strIDAndProfiles)
If Trim$(strIDAndProfiles(i)) <> "" Then
frmBlog.List1.AddItem strIDAndProfiles(i)
End If
Next
End If

With frmBlog
If .List1.ListCount > 1 Then
.Show vbModal, frmMain
strID = .List1.List(.List1.ListIndex)
Else
strID = .List1.List(0)
End If
End With

i = InStr(1, strID, "user-")
b = InStr(1, strID, "blog-")

strBlogID = Mid$(strID, b + 5, 19)
strProfileID = Mid$(strID, i + 5, Len(strID) - (b + 3))
Set x = Nothing

End Sub
Melihat kode di atas, tidak Anda kesulitan membacanya? Nah, dengan tools ini Anda akan mudah meng-indentnya secara tepat, sehingga menjadi:
Private Sub GetProfilIDAndBloggerID(TextXML As String)

    Dim child As IXMLDOMNode
    Dim x As New DOMDocument
    x.loadXML TextXML
    Dim strID As String
    Dim i As Integer
    ' Add the child nodes

    ReDim strIDAndProfiles(0)

    For Each child In x.documentElement.childNodes
        If child.NodeName = "entry" Then
            For i = 0 To child.childNodes.Length - 1
                If child.childNodes(i).NodeName = "id" Then
                    strID = child.childNodes(i).Text
                    If Trim$(strID) <> "" Then
                        strIDAndProfiles(UBound(strIDAndProfiles)) = strID
                    End If
                    ReDim Preserve strIDAndProfiles(UBound(strIDAndProfiles) + 1)
                End If
            Next
        End If
    Next

    If blnFromFile = False Then
        strPathXML = App.Path & "\" & strTitle & ".XML"
    End If

    Dim b As Integer

    frmBlog.List1.Clear

    If UBound(strIDAndProfiles) > 0 Then
        For i = 0 To UBound(strIDAndProfiles)
            If Trim$(strIDAndProfiles(i)) <> "" Then
                frmBlog.List1.AddItem strIDAndProfiles(i)
            End If
        Next
    End If

    With frmBlog
        If .List1.ListCount > 1 Then
            .Show vbModal, frmMain
            strID = .List1.List(.List1.ListIndex)
        Else
            strID = .List1.List(0)
        End If
    End With

    i = InStr(1, strID, "user-")
    b = InStr(1, strID, "blog-")

    strBlogID = Mid$(strID, b + 5, 19)
    strProfileID = Mid$(strID, i + 5, Len(strID) - (b + 3))
    Set x = Nothing

End Sub
Cara menggunakan:
  1. Ekstrak terlebih dahulu
  2. Klik Install.bat
  3. Buka project VB6 apa saja (terserah)
  4. Klik Menu Add-Ins, pada menu ini Anda akan menemukan sebuah menu baru yaitu menuu Rapikan Kode
  5. Klik Rapikan Kode
  6. Beri centang pada CheckBox Rapikan Seluruhnya untuk merapikan seluruh kode yang ada pada Project
Download: VB6 Code Tidy Source Code
READ MORE - VB6 Tools: VB6 Code Tidy

Monday, June 25, 2012

theBatch Add-Ins, Mengatasi Beberapa Masalah Manifest Resour

Ini merupakan aplikasi VB6 Add-Ins, saya namakan dengan theBatch, karena ia dapat menyelesaikan masalah form yang disebabkan manifest resource secara bersamaan/sekaligus berapapun banyaknya form tersebut. Modul utamanya milik Eduardo A. Morcillo and Vlad Vissoultchev (pembuat Hook Menu).

Beberapa masalah manifest tersebut, diantaranya:
  1. Flickering pada frame
  2. Hilangnya mnemonic (shorcut underline), ini sangat mengganggu dalam aplikasi database.
  3. CommandButton yang ditempatkan pada frame akan memiliki border hitam disekelilingnya
  4. CommandButton dengan property Style = 1 - Graphical, tidak bisa ditheme XP
  5. OptionButton yang dtempatkan pada frame akan memiliki background hitam
Download: theBatch dan Sample UI.
READ MORE - theBatch Add-Ins, Mengatasi Beberapa Masalah Manifest Resour

Tuesday, June 12, 2012

Memasukan Gambar ke Dalam OCX - Teka-Teki VB6

Setelah teka-teki ShellContextMenu (untuk mengintegrasikan aplikasi dengan Windows Explorer), sekarang saya memiliki teka-teki sederhana yang lain, yakni mengenai cara memasukan gambar ke dalam .OCX (default VB atau third party).

Seperti yang kita ketahui, untuk membuat generator code yang baik salah satunya kita harus dapat memasukan gambar ke dalam .OCX yang kita butuhkan. Untuk .OCXnya saya menggunakan ImageList saja (bukan third party, pada dasarnya ia bisa digunakan untuk segala macam .OCX yang membutuhkan gambar).

Teka-tekinya sederhana, hanya memasukan gambar ke dalam objek ImageList, tentu Anda dapat memecahkannya. Apabila Anda menyukai teka-tekinya silakan download pada link di bawah ini:

Download: Teka-Teki Pemrograman VB6
READ MORE - Memasukan Gambar ke Dalam OCX - Teka-Teki VB6

Generator Interface Yang Dilengkapi Template, Sebuah Konsep

Mengenai generator interface yang dilengkapi template - Pada posting terdahulu saya telah menjelaskan mengenai pembuatan generator interface database yang sangat sederhana. Kelemahan utama dari generator tersebut yang ketidakmampuannya untuk diedit secara atau pada saat runtime (yaitu pada saat telah dicompile ke dalam bentuk DLL), sehingga bisa dianggap sebagai generator interface yang statis. Disini kita akan belajar mengenai cara membuat generator interface yang memiliki sifat dinamis, sehingga memiliki keleluasaan untuk diperbaiki, diedit, dipilih, dikembangkan bahasanya menjadi lebih baik, dan tentu saja akan menghasilkan tampilan yang berbeda-beda (seperti halnya mengedit CSS).

Kode dibawah masih sangat sederhana, kurang layak, perlu dikembangkan. Setelah menjadi baik maka gabungkan dengan kode yang terdapat pada posting terdahulu (tentu saja setelah disesuaikan kodenya).
Public VBInstance As VBIDE.VBE 
Public Connect As Connect

Option Explicit

Private Sub
CancelButton_Click()
Connect.Hide
End Sub

Private Sub
OKButton_Click()
OpenTextFileAndTranslate 'membuka template dan menerjemahkannya
End Sub

'//fungsi yang digunakan untuk membaca template baris demi baris
Private Function OpenTextFileAndTranslate() As String
Dim
nFileNum As Integer, sText As String
Dim
sNextLine As String, lLineCount As Long
nFileNum = FreeFile
Open
App.Path & "\template.txt" For Input As nFileNum
lLineCount = 1
Do While Not EOF(nFileNum)
Line Input #nFileNum, sNextLine
Compile sNextLine
sNextLine = sNextLine & vbCrLf
sText = sText & sNextLine
Loop
OpenTextFile = sText
Close nFileNum
End Function

'//fungsi yang digunakan untuk menterjemahkan template, sehingga bisa dianggap
'//sebagai translator/compiler code (walaupun tidak tepat). Disini kita diberi
'//kebebasan untuk mengembangkan translator menjadi lebih baik lagi, dengan
'//memberikan sedikit 'kecerdasan' kepada mesin untuk menerjemahkan kode yang
'//telah kita buat/edit. dan lain-lain. Adapun kode fungsi di bawah
'//ini masih sangat sederhana, sehingga kurang layak untuk digunakan, tetapi kita
'//telah memahami konsep/logika/garis besarnya, bukan?

Private Sub
Compile(Code As String)

Dim
ObjectOrMethod As String
Dim
strCode As String
Dim
strObject As String
Dim
strProperty As Variant
Dim
ctl As VBControl
Dim f As VBForm
Dim i As Integer

If
(Trim(Left(Code, 1)) = "/") Or (Trim(Code) = "") Then
Exit Sub
'do nothing with comments or blank line
End If

strObject = Split(Code, "=")(0)
ObjectOrMethod = Trim$(Split(Code, "=")(0))
Set f = VBInstance.SelectedVBComponent.Designer

Select Case
ObjectOrMethod
Case "Form"
'Do with Form
Case Else
Set
ctl = f.VBControls.Add(ObjectOrMethod)
End Select

strCode = Trim$(Right$(Code, Len(Code) - Len(strObject)))
strCode = Right$(strCode, Len(strCode) - 1)
strProperty = Split(strCode, ",")

For i =
LBound(strProperty) To UBound(strProperty)
Select Case ObjectOrMethod
Case "InsertOCX"
InsertOCX Trim$(Split(strProperty(i), "=")(0))
Case "Form"
With VBInstance.SelectedVBComponent
.Properties(Trim$(Split(strProperty(i), "=")(0))) = CVar((Trim$(Split(strProperty(i), "=")(1))))
End With
Case Else
With
ctl
.Properties(Trim$(Split(strProperty(i), "=")(0))) = CVar((Trim(Split(strProperty(i), "=")(1))))
End With
End Select
Next

End Sub

'//sub fungsi dari fungsi di atas, digunakan untuk menambahkan OCX third party
Public Function InsertOCX(ProgID As String) As Boolean
On Error GoTo
ErrHandler
'Add OCX
VBInstance.ActiveVBProject.AddToolboxProgID ProgID
InsertOCX = True
Exit Function
ErrHandler:
InsertOCX = False
End Function

Pada kode di atas saya menggunakan sebuah ActiveX (OCX) yang dibuat oleh Mas Gyus (Gautama Yustitia) pemilik situs http://araysoft.blogspot.com

Contoh template yang digunakan:
// -- HEADER -------------------------------------------------------------------------------------------
// -- contoh menambahkan OCX third party ke dalam ToolBox VB6
InsertOCX=ARTitleBar32.ARCompanyLine

// -- banyak yang belum diimplementasikan, atau Anda sendiri yang membuatnya dengan selera
// -- bahasa Anda sendiri, di antaranya:
// InsertDLL= menambah reference dll seperti ;Microsoft ActiveX Data Object 2.8 Library' dan lain-lain
// SpaceTop= margin atas penempatan object
// SpaceLeft= margin kiri penempatan object
// SpaceRight= margin kanan penempatan object
// SpaceBottom= margin bawah penempatan object
// SpaceBetween= kerenggangan TextBox atau label
// dan lain-lain -- silakan Anda kembangkan bahasa sendiri dengan menggunakan logika percabangan
// (branching) agar layak untuk digunakan

//------------------------------------------------------------------------------------------------------
// -- http://khoiriyyah.blogspot.com
//-- Coder: Asep Hibban
// menjelaskan mengenai cara membuat sebuah compiler GUI sederhana
// sehingga bisa dibuat sebuah template atau style yang digunakan untuk generator code
//------------------------------------------------------------------------------------------------------

// -- menambah control/object serta memodifikasi property-property yang dibutuhkan
TextBox=Width=5295,Top=660,Height=2805,Left=1440,Text=Cool a.k.a Hade Pisan
ComboBox=Text=Bagaimana?,Width=5295,Top=180,Left=1440
CommandButton=Caption=&Ok,Top=3885,Left=4260,Height=360
CommandButton=Caption=&Cancel,Top=3885,Left=5520,Height=360
CommandButton=Caption=&Update,Top=3885,Left=3000,Height=360

//PictureBox=Align=3,BorderStyle=0,BackColor=&H000000C0

// -- menambah control third party serta memodifikasi property-property yang dibutuhkan
ARTitleBar32.ARCompanyLine=CompanyName=khoiriyyah.blogspot.com,Left=-5,Width=7050,Top=3540


// --- memodifikasi property Form
Form=Width=7000,Height=4900,Caption=Data Karyawan,Name=frmKaryawan,BorderStyle=3

// --- End Template ------------------------------------------------------------------------------------

Download lampiran (source code): Generator Interface
READ MORE - Generator Interface Yang Dilengkapi Template, Sebuah Konsep

Menambahkan Object Yang Disertai Gambar - VB6 Add-Ins

Mengenai cara menambahkan object yang disertai atau membutuhkan gambar - Dalam mengenerate kode, terkadang ada object-object yang harus, membutuhkan, lebih baik disertai dengan gambar. Dalam contoh kode sekarang, object diwakili dengan satu PictureBox sedangkan untuk object-object yang lainnya (Smart Menu, object-object dari Codejock, menu vbAccelator, dll), Anda qiyaskan saja setelah disesuaikan kodenya.

Sebelum mengembangkan kode selanjutnya, ada beberapa yang harus kita pahami mengenai properties Picture. Pertama: Picture memiliki data type object, untuk mengatur propertiesnya, kita tidak bisa menggunakan kode seperti .Properties ("Picture") = LoadPicture ("C:\contoh_gambar.jpg"), ini akan menyebabkan ketidaksesuaian data type, karena penulisan .Properties ("Text") misalnya, sama dengan .Properties ("Text").Value, karena default untuk untuk .Properties adalah Value, seperti halnya kita menulis Text1 = "Contoh Text" (pada saat runtime) sama halnya dengan menulis Text1.Text = "Contoh Text" karena default properties untuk object TextBox adalah properties Text, demikian pula Label default Propertiesnya adalah Caption, dan seterusnya. Nah, untuk properties Picture (karena data typenya object) maka kita harus menuliskan .Properties ("Picture").Object = LoadPicture ("C:\contoh_gambar.jpg"). Kedua: Karena properties Picture adalah object maka kita tidak bisa menjalankan kode design time v.s desin time, mau tidak mau kita harus mengcompile terlebih dahulu project add-insnya untuk dibuat menjadi sebuah dll dan diakses secara runtime, mengapa?

Public VBInstance As VBIDE.VBE 
Public Connect As Connect

Option Explicit

Private Sub
CancelButton_Click()
Connect.Hide
End Sub

Private Sub
OKButton_Click()
Dim v As VBForm
Dim p As VBControl
Set v = VBInstance.SelectedVBComponent.Designer
Set p = v.VBControls.Add("VB.PictureBox")
With p
.Properties("AutoSize") = True
.Properties("BorderStyle") = 0 'None
Set .Properties("Picture").object = LoadPicture(App.Path & "\home_brown_48.gif")
End With
End Sub

Download: Source Code

Walaupun sangat sederhana, akan tetapi kode di atas merupakan kode yang sangat langka sekali.
READ MORE - Menambahkan Object Yang Disertai Gambar - VB6 Add-Ins

Contoh Iterasi VBControl dan VBComponent - VB6 Add-ins

Menjelaskan iterasi untuk VBControl dan VBComponent menggunakan For ... Each - Apabila kita membuat sebuah TextBox pada Form, maka secara default property Text dari TextBox tersebut akan memiliki isi berupa tulisan Text1, Text2, dan seterusnya. Kita dapat menghilangkan isi dari dari TextBox tersebut secara manual (satu persatu dihilangkan teksnya) atau menggunakan kode yang telah ditulis terdahulu. Maka pada saat design time kita dapat menggunakan kode yang ... 'just one click' dan semuanya selesai, tidak masalah berapapun jumlah TextBox atau Form yang kita miliki/buat.
Public VBInstance As VBIDE.VBE 
Public Connect As Connect

Option Explicit

Private Sub
CancelButton_Click()
Connect.Hide
End Sub

Private Sub
OKButton_Click()
ClearAllTextBoxes
'hilangkan 1 baris kode di atas, dan gunakan kode di bawah
'jika hanya ingin menghilangkan isi dari TextBox dalam satu form saja.
'ClearTextBoxes 'menghilangkan Text yang terdapat pada TextBox
End Sub

'gunakan kode di bawah, jika ingin menghilangkan isi dari TextBox
'dalam sebuah project VB6
Private Function ClearAllTextBoxes()
Dim ctl As VBComponent
Dim p As Properties
Dim i As Integer
For Each
ctl In VBInstance.ActiveVBProject.VBComponents
If ctl.Type = vbext_ct_VBForm Or ctl.Type = vbext_ct_VBMDIForm Then
ctl.DesignerWindow.SetFocus
ClearTextBoxes
End If
Next
Dim c As
VBForm
End Function

'gunakan kode di bawah jika hanya satu form selected saja.
Private Function ClearTextBoxes()
On Error Resume Next
Dim
ctr As VBIDE.VBControl
For Each ctr In VBInstance.SelectedVBComponent.Designer.VBControls
If ctr.ProgId = "VB.TextBox" Then
ctr.Properties("Text") = ""
End If
Next
End Function
Contoh di atas hanyalah contoh sederhana dan tentu saja bisa dikembangkan untuk mempermudah pembuatan aplikasi, contoh lain: MZ-Tools yang menggunakan kode iterasi di atas untuk mengetahui apakah sebuah control memiliki Access Keys (mnemonic/ShortCut Underline).
READ MORE - Contoh Iterasi VBControl dan VBComponent - VB6 Add-ins

Menutup Seluruh Windows Yang Tidak Digunakan - VB6 Add-Ins

Contoh kode untuk menutup Windows yang tidak digunakan menggunakan Add-Ins:
Public VBInstance As VBIDE.VBE 
Public Connect As Connect

Option Explicit

Private Sub
CancelButton_Click()
Connect.Hide
End Sub

Private Sub
OKButton_Click()
CloseUnusedWindows
End Sub

'kode di bawah akan menutup seluruh windows kecuali windows yang sedang aktif
Private Sub CloseUnusedWindows()
Dim v As VBComponent
For Each v In VBInstance.ActiveVBProject.VBComponents
If Not (v Is VBInstance.SelectedVBComponent) Then
v.DesignerWindow.Close
End If
Next
End Sub
READ MORE - Menutup Seluruh Windows Yang Tidak Digunakan - VB6 Add-Ins

Project Add-Ins Visual Basic 6 - Compile And Run

Pernahkah Anda mencoba kode yang mengharuskan dicompile terlebih dahulu dengan memanggil prosedur ini? tentu sering, bagaimana? sangat merepotkan sekali bukan? Nah, kode di bawah ini bisa mengatasinya:
Public VBInstance As VBIDE.VBE 
Public Connect As Connect

Option Explicit

Private Sub
CancelButton_Click()
Connect.Hide
End Sub

Private Sub
OKButton_Click()
CompileAndRun
End Sub

Private Sub
CompileAndRun()
VBInstance.VBProjects.StartProject.MakeCompiledFile
Shell VBInstance.ActiveVBProject.BuildFileName, vbNormalFocus
End Sub
Jika Anda gabungkan dengan manifest injector, maka hasilnya akan lebih baik lagi.
READ MORE - Project Add-Ins Visual Basic 6 - Compile And Run

Menambahkan Project Baru Menggunakan Add-Ins Visual Basic 6

Di bawah merupakan contoh menambahkan project baru menggunakan VB6 Addins. Adapun kode yang dibutuhkan untuk menambahkan project baru adalah VBInstance.VBProjects.Add(ProjectType), seperti pengkodean pada umumnya (menambahkan kontrol objek pada koleksi).
Public VBInstance As VBIDE.VBE 
Public Connect As Connect

Option Explicit

Private Sub
CancelButton_Click()
Connect.Hide
End Sub

Private Sub
OKButton_Click()

Dim p As
VBProject
Set p = AddNewProject(vbext_pt_ActiveXControl) 'ActiveXControl project
With p
.Name = "prjButtonControl" 'setting properties
'.dan sebagainya
End With

Set p =
AddNewProject(vbext_pt_ActiveXDll) 'ActiveXDll Project
With p
.Name = "prjClassDatabase" 'setting properties
End With
'dan sebagainya
AddNewProject vbext_pt_ActiveXExe 'ActiveXExe project
AddNewProject vbext_pt_StandardExe 'Standard Exe Project
'dan lain-lain
End Sub

'fungsi untuk menambahkan project baru
Private Function AddNewProject(pType As vbext_ProjectType) As VBProject
Set AddNewProject = VBInstance.VBProjects.Add(pType)
End Function
READ MORE - Menambahkan Project Baru Menggunakan Add-Ins Visual Basic 6

Memasukan Sebuah Object ke dalam Container - Addins VB6

Di bawah ini merupakan contoh kode untuk memasukan sebuah objek ke dalam objek kontainer melalui Addins, dalam hal ini objek diwakili oleh satu CommandButton dan kontainer diwakili oleh satu objek Frame.
Public VBInstance As VBIDE.VBE 
Public Connect As Connect

Option Explicit

Private Sub
CancelButton_Click()
Connect.Hide
End Sub

Private Sub
OKButton_Click()
ObjectInContainerSample
End Sub

Private Sub
ObjectInContainerSample()
'menambahkan PictureBox
Dim f As VBForm
Dim p As VBControl
Dim b As VBControl
Set f = VBInstance.SelectedVBComponent.Designer
Set p = f.VBControls.Add("Frame")
With p
.Properties("Height") = 2000
.Properties("Width") = 4000
.Properties("Left") = 500
.Properties("Top") = 500
.Properties("Caption") = "Data Siswa"
'.properties dan lain-lain
End With
'menambahkan CommandButton
Set b = f.VBControls.Add("CommandButton")
Set b.Container = p 'memasukan sebuah objek ke dalam kontainer
With b
.Properties("Left") = 500
.Properties("Top") = 500
.Properties("Caption") = "&Simpan"
'.properties dan lain-lain
End With
End Sub
READ MORE - Memasukan Sebuah Object ke dalam Container - Addins VB6

Merubah Nama (Rename) Active VB Project - VB6 Add-Ins

Berikut merupakan kode untuk merubah nama atau rename Active VB Project: VBInstance.ActiveVBProject.Name = "prjDatabase" apabila Active VB Project ingin dirubah namanya menjadi 'prjDatabase'.
Public VBInstance As VBIDE.VBE 
Public Connect As Connect

Option Explicit

Private Sub
CancelButton_Click()
Connect.Hide
End Sub

Private Sub
OKButton_Click()
RenameActiveProject "prjDatabase"
End Sub

Private Sub
RenameActiveProject(s As String)
VBInstance.ActiveVBProject.Name = s
End Sub
READ MORE - Merubah Nama (Rename) Active VB Project - VB6 Add-Ins

Contoh Kode Menghilangkan Item VBComponent - VB6 Add-Ins

Berikut merupakan contoh kode untuk menghilangkan salah satu VBComponent (Form, Module, UserControl, Class, dll) berdasarkan namanya:
Public VBInstance As VBIDE.VBE 
Public Connect As Connect

Option Explicit

Private Sub
CancelButton_Click()
Connect.Hide
End Sub

Private Sub
OKButton_Click()
RemoveVBComponent "Form1"
End Sub

Private Sub
RemoveVBComponent(s As String)
Dim f As VBComponent
Set f = VBInstance.ActiveVBProject.VBComponents.Item("Form1")
VBInstance.ActiveVBProject.VBComponents.Remove f
End Sub
READ MORE - Contoh Kode Menghilangkan Item VBComponent - VB6 Add-Ins

Menghilangkan Reference DLL Yang Tidak Digunakan - VB6 Add-Ins

Di bawah ini merupakan kode untuk menghilangkan reference yang tidak digunakan dalam sebuah project. Untuk menggunakannya, buatlah project Addins, selanjutnya gantilah seluruh kode yang terdapat pada frmAddins dengan kode di bawah:
Public VBInstance As VBIDE.VBE 
Public Connect As Connect

Option Explicit

Private Sub
CancelButton_Click()
Connect.Hide
End Sub

Private Sub
OKButton_Click()
CleanUpUnUsedReferences
End Sub

Private Function
CleanUpUnUsedReferences()
Dim c, my, mn
'On Error GoTo ErrHandler
Dim ref As VBIDE.Reference
Dim refPath As String
For Each
ref In VBInstance.ActiveVBProject.References
refPath = ref.FullPath
c = ref.Guid: my = ref.Major: mn = ref.Minor
If ref.BuiltIn <> True Then
With
VBInstance.ActiveVBProject.References
.Remove ref 'hapus reference
' Shell "regsvr32.exe " & Chr(34) & refPath & Chr(34) & " /u /s"
VBInstance.ActiveVBProject.MakeCompiledFile 'compile, jika error kembalikan reference
End With
End If
Next
Exit Function
ErrHandler:
VBInstance.ActiveVBProject.References.AddFromGuid c, my, mn 'kembalikan reference
Err.Clear
Resume Next
End Function
READ MORE - Menghilangkan Reference DLL Yang Tidak Digunakan - VB6 Add-Ins

Mengganti Seluruh Kode Yang Terdapat Pada Module - VB6 Add-Ins

Di bawah merupakan kode untuk mengganti seluruh kode yang terdapat pada CodeModule VBComponent (Form, Module, Class, dll) melalui Add-Ins.
Private Function SetCodeModule(s As String, c As String) As Boolean 
Dim
cd As CodeModule
Set cd = VBInstance.ActiveVBProject.VBComponents(s).CodeModule
cd.DeleteLines 1, cd.CountOfLines
cd.AddFromString c
End Function
READ MORE - Mengganti Seluruh Kode Yang Terdapat Pada Module - VB6 Add-Ins

Di manakakah letak procedure Sub Main? - VB6 Add-Ins

Karena letak prosedure Sub Main() bisa di module mana saja, maka untuk mengetahuinya melalui project VB6 Addin, maka kita memerlukan kode di bawah ini:
Private Function GetSubMain() As String 
Dim v As
VBComponent
Dim l As Long, s As String
For Each v In
VBInstance.ActiveVBProject.VBComponents
With v
If
.Type = vbext_ct_StdModule Then
l =
v.CodeModule.CountOfLines
If l > 0 Then
s =
v.CodeModule.Lines(1, l)
If InStr(1, s, "sub main()", vbTextCompare) > 0 Then
GetSubMain = v.Name
Exit Function
End If
End If
End If
End With
Next
End Function
READ MORE - Di manakakah letak procedure Sub Main? - VB6 Add-Ins

Memeriksa Apakah Sebuah Project Telah Disimpan - VB6 Add-Ins

Melalui VB6 Add-Ins kita dapat memeriksa apakah sebuah project telah disimpan atau belum, berikut fungsi untuk memeriksa apakah project telah disimpan:
Private Function IsProjectSaved() As Boolean 
IsProjectSaved = Not (VBInstance.ActiveVBProject.Filename = "")
End Function
READ MORE - Memeriksa Apakah Sebuah Project Telah Disimpan - VB6 Add-Ins

Mendapat Seluruh Kode Yang Terdapat Pada CodeModule - Add-Ins

Di bawah merupakan fungsi untuk memperoleh seluruh kode dari baris pertama hingga baris terakhir - Bermanfaat terutama untuk meng-crop kode-kode sample dan memasukannya ke dalam snippet database.
Public VBInstance As VBIDE.VBE 
Public Connect As Connect

Option Explicit

Private Sub
CancelButton_Click()
Connect.Hide
End Sub

Private Sub
OKButton_Click()
MsgBox GetCodeModule("Form1")
End Sub

Private Function
GetCodeModule(s As String) As String
Dim
cd As CodeModule
Set cd = VBInstance.ActiveVBProject.VBComponents(s).CodeModule
GetCodeModule = cd.Lines(1, cd.CountOfLines)
End Function
READ MORE - Mendapat Seluruh Kode Yang Terdapat Pada CodeModule - Add-Ins