Friday, June 8, 2012

Effect Bayangan (Shadow) Pada Form Menggunakan VB6

Mengenai cara menambahkan effect bayangan (shadow effect) pada form - effect bayangan (shadow effect) ini akan terlihat bagus terutama pada form tanpa border (property BorderStyle = 0 - none). Bagaimana kode mengenai shadow effect ini?
Option Explicit 

Private Declare Function
GetClassLong Lib "user32" Alias "GetClassLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function
SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const
CS_DROPSHADOW As Long = &H20000
Private Const GCL_STYLE As Long = -26

Private Sub
DropShadow(ByVal hWnd As Long)
Call SetClassLong(hWnd, GCL_STYLE, GetClassLong(hWnd, GCL_STYLE) Or CS_DROPSHADOW)
End Sub

Private Sub
Form_Load()
DropShadow Me.hWnd
End Sub

Catatan: Effect bayangan (shadow effect) akan bekerja pada saat Show shadow under menus dicheck (default). Show shadow under menus terdapat pada start >> Settings >> Control Panel >> System >> Advanced >> Settings >> Show shadow under menus.
READ MORE - Effect Bayangan (Shadow) Pada Form Menggunakan VB6

Bagaimana Memperoleh Nama Object Dalam Startup Object - VB6

Menjelaskan mengenai cara memperoleh (return/get) object atau nama object dalam sebuah project Visual Basic 6 menggunakan Add-Ins - Jika kita mengetikan kode seperti disamping: VBInstance.ActiveVBProject.VBComponents.StartUpObject. (dengan menambahkan titik di depan), VB6 tidak akan menampilkan list method atau property otomatisnya, padahal StartUpObject ini memiliki beberapa property, diantaranya adalah property .Name untuk memperoleh nama object, seperti contoh di bawah ini:
Public VBInstance As VBIDE.VBE 
Public Connect As Connect

Option Explicit

Private Sub
CancelButton_Click()
Connect.Hide
End Sub

Private Sub
OKButton_Click()
MsgBox GetStartUpName
End Sub

Private Function
GetStartUpName() As String
GetStartUpName = VBInstance.ActiveVBProject.VBComponents.StartUpObject.Name
End Function
Sepertinya pembahasan Startup Object ini selesai, dari sini tentu kita dapat membuat tools-tools sederhana dan bermanfaat, misalnya Generator XP Style, yakni dengan memasukan resource file dan sedikit kode. Akan tetapi sebelumnya, ia (Generator XP Style) harus sedikit diberi 'kecerdasan buatan' agar dapat memutuskan, manakah yang menjadi Startup Object, apakah harus membuat Sub Main atau menginsert kode langsung pada Form? dan lain sebagainya.
READ MORE - Bagaimana Memperoleh Nama Object Dalam Startup Object - VB6

Jika Bukan Sub Main Untuk Startup Object? - VB6 Add-Ins

Mengenai cara mensetting Startup object yang bukan Sub Main (maksudnya Form) dalam project yang dibuat dengan Visual Basic 6 Add-Ins - Setelah membahas mengenai Startup Object dengan Sub Main, sekarang permasalahannya bagaimana jika bukan Sub Main tetapi Form tertentu yang akan dijadikan Startup Object, misalnya 'frmMain', 'frmSplashScreen', dan sebagainya? Perhatikan dalam tulisan Object Browser (dengan menekan F2) tertulis, seperti di bawah: Property StartUpObject As Variant Member of VBIDE.VBComponents Returns a Variant containing the startup component for the project. Dengan demikian kita tidak bisa mengassign value seperti kode di bawah: VBInstance.ActiveVBProject.VBComponents.StartUpObject = "frmMain" dengan asumsi ingin menjadikan frmMain sebagai Startup Object. Kode tersebut akan men-generate error. Maka solusinya seperti 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()
SetStartUpObject "frmMain"
End Sub

Private Function
SetStartUpObject(c As String) As Boolean
Dim v As
VBComponent
Set v = VBInstance.ActiveVBProject.VBComponents.Item(c)
VBInstance.ActiveVBProject.VBComponents.StartUpObject = v
End Function
Kode di atas hanya kode sederhana saja, tentu saja dalam kenyataannya ia telah dilengkapi dengan handle error yang memadai serta check beberapa kondisi, misalnya Check apakah frmMain ada? dan sebagainya.
READ MORE - Jika Bukan Sub Main Untuk Startup Object? - VB6 Add-Ins

Apakah Project Telah Dirubah, Cara Mengetahuinya? VB6-AddIns

Public VBInstance As VBIDE.VBE 
Public Connect As Connect

Option Explicit

Private Sub
CancelButton_Click()
Connect.Hide
End Sub

Private Sub
OKButton_Click()
If IsDirty Then
MsgBox "Project telah disimpan"
Else
MsgBox "Project belum disimpan"
End If
End Sub

'untuk mengetahui apakah project telah dirubah/diedit
Public Function IsDirty() As Boolean
IsDirty = (VBInstance.ActiveVBProject.IsDirty = True)
End Function
READ MORE - Apakah Project Telah Dirubah, Cara Mengetahuinya? VB6-AddIns