Archive for February, 2007

Aplikasi dengan style Xp menggunakan VB6

February 8, 2007

Biasanya membuat program di VB6 agak membosankan, karena tampilannya tidak terlalu bagus. Tetapi kini dengan menambahkan kode berikut tampilannya menjadi sesuai dengan skin Xp saat dijalankan di Xp.

Private Type tagInitCommonControlsEx
    lngSize As Long
    lngICC As Long
End Type
Private Declare Function InitCommonControlsEx Lib "comctl32.dll" _
(iccex As tagInitCommonControlsEx) As Boolean
Private Const ICC_USEREX_CLASSES = &H200
Public Sub WriteManifest()
    On Error Resume Next
    Dim F As String
    F = App.Path & "\" & App.EXEName & ".exe.manifest"
    If Dir(F) = "" Then
        Open F For Output As #3
        Print #3, "<?xml version=" & Chr(&H22) & "1.0" & _
        Chr(&H22) & " encoding=" & Chr(&H22) & "UTF-8" & _
        Chr(&H22) & " standalone=" & Chr(&H22) & "yes" & _
        Chr(&H22) & " ?>"
        Print #3, "<assembly xmlns=" & Chr(&H22) & _
        "urn:schemas-microsoft-com:asm.v1" & Chr(&H22) & _
        " manifestVersion=" & Chr(&H22) & "1.0" & Chr(&H22) & ">"
        Print #3, vbTab & "<assemblyIdentity"
        Print #3, vbTab & vbTab & "version=" & Chr(&H22) & _
        "1.0.0.0" & Chr(&H22)
        Print #3, vbTab & vbTab & "processorArchitecture=" & _
        Chr(&H22) & "X86" & Chr(&H22)
        Print #3, vbTab & vbTab & "name=" & Chr(&H22) & _
        App.CompanyName & "." & App.ProductName & "." & _
        App.EXEName & Chr(&H22)
        Print #3, vbTab & vbTab & "type=" & Chr(&H22) & _
        "win32" & Chr(&H22) & " />"
        Print #3, vbTab & "<description>" & App.Comments & _
        "</description>"
        Print #3, vbTab & "<dependency>"
        Print #3, vbTab & "<dependentAssembly>"
        Print #3, vbTab & "<assemblyIdentity"
        Print #3, vbTab & vbTab & "type=" & Chr(&H22) & _
        "win32" & Chr(&H22)
        Print #3, vbTab & vbTab & "name=" & Chr(&H22) & _
        "Microsoft.Windows.Common-Controls" & Chr(&H22)
        Print #3, vbTab & vbTab & "version=" & Chr(&H22) _
        & "6.0.0.0" & Chr(&H22)
        Print #3, vbTab & vbTab & "processorArchitecture=" & _
        Chr(&H22) & "X86" & Chr(&H22)
        Print #3, vbTab & vbTab & "publicKeyToken=" & _
        Chr(&H22) & "6595b64144ccf1df" & Chr(&H22)
        Print #3, vbTab & vbTab & "language=" & Chr(&H22) & _
        "*" & Chr(&H22) & " />"
        Print #3, vbTab & "</dependentAssembly>"
        Print #3, vbTab & "</dependency>"
        Print #3, "</assembly>"
        Print #3, ""
        Close #3
        Shell App.Path & "\" & App.EXEName & ".exe", vbNormalFocus
        DoEvents
        End
    End If
    Dim Ticce As tagInitCommonControlsEx
    Ticce.lngSize = LenB(iccex)
    Ticce.lngICC = ICC_USEREX_CLASSES
    InitCommonControlsEx Ticce
    On Error GoTo 0
End Sub

Save code diatas pada file xp.bas. Tambahkan pada project yang ingin menggunakan style Xp. Kemudian tambahkan kode berikut dalam kode form utama.

Private Sub Form_Initialize()
    WriteManifest
End Sub

Agar tampilan form yang diedit juga bertema sesuai dengan tampilan saat run time maka simpan kodeĀ  di bawah ini pada folder instalasi VB6 anda, misal: C:\Program Files\Microsoft Visual Studio\VB98, sebagai file vb6.exe.manifest

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    type="win32"
    name="Microsoft.Windows.Editeur"
    processorArchitecture="X86"
    version="4.4.0.0"
/>
<description>Microsoft Visual Basic 6.0</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            language="*"
            processorArchitecture="X86"
            version="6.0.0.0"
            publicKeyToken="6595b64144ccf1df"
        />
    </dependentAssembly>
</dependency>
</assembly>

Salam.