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