Membuat Custom Event Untuk MouseWheel

14 May

From:    “Sofyan Efendi” <sofyan@madinah.cc>
Date:    Thu, 24 Aug 2006 08:36:58 +0700

Alhamdulillah, selesai sudah pembahasan sebagian besar event pada Microsoft Access. Sekarang marilah kita belajar cara membuat custom event, misalnya untuk penggunaan MouseWheel.

Event untuk MouseWheel sebenarnya sudah disediakan oleh Microsoft Access, namun ia tidak dapat meng-cancel penggunaan MouseWheel. Karena itu, kita harus membuat custom event sendiri untuk meng-cancel penggunaan MouseWheel oleh user. Silahkan ikuti langkah-langkah dibawah ini:

1. Copylah file Northwind.mdb menjadi file lain, kemudian bukalah file hasil copy-an tersebut.

2. Buatlah sebuah module baru. Tambahkan ke dalamnya procedure dibawah ini:

Option Compare Database
Option Explicit

Declare Function SetWindowLong Lib “user32” Alias “SetWindowLongA” _
(ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib “user32” Alias “CallWindowProcA” _
(ByVal lpPrevWndFunc As Long, _
ByVal hwnd As Long, _
ByVal msg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Public Const GWL_WNDPROC = -4
Public Const WM_MouseWheel = &H20A
Public lpPrevWndProc As Long
Public CMouse As CMouseWheel

Public Function WindowProc(ByVal hwnd As Long, _
ByVal uMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Select Case uMsg
Case WM_MouseWheel
CMouse.FireMouseWhe el
If CMouse.MouseWheelCa ncel = False Then
WindowProc = CallWindowProc( lpPrevWndProc, hwnd, uMsg, wParam, lParam)
End If
Case Else
WindowProc = CallWindowProc( lpPrevWndProc, hwnd, uMsg, wParam, lParam)
End Select
End Function

3. Save module diatas dengan nama: basSubClassWindow.

4. Klik menu Insert -> Class Module. Tambahkan kedalamnya procedue dibawah ini:

Option Compare Database
Option Explicit

Private frm As Access.Form
Private intCancel As Integer
Public Event MouseWheel(Cancel As Integer)

Public Property Set Form(frmIn As Access.Form)
Set frm = frmIn
End Property

Public Property Get MouseWheelCancel( ) As Integer
MouseWheelCancel = intCancel
End Property

Public Sub SubClassHookForm( )
lpPrevWndProc = SetWindowLong( frm.hwnd, GWL_WNDPROC, _
AddressOf WindowProc)
Set CMouse = Me
End Sub

Public Sub SubClassUnHookForm( )
Call SetWindowLong( frm.hwnd, GWL_WNDPROC, lpPrevWndProc)
End Sub

Public Sub FireMouseWheel( )
RaiseEvent MouseWheel(intCance l)
End Sub

5. Save class module diatas dengan nama: CMouseWheel.

6. Pilih object form, lalu masuk ke design view “Customers”.

7. Tambahkan procedure dibawah ini ke dalam class module form tersebut.

Option Compare Database
Option Explicit

Private WithEvents clsMouseWheel As CMouseWheel

Private Sub Form_Load()
Set clsMouseWheel = New CMouseWheel
Set clsMouseWheel. Form = Me
clsMouseWheel. SubClassHookForm
End Sub

Private Sub Form_Close()
clsMouseWheel. SubClassUnHookFo rm
Set clsMouseWheel. Form = Nothing
Set clsMouseWheel = Nothing
End Sub

Private Sub clsMouseWheel_ MouseWheel( Cancel As Integer)
‘Inilah custom event untuk MouseWheel
MsgBox “Anda tidak boleh menggunakan scroll mouse pada form ini.”
Cancel = True
End Sub

8. Save seluruh object, lalu keluarlah dari Microsoft Access, kemudian masuk kembali.

9. Jangan membuka VBA, dan bukalah form “Customers”. Putarlah scroll mouse, maka akan muncul message box sbb: “Anda tidak boleh menggunakan scroll mouse pada form ini.”

Perhatian! Penggunaan MouseWheel sebaiknya menggunakan dll external, sebagaimana yang sudah di sampaikan oleh Mas Aksan, dan juga Mas Rosyid sudah mengupload dll MouseWheel ini ke folder files belajar-access. Cara ini hanya cocok digunakan untuk aplikasi menggunakan Microsoft Access Runtime ataupun penggunaan database yang object VBA nya telah di lock. Karena jika Anda telah masuk ke VBA, lalu load event ini, maka Microsoft Access akan hang. Karena itulah, sebelum menggunakan event ini, Anda harus keluar dahulu dari Microsoft Access, lalu masuk kembali (lihat langkah no.8 diatas). Namun jika Anda belum masuk ke VBA, maka tidak perlu keluar dahulu dari Microsoft Access.

Wassalaamu’alaikum Warahmatullahi Wabarakatuh,
Sofyan Efendi
– AccessWeb <http://www35.websamba.com/accessweb&gt;
– OPI-Homepage <http://www.geocities.com/opi1978&gt;

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: