Μια μικρή πατέντα για όσους βιάζονται :
Βαλτε σε ένα class module το παρακάτω :
| |
Imports System.Windows.Forms
Public Class SubClassing Inherits System.Windows.Forms.NativeWindow Public Event CallBackProc(ByRef m As Message)
Private m_Subclassed As Boolean = False
Public Sub New(ByVal handle As IntPtr) MyBase.AssignHandle(handle) End Sub
Public Property SubClass() As Boolean Get Return m_Subclassed End Get Set(ByVal Value As Boolean) m_Subclassed = Value End Set End Property
Protected Overrides Sub WndProc(ByRef m As Message) If m_Subclassed Then RaiseEvent CallBackProc(m) End If MyBase.WndProc(m) End Sub
Protected Overrides Sub Finalize() MyBase.Finalize() End Sub End Class
|
Προσθέτουμε μια Φορμα Form και ένα Viewer CrystalReportViewer1.
Declarations στη Φορμα:
| |
Private Const GW_CHILD = 5 Private Const WM_VSCROLL = &H115 Private Const SB_PAGEDOWN = 3 Private Const SB_PAGEUP = 2 Private Const WS_VSCROLL = &H200000 Private Const WM_MOUSEWHEEL = &H20A
Private Declare Auto Function GetWindow Lib "user32.dll" (ByVal hWnd As System.IntPtr, ByVal wCmd As System.Int32) As System.IntPtr Private Declare Auto Function SendMessage Lib "User32" (ByVal hwnd As System.IntPtr, ByVal msg As Int32, ByVal wParams As Int64, ByVal lParams As Int32) As Int32
Dim WithEvents SubClass As SubClassing Dim hnd As System.IntPtr
|
Sub στη Φόρμα:
| |
Private Sub SubClass_CallBackProc(ByRef m As System.Windows.Forms.Message) Handles SubClass.CallBackProc
Select Case m.Msg Case WM_MOUSEWHEEL SendMessage(hnd, WM_VSCROLL, IIf(m.WParam.ToInt64 < 0, SB_PAGEDOWN, SB_PAGEUP), Nothing) End Select
End Sub
|
Load Event της Φόρμας:
| |
SubClass = New SubClassing(CrystalReportViewer1.Handle) SubClass.SubClass = True
hnd = GetWindow(GetWindow(GetWindow(CrystalReportViewer1.Handle, GW_CHILD), GW_CHILD), GW_CHILD)
|
Βάζουμε και ένα Report και το κάνουμε assign στο Viewer.
Δέν ειναι 100% σωστο γιατι αυτό που κάνει τώρα ειναι PageUp (SB_UP) και PageDown (SB_PAGEDOWN) ανάλογα με το MouseWheel.
Κανονικά θα έπρεπε να χρησιμοποιησουμε τα SB_THUMBPOSITION και SB_THUMBTRACK.
Όσο για τα captions στο ΤΑΒ του Viewer αλλάζουν και αυτά με ανάλογα μηνύματα στο SysTabControl του Viewer.
Sex is like programing; One mistake, and you will have to support it for the rest of your life…