Integrer un scrolling dans un treeview sous access

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 799 fois - Téléchargée 29 fois

Contenu du snippet

Comme le topic l'indique il permet d'effectuer un scrolling vers le haut ou le bas pendant un Drag&drop
ce bout de code utilise la fonction sendmessage

Source / Exemple :


Private Sub Xtree_OLEDragOver(Data As Object, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single, State As Integer)
      
      Dim oTree As TreeView
      Set oTree = Me!Xtree.Object
      ' si pas de node selectionné, selectionner le 1er node déplacé
     
     If oTree.SelectedItem Is Nothing Then Set oTree.SelectedItem = oTree.HitTest(x, y)

      'garde le node tant qu'il n'y a pas de collé effectué

      Set oTree.DropHighlight = oTree.HitTest(x, y)
'-----------------------------------
'effectue un scroll quand arrive vers l'un des deux bords

     If Y > 9150 Then
        SendMessage Xtree.hwnd, 277&, 1&, vbNull ' Scroll haut
     Else
        If Y < 50 Then
        SendMessage Xtree.hwnd, 277&, 0&, vbNull 'Scroll vers le bas
        End If
     End If

End Sub

Conclusion :


Il suffis d'integres la dernier partie "effectue un scroll quand arrive vers l'un des deux bords" dans un treeview deja fait

@+

A voir également

Ajouter un commentaire

Commentaires

C1Bon
Messages postés
1
Date d'inscription
jeudi 26 juin 2008
Statut
Membre
Dernière intervention
26 juin 2008
-
Super Code simple et efficace

Merci

Pascal
dipisoft
Messages postés
20
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
26 décembre 2016
-
Avec les constantes au lieu des valeurs en dur, c'est plus propre... ;)

Private Const WM_VSCROLL &H115 ' 277
Private Const SB_LINEUP = 0
Private Const SB_LINEDOWN = 1

Tant qu'on y est, autant éviter aussi le "Y > 9150"... on obtient un truc dans le genre :

If y > tvwGroupes.Height - 500 Then
Call SendMessage(tvwGroupes.hwnd, WM_VSCROLL, SB_LINEDOWN, 0) ' vers le bas
ElseIf y < 500 Then
Call SendMessage(tvwGroupes.hwnd, WM_VSCROLL, SB_LINEUP, 0) ' vers le haut
End If

Enfin, les commentaires "scroll haut" et "scroll vers le bas" sont invervés. ;)

Voilà... bon code sinon.

d@mien.
cs_Tene
Messages postés
28
Date d'inscription
vendredi 23 avril 2004
Statut
Membre
Dernière intervention
2 décembre 2005
-
Merci pour ce petit bout de code...

J'en avait besoin sur Access 2000 avec le composant Microsoft TreeView...

il faut tout de même intégrer la ligne suivante pour déclarer la fonction API:

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long

Merci encore

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.