Wednesday, April 17, 2013

VB6 Code - Membuat Cue Banner atau Placeholder Text

Apa yang dimaksud dengan cue banner atau placeholder text atau sebagian menyebutnya dengan watermark text itu? untuk memahaminya perhatikan gambar di bawah ini:

VB6 Cue Banner Placeholder Text Watermark Text
VB6 Cue Banner Placeholder Text Watermark Text

Terlihat pada gambar di atas beberapa objek (ComboBox dan beberapa TextBox) yang memiliki tulisan kurang jelas dengan warna keabu-abuan. Nah, tulisan yang kurang jelas itulah yang dinamakan dengan cue banner/placeholder text/watermark text. Tulisan itu hanya akan muncul apabila objek-objek tersebut memiliki property Text = "" serta dalam keadaan lost focus.

Berikut beberapa bagian kode darinya:

Option Explicit

Private Declare Function GetComboBoxInfo Lib "user32" (ByVal hwndCombo As Long, CBInfo As COMBOBOXINFO) As Long
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 Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Private Type COMBOBOXINFO
cbSize As Long
rcItem As RECT
rcButton As RECT
stateButton As Long
hwndCombo As Long
hwndEdit As Long
hwndList As Long
End Type

Private Const ECM_FIRST As Long = &H1500
Private Const EM_SETCUEBANNER As Long = (ECM_FIRST + 1)

Public Sub SetCueBanner(obj As Object, str As String)
Dim s As String
Dim c As COMBOBOXINFO
If TypeOf obj Is ComboBox Then
c.cbSize = Len(c)
Call GetComboBoxInfo(obj.hwnd, c)
s = StrConv(str, vbUnicode)
Call SendMessage(c.hwndEdit, EM_SETCUEBANNER, 0&, ByVal s)
Else 'TextBox
s = StrConv(str, vbUnicode)
Call SendMessage(obj.hwnd, EM_SETCUEBANNER, 0&, ByVal s)
End If
End Sub

Catatan sangat penting:

  1. Cue banner tidak bisa berjalan pada WinXP yang terinstall left to rigth language seperti arabic dsb. Hal tersebut merupakan bug dari Microsoft sendiri, dan telah diperbaiki pada OS selanjutnya.
  2. Cue banner hanya akan berjalan setelah dicompile serta diberi manifest (XP Style)

Lebih lengkap mengenai pembuatan cue banner/placeholder text/watermark text bisa Anda download pada tautan di bawah ini:

Download: VB6_CueBanner

READ MORE - VB6 Code - Membuat Cue Banner atau Placeholder Text

Sunday, March 31, 2013

Menghilangkan Ritual Mode Compatibility - VB6 Tips

Sebuah aplikasi yang dibuat dengan VB6 seringkali tidak kompatibel dengan OS yang berada di atas XP, akhirnya user harus melakukan kegiatan ritual rutinan pada saat pertama kali menjalankan aplikasi exe tersebut. Adapun rutinan yang dimaksud adalah sebagai berikut:

  1. Klik kanan di icon exe program tersebut.
  2. Pilih Properties
  3. Kemudian klik pada tab Compatibility
  4. Anda dapat memilih atau bisa juga tidak di tombol Change settings for all users
  5. Berikan tanpa centang di Run this program in compatibility mode for
  6. Di dalam menu drop-down pilih sistem operasi yang sesuai
  7. Klik tombol Apply dan OK

Nah, agar user tidak direpotkan dengan kegiatan di atas, lebih baik Anda sisipkan saja beberapa script untuk memasukan beberapa nilai pada registry, di bawah adalah contohnya (InnoSetup Installer):

Scrip Inno sebelumnya....
[Registry]
Root: HKCU; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; ValueType: String; ValueName:"{app}\AplikasiAnda.exe"; ValueData: "WINXP"; Flags: Uninsdeletekey
Root: HKLM; Subkey: "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; ValueType: String; ValueName:"{app}\AplikasiAnda.exe"; ValueData: "WINXP"; Flags: Uninsdeletekey
Scrip Inno sesudahnya....
Demikian, semoga bermanfaat.
READ MORE - Menghilangkan Ritual Mode Compatibility - VB6 Tips

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

Friday, January 25, 2013

Edit Class 1.0 - Mempermudah Membuat Posting di Blogspot

Mengenai Edit Class versi 1.0 sebuah sofware editor sederhana yang saya buat untuk mempermudah membuat postingan di blogspot.

Apakah Edit Class 1.0 itu?

Edit class 1.0 merupakan sebuah software editor sederhana untuk mempermudah membuat posting di blogspot. Edit class bukan HTML editor, dia hanya lebih spesifik dari itu. Karena tujuannya yang sederhana, Edit Class tidak memperlakukan HTML sebagai objek yang memiliki properties, atribut, dsb, tetapi ia lebih memperlakukan HTML sebagai string, jadi dalam kenyataannya ia hanya memanipulasi string. File yang dihasilkan berektensi .blr [pada kenyataannya ia hanya file teks biasa yang bisa Anda buka melalui NotePad].

Edit Class 1.0
Gambar: Edit Class 1.0 - Sofware Editor Sederhana

Sebelum Menggunakan Edit Class 1.0

Sebelum menggunakan ada hal yang harus diperhatikan, bahwa Edit Class terdiri dari beberapa bagian, di antaranya yang paling terpenting adalah: SideBar yang tediri dari dua bagian: Daftar HTML dan Daftar Macro, MainEdit yang terdiri dari: BodyPost, Preview, CustomCSS, EditHTML, EditMacros.

 Daftar HTML

Daftar HTML berguna untuk membuat daftar tags HTML yang dibutuhkan. Untuk menambah daftar HTML yang dibutuhkan, Anda dapat membuka file yang terdapat pada Program Files\Code\HTMLTag.txt dan mengeditnya menggunakan Notepad. Adapun format kodenya adalah sebagai berikut:

{Name!+StartTags|EndTags}
Contoh:
{Underline!+<U>|</U>}

Daftar Macro

Daftar Macro macro dibuat berdasarkan daftar HTML di atas, untuk menambah daftar Macro yang dibutuhkan, Anda dapat membuka file yang terdapat pada Program Files\Code\Macros.txt. Macro digunakan untuk meng-eksekusi (menjalankan) rangkaian perintah daftar HTML di atas secara berurutan dari kiri ke kanan. Adapun format kodenya adalah sebagai berikut:

{MacroName:HTMLName,HTMLName, etc.}
Contoh:
{italic+underline:italic,Underline}

Preview

Preview digunakan untuk melihat hasil tulisan Anda yang dibuat pada Tab Body Post.

Custom CSS

Custom CSS merupakan style CSS yang yang akan mempengaruhi preview. Custom CSS digunakan sebagai simulasi CSS yang terdapat pada blog agar style tulisan offline yang Anda buat dengan Edit Class menyerupai style tulisan online.

Daftar Built-In Functions

Pada versi 1.0 ini, Edit Class memiliki beberapa fungsi built-in yang dapat ditambahkan pada file yang terdapat di Program Files\Code\HTMLTag.txt. Adapun format kode untuk memanggil fungsi-fungsi built-in adalah sebagai berikut:
{Name!+Built-In}
Contoh:
{Encode!+EncodeHTML}
Adapun fungsi-fungsi built-in tersebut, yaitu:
  1. DecodeHTML
  2. EncodeHTML
  3. RemoveHTML
  4. MakeTable
  5. FormatVB6Code
  6. OrdinerList
  7. UnOrdinerList
  8. InsertLink
  9. InsertImage

Cara menggunakan Edit Class 1.0

  1. Buatlah tulisan pada Body Post
  2. Pilih teks yang akan dimodifikasi
  3. DoubleKlik HTML atau Macro yang dibutuhkan
  4. Setelah, selesai kopi tulisan ke dalam posting blogspot milik Anda.
Download: EditClass1.0
READ MORE - Edit Class 1.0 - Mempermudah Membuat Posting di Blogspot