Comment changer la couleur de fond d'un treeview

Contenu du snippet

petit code que j'ai trouvé sur developpez.com assez astucieux.
Je l'ai essayé et ça marche alors j'ai pensé que ça pourrait servir à kelk1 d'autre.

Source / Exemple :


'A ajouter dans un module du projet
Private Const GWL_STYLE As Long = (-16)
Private Const TVS_HASLINES As Long = 2
Private Const TV_FIRST As Long = &H1100
Private Const TVM_SETBKCOLOR As Long = (TV_FIRST + 29)
Private Const TVM_SETTEXTCOLOR As Long = (TV_FIRST + 30)

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

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
                                      (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
                                      (ByVal hwnd As Long, ByVal nIndex As Long, _
                                       ByVal dwNewLong As Long) As Long

'Ensuite, placez la procédure suivante dans la section générale du formulaire:

Public Sub SetTreeViewArrPlan(ByVal treeview As MSComctlLib.treeview, ByVal couleur As Long)

    Dim style As Long, noeud As Node
   
    'Changement de l'arrière-plan du treeview
    Call SendMessage(treeview.hwnd, TVM_SETBKCOLOR, 0, ByVal couleur)
   
    'réinitialisation de l'arbre
    style = GetWindowLong(treeview.hwnd, GWL_STYLE)
   
    'Si l'arbre a des lignes, on les désactive temporairement pour que
    'l'arrière-plan se redessine proprement, puis on les réactive
   
    If style And TVS_HASLINES Then
        SetWindowLong treeview.hwnd, GWL_STYLE, style Xor TVS_HASLINES
        SetWindowLong treeview.hwnd, GWL_STYLE, style
    End If
   
    'on change la couleur de fond des noeuds
    For Each noeud In treeview.Nodes
        noeud.BackColor = couleur
    Next

End Sub

'L'appel se fait comme suit :
Dim couleur As Long
couleur = vbRed
SetTreeViewArrPlan TreeView1, couleur

Bonne prog à tous!

A voir également

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.