Anda di halaman 1dari 2

SCROLLING MAUSE PADA DATAGRID VISUAL BASIC 6.

00

Setelah sekian lama mencari, akhirnya ktemu jg,..... Tulisan ini hanya skedar bwt orng2 yng mengalami hal yg sm dengn sy sj.... Skalian menambh referensi tentang visual basic 6.00... Tulisan ini bersifat terbuka dan Anda bisa mengirim saran atau komentar ke stevans.malo@gmail.com Penulis tidak bertanggung jawab atas segala hal yang terjadi akibat tulisan ini. Anda berhak mengutip sebagian atau seluruh tulisan ini selama Anda menyebutkan sumber asli pada tulisan Anda. Source code ini bukan buatan sy sendiri, source code aslinya dapat anda lihat di link ini:

http://www.tech archive.net/Archive/VB/microsoft.public.vb.controls/2004 08/0566.html


Saya hanya memodifnya sedikit agar bisa bekerja pada beberapa form tanpa harus menulis ulang semua source codenya secara barulang-ulang. Source code ini akan bekerja pada saat formnya di-load. Ok langsung sj: Event load pada form akan memanggil sebuah procedure: dengan nama WheelHook: Private Sub Form_Load() Set MyProperty = Form1.Nama_Datagrid nama datagrid yang inigin diskrol dengan mause WheelHook Nama_Datagrid End Sub Kemudian pada event Unload koneksi pemanggilan WindowProc (API windows yg menangani masalah scrolling mause) akan diputuskan dengan memanggil prosedur WheelUnhook, source code-nya seperti berikut ini: Private Sub Form_Unload(Cancel as Integer) WheelUnHook End Sub Ok, skarang kita buat source code dari kedua prosedur tersebut pada modul, kitikkan listing program berikut ini dalam modul: Public MyProperty As Object Public Const MK_CONTROL = &H8 Public Const MK_LBUTTON = &H1 Public Const MK_RBUTTON = &H2 Public Const MK_MBUTTON = &H10 Public Const MK_SHIFT = &H4 Public Const GWL_WNDPROC = -4 Public Const WM_MOUSEWHEEL = &H20A Public LocalHwnd As Long Public LocalPrevWndProc As Long Public MyControl As Object Public Declare Function CallWindowProc Lib "user32.dll" 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 Declare Function SetWindowLong Lib "user32.dll" Alias _ "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong _ As Long) As Long

Public Function WindowProc(ByVal Lwnd As Long, ByVal Lmsg As Long, ByVal _ wParam As Long, ByVal lParam As Long) As Long Dim MouseKeys As Long Dim Rotation As Long Dim Xpos As Long Dim Ypos As Long If Lmsg = WM_MOUSEWHEEL Then MouseKeys = wParam And 65535 Rotation = wParam / 65536 Xpos = lParam And 65535 Ypos = lParam / 65536 If Rotation = -120 Then MyProperty.Scroll 0, 3 Else MyProperty.Scroll 0, -3 End If End If WindowProc = CallWindowProc(LocalPrevWndProc, Lwnd, Lmsg, wParam, lParam) End Function Public Sub WheelHook(PassedControl As Object) On Error Resume Next Set MyControl = PassedControl LocalHwnd = PassedControl.hwnd LocalPrevWndProc = SetWindowLong(LocalHwnd, GWL_WNDPROC, AddressOf WindowProc) End Sub Sub WheelUnHook() Dim WorkFlag As Long On Error Resume Next WorkFlag = SetWindowLong(LocalHwnd, GWL_WNDPROC, LocalPrevWndProc) Set MyControl = Nothing End Sub Penjelasan pada script di atas: Variabel Myproperty digunakan untyuk menampung obyek datagrid di form yang menjadi tujuan. Jadi pada even load form, variabel ini akan diset terlebihdahulu dengan memasukkan nama datagrid yang ingin diberikan kontrol skrol mause. Perentahnya adalh seperti berikut ini:
Set MyProperty = Form1.Nama_Datagrid

Kemudian pada function WindowProc yang ada di modul akan menggunakan isi dari variabel Myproperty tadi dengan perintah: MyProperty.Scroll 0, 3 atau MyProperty.Scroll 0, -3

Ok, sampai disini sja, smoga bermanfaat.....

Anda mungkin juga menyukai