Comment changer la couleur de fond d'un treeview

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 285 fois - Téléchargée 33 fois

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

Ajouter un commentaire

Commentaires

diablamanshadow
Messages postés
420
Date d'inscription
lundi 30 août 2004
Statut
Membre
Dernière intervention
28 janvier 2008
-
bonjour,
l'underligne si je peux appeler comme ca sur une autre source j'ai pu voir comment change rle fond , la couleur d'ecriture , la couleur des ligne mais il reste comme un genre de surlignage gris sur le texte (sauf quand on click dessus et rester appuyer la sa deviend noir et texte vert (comme j'ai defini) sinon ses texte noir sur genre de label qui se suivent fond gris et ecriture noir et il faut donc click sur un noeud , et reclicker en restant appuyez sur un autre noeud pour que le precedent devienne comme defini fond noir et police verte :-/ enfin vous voyez ?
y a pas moyen de rectifier ca ?
soldier8514
Messages postés
295
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
24 janvier 2014
1 -
les treeview sont énorméments pratik mais ils ont un inconvenient majeur : les node ont un index maxi qui prend pour valeur max 32767

donc dans la pratique si vous utilisez ça pour lister le contenu de votre disque dur _ et bien ça va planter lors de laffichage du 32768 ème dossier trouvé sur votre disque ...
Manu_12
Messages postés
11
Date d'inscription
vendredi 2 janvier 2004
Statut
Membre
Dernière intervention
22 octobre 2007
-
dans la boucle "each noeud..." tu peux rajouter aussi
'noeud.foreColor = XXXX ' pour le texte et meme
specifier avant l'appel de cette fonction
''MyImageList.backcolor = couleurdefond" en prenant la meme utilisé dans ta sub pour avoir les pictures des noeuds sur fond de meme couleur.

Par contre petit bug sur le dernier noeud Parent d'une branche j'ai une zone rectangulaire blanche qui part du signe "+" du noeud et qui descend jusqu'a la branche suivante :(
cs_topan
Messages postés
7
Date d'inscription
lundi 19 juillet 2004
Statut
Membre
Dernière intervention
3 septembre 2004
-
trOpiic, j'y pense ,si t tu veux avoir des contrôles assez convivial essaye un peu d'utiliser fireworks pr le design du formulaire.
Je ne l'ai pas fait mais je crois ke ça devait être possible.
Ah oueh MarmOtte pourkoi du "hais" les treeviews.
Ils t'ont peut être fait une mauvaise surprise.
Partage ton experience ça peut servir aux autres.
Bonne prog!
Renfield
Messages postés
17280
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
58 -
pour info, marm0tte, pourquoi tu "hais" les Treeviews ?

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.