MANIPULAR O SCROLL TREEVIEW
- venho há semanas pesquisando uma solução, porém, sem sucesso!
Gostaria de manipular o evento Scroll do Treeview via código, meu objetivo é casar o Scroll do Treeview com o Scroll do FlexGrid.
Segue alguns links com algumas informações, talvez, importantes:
http://www.vbforums.com/archive/index.php/t-461314.html
http://www.dbforums.com/microsoft-access/973824-sync-scrolling-two-listboxes.html
http://www.codeguru.com/forum/showthread.php?t=421406
Agradeço
Obrigado
Obrigado JABA, vou testar a rotina, provavelmente terei que mudar o evento Mouse_Down, mas só testando.
Em breve posto os resultados
Abs
JABA, este código esta associado ao DRAGDROP, eu preciso exatamente do seguinte, ao clicar no Scroll Vertical, saber exatamente quantos NODES eu estou descendo ou subindo.
Se o meu treeview mostrar 10 nodes e eu clicar no Scroll para descer a barra de rolagem, irei para o node 11. Na tela mostrará os NODES de 2 a 11...e assim por diante.
Manipulando estes números, conseguirei associa-los ao scroll do Flexgrid.
Associando o Scroll das ferramentas terei um Treeview-MultiColumn.
As demais adaptações eu já fiz, só falta esta manipulação.
Encontrei este código nesse site http://www.bigresource.com/Tracker/Track-vb-YrZnkUBsJs/
Citação:Code:
Option Explicit
Private Sub cmdClose_Click()
[ô]You must end runtime by invoking the Form_(Query)Unload
[ô]not by the [Ô]End[Ô] button in vb UI else lot of misery
Unload Me
End Sub
Private Sub Form_Load()
Dim i As Long
Dim mNode As Node
For i = 0 To 100
Set mNode = TreeView1.Nodes.Add()
mNode.Text = i
Next
Set mNode = Nothing
gHW = TreeView1.hWnd
Hook
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
UnHook
End Sub
Then place this code in a module :
Code:
Option Explicit
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
Declare Function SetWindowLong Lib [Ô]user32[Ô] Alias [Ô]SetWindowLongA[Ô] _
(ByVal hWnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Public Const GWL_WNDPROC = -4
Public Const WM_HSCROLL = &H114
Public Const WM_VSCROLL = &H115
Global lpPrevWndProc As Long
Global gHW As Long
Public Sub Hook()
lpPrevWndProc = SetWindowLong( _
gHW, GWL_WNDPROC, _
AddressOf WindowProc)
End Sub
Public Sub UnHook()
Dim lngReturnValue As Long
lngReturnValue = SetWindowLong( _
gHW, GWL_WNDPROC, _
lpPrevWndProc)
End Sub
Function WindowProc(ByVal hw As Long, _
ByVal uMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
On Error Resume Next
If uMsg = WM_VSCROLL Or uMsg = WM_HSCROLL Then
[ô]CATCH THE SCROLLING HERE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Form1.AutoRedraw = True
Form1.Print [Ô]SCROLLING[Ô]
End If
WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
End Function
Se alguém puder me orientar em , como adquirir este referencial, agradeço !
