Tuesday, May 29, 2012

Beberapa masalah penggunaan file manifest dan Penyelesaiannya

Penggunaan file manifest untuk meng- Style XP-kan objek-objek Visual Basic 6.0 ternyata memiliki bebearapa masalah, diantaranya:
  1. Hilangnya shortcut mnemonic
  2. OptionButton dan CheckBox yang disimpan dalam kontainer Frame berubah berwarna hitam mengakibatkan Caption dari dua objek tersebut tidak dapat terbaca.
  3. CommandButton yang property style-nya diset pada mode 1-Graphical tidak mau berubah menjadi Style XP.
  4. MSCOMCTL.OCX TreeView, ToolBar, dsb tidak mau berubah menjadi Style XP.
Penyelesaian:
  • Masalah ke-1: Simpan kode di bawah ini pada module, selanjutnya panggil pada setiap Event Form Load.
    Option Explicit 

    Private Const
    WM_CHANGEUISTATE As Long = &H127
    Private Const UISF_HIDEFOCUS As Integer = &H1
    Private Const UISF_HIDEACCEL As Integer = &H2
    Private Const UIS_CLEAR As Integer = &H2

    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

    Public Sub
    ShowMnemonic(frm As Form)
    Dim uiState As Long
    uiState = MakeLong(UIS_CLEAR, UISF_HIDEFOCUS Or UISF_HIDEACCEL)
    SendMessage frm.hwnd, WM_CHANGEUISTATE, uiState, ByVal 0
    End Sub

    Private Function
    MakeLong(ByVal wLow As Integer, ByVal wHigh As Integer) As Long
    MakeLong = wHigh * &H10000 + wLow
    End Function
  • Masalah ke-2: Jangan tempatkan OptionButton dan CheckBox secara langsung di atas Frame, tetapi simpanlah kedua objek tersebut di atas PictureBox, selanjutnya pindahkan PictureBox ini ke dalam Frame.
  • Masalah ke-3: Mengenai permasalah ini Anda dapat mengunjugi situs Edanmo (Eduardo A. Morcillo).
  • Masalah ke-4: Sudah diselesaikan disini.

READ MORE - Beberapa masalah penggunaan file manifest dan Penyelesaiannya

Menampilkan Dialog Modal Ala Office - Visual Basic 6.0

Yang dimaksud mirip office disini bukan style-nya, akan tetapi cara menampilkan form dialog secara modal. Sebenarnya apa perbedaan dari aplikasi-aplikasi yang sering kita buat dengan office dalam hal menampilkan dialog secara modal? nah, marilah kita praktekan saja ....

Pertama: buka ms office.
Kedua: buka sembarang form dialog (misalnya form options)
Ketiga: klik office main form (tampilan tempat kita menulis)

Apa yang terjadi? ... tidak ada kedipan sama sekali pada options form, dan sepertinya lebih baik dan lebih tampak profesional (dalam hal menampilkan dialog form).
sekarang coba bandingkan dengan kode di bawah ini:
Buatlah 2 Form, Form1 dan Form2, selanjutnya tempatkan kode di bawah ini pada Form1.
Private Sub Command1_Click() 
Form2.Show vbModal, Me
End Sub

Selanjutnya klik Form1, apa yang terjadi? bandingkan dengan dialog options office yang di atas.
Mengapa dialog office seperti demikian? ada beberapa kemungkinan:

Pertama: dialog-dialog yang terdapat pada office bukanlah ChildForm.
Kedua: office menggunakan form dummy sebagai OwnerForm.

Jika aplikasi-aplikasi yang Anda buat ingin seperti di atas, maka cobalah sampel kode di bawah ini:
Buatlah 3 form, Form1, Form2, Form3
Option Explicit 

'Kode ini disimpan pada form1
Private Sub Command1_Click()
'tampilkan form2 dengan menggunakan form dummy yakni Form3
'disini form2 tidak akan berkedip walaupun anda klik Form1
Form2.Show vbModal, Form3 'OwnerForm
End Sub




READ MORE - Menampilkan Dialog Modal Ala Office - Visual Basic 6.0

VB6.0 - Set Mozilla Firefox & IE Default Home Site Via Code

Setelah berhasil mendefaultkan Google Chrome home page/site, maka sekarang kita akan mendefaultkan 2 browser lainnya, yaitu Internet Explorer dan Mozilla Firefox. Bagaimanakah caranya? Untuk Internet Explorer maka yang perlu kita lakukan adalah sedikit meng-utak-atik registry. Disini kita akan menggunakan cara akses registry yang mudah dengan menggunakan komponen jadi milik Microsoft yaitu "Microsoft Script Host Object Model" atau nama ocx-nya WSHOM.OCX seperti yang telah dibahas pada artikel yang lain. Adapun implementasi kodenya:
Option Explicit   

'Prosedure fungsi ini simpan di module
Public Sub SetIEHomePage(URL As String)
Dim wsh As New WshShell
wsh.RegWrite "HKCU" & "\Software\Microsoft\Internet Explorer\Main\Start Page", URL
Set wsh = Nothing
End Sub

'Cara menggukannya fungsi di atas
Private Sub Command1_Click()
Call SetIEHomePage("http://khoiriyyah.blogspot.com")
End Sub

Sedangkan untuk Mozilla Firefox hampir sama dengan Google Chrome yaitu dengan cara merubah beberapa jajar kode yang terdapat pada file tertentu. Adapun implementasi kodenya:
Option Explicit 

Public Sub
SetFirefoxHomepage(URL As String)

Dim
strPath As String, strProfile As String
Dim
strContent As String, strReplace As String
Dim
regex As RegExp

strPath = Environ("APPDATA")
strPath = strPath & "\Mozilla\Firefox\Profiles\"
strProfile = Dir(strPath & "*.default", vbDirectory)

If
Len(strProfile) Then
strPath = strPath & strProfile & "\prefs.js"
strReplace = "user_pref(""browser.startup.homepage"", """ & URL & """);"

strContent = fGetFileContents(strPath)
Set regex = New RegExp

If
InStr(1, strContent, Chr(34) & "browser.startup.homepage" & Chr(34)) = 0 Then
strContent = strContent & vbCrLf & "user_pref(""browser.startup.homepage"", """ & URL & """);"
sPutStringToFile strContent, strPath
Exit Sub
ElseIf
InStr(1, strContent, strReplace) Then
Exit Sub
End If

regex.Pattern = "user_pref\(""browser.startup.homepage"",\s""(.*)""\);"

strContent = regex.Replace(strContent, strReplace)
sPutStringToFile strContent, strPath

End If

End Sub

Public Function
fGetFileContents(strPath As String) As String
Dim
hFile As Integer
Dim
strFileContent As String


If
Len(Dir(strPath)) = 0 Then Exit Function

On Error GoTo
ErrGetFile
hFile = FreeFile

Open
strPath For Binary As #hFile
strFileContent = Space(LOF(hFile))
Get #hFile, , strFileContent
Close #hFile

fGetFileContents = strFileContent
Exit Function

ErrGetFile:

Close
MsgBox Err.Description, vbCritical, "GetFileContents"

End Function

Public Sub sPutStringToFile(strContent As String, strPath As String)
Dim hFile As Integer

'If file exists delete it.
On Error Resume Next
Kill
strPath
On Error GoTo ErrPutString

'Write file
hFile = FreeFile
Open
strPath For Binary As #hFile
Put #hFile, , strContent
Close #hFile

Exit Sub

ErrPutString:

Close #hFile
MsgBox Err.Description, vbCritical, "PutStringToFile"

End Sub

Apa kegunaan/manfaat mendefaultkan home page/site 3 browser besar di atas? Insya Allah dalam pertemuan lain kita akan membahasnya.
READ MORE - VB6.0 - Set Mozilla Firefox & IE Default Home Site Via Code

Menampilkan Informasi User Yang Sedang Login

Dalam pembuatan aplikasi database, sangatlah penting untuk mengetahui informasi user yang sedang atau telah login, baik mengenai ID, UserName, tanggal login dan lain sebagainya. Bagaimana implementasinya dalam kode?

Di bawah ini merupakan contoh sederhana dalam mengimplementasikan informasi user yang sedang login.

[Download Project Menampilkan Informasi User Yang Sedang Login]
READ MORE - Menampilkan Informasi User Yang Sedang Login