BACKCOLOR DANS TREEVIEW

leptidev Messages postés 206 Date d'inscription mercredi 30 janvier 2002 Statut Membre Dernière intervention 4 décembre 2007 - 19 oct. 2002 à 16:40
patricktoledano Messages postés 3 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 26 août 2007 - 28 nov. 2006 à 13:02
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/4803-backcolor-dans-treeview

patricktoledano Messages postés 3 Date d'inscription samedi 5 mars 2005 Statut Membre Dernière intervention 26 août 2007
28 nov. 2006 à 13:02
C'est excellent.

Cependant je ccherche une solution pour VBA. Dans ce cas il est nécessaire de récupérer le Hwnd du contrôle qui n'est pas accessible dans MSACCESS et plus généralement dans VBA.

Comment retrouver le handle de tout contrôle au sein de VBA et notamment sous MSACCESS. Je suppose que l'on peut le faire via des API et VBE. J'ai cherché sans triuver.

Merci
nah666 Messages postés 75 Date d'inscription samedi 30 août 2003 Statut Membre Dernière intervention 7 janvier 2008 1
26 janv. 2005 à 17:38
En utilisant le code + haut :

Pour changer couleur de fond, envoyer le message suivant :

Private Const TVM_SETBKCOLOR = (TV_FIRST + 29)

Pour changer couleur de ligne, envoyer le message suivant :

Private Const TVM_SETLINECOLOR = (TV_FIRST + 40)

Pour changer couleur de texte, envoyer le message suivant :

Private Const TVM_SETTEXTCOLOR = (TV_FIRST + 30)

Source :
http://www.vbaccelerator.com/home/VB/Code/Controls/TreeView/TreeView_Control/VB5_TreeView_Full_Source_zip_vbalTreeView_ctl.asp

bonne prog all
Vyper909 Messages postés 24 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 8 janvier 2007
29 mai 2004 à 17:37
Ok, merci tout-de-même...
cs_Kelpan Messages postés 70 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 17 septembre 2006
29 mai 2004 à 10:08
A première vue, ce n'est pas prévu.

J'ai pas la réponse.
Vyper909 Messages postés 24 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 8 janvier 2007
28 mai 2004 à 20:37
Il a expliqué comment changer la couleur de FOND des noeuds. Moi je parle de la fine ligne à peine visible qui RELIE les noeuds entre eux et/ou à la racine. C'est pas la même chose...
cs_Kelpan Messages postés 70 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 17 septembre 2006
28 mai 2004 à 20:20
lis les commentaires BFR l'a déjà expliqué !
Vyper909 Messages postés 24 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 8 janvier 2007
28 mai 2004 à 14:22
Et maintenant, une dernière question (c'est moins important que le texte lui-même):

Est-il possible de changer la couleur des lignes qui relient les noeuds aux parents ou à la racine? Car c'est un gris pâle et il n'est pas très visible à moins d'être sur un fond blanc ou très foncé. Toutes les teintes de couleurs assez pâles tendent à les faire disparaitre...

Merci encore!
Vyper909 Messages postés 24 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 8 janvier 2007
28 mai 2004 à 04:28
Ahhh super! Ca fonctionne!

Mille mercis!
cs_Kelpan Messages postés 70 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 17 septembre 2006
27 mai 2004 à 22:12
Peut-être a-tu fais une erreur d'utilisation. Le code que j'ai mis n'est pas à recopier mot pour mot ^^

Essaye comme ceci par exemple :

Dans un module

' Décalration
Public 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 Const TV_FIRST As Long = &H1100
Private Const TVM_SETBKCOLOR As Long = (TV_FIRST + 29)

dans Form_Load() ou dans une procédure d'initialisation

Private Sub Form_Load()
myColor = RGB(128, 128, 128)
SendMessage monTreeView.hWnd, TVM_SETBKCOLOR, 0, myColor
End Sub
Vyper909 Messages postés 24 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 8 janvier 2007
27 mai 2004 à 21:56
Au fait, j'ai aussi le SP6... et petit message à BFR: ce ne sont pas les noeuds que je veux changer de couleur de fond, mais bien le TreeView complet.
Vyper909 Messages postés 24 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 8 janvier 2007
27 mai 2004 à 21:54
Grrr!! Moi ca me donne un "Bad DLL calling convention"... "Mauvaise utilisation de DLL". J'ai VB6, le contrôle TreeView est à la version 6 également et j'utilise le code ci-dessus mot pour mot, ca ne marche pas. J'ai évidemment appelé mon TreeView "monTreeView" pour les besoins de la cause. HELP!
OverDarck Messages postés 116 Date d'inscription jeudi 12 juillet 2001 Statut Membre Dernière intervention 23 juin 2005
28 juin 2003 à 16:49
ouppppsss me suis tromper de source lol c'est de fait +ieur choses a la foi dsl....
OverDarck Messages postés 116 Date d'inscription jeudi 12 juillet 2001 Statut Membre Dernière intervention 23 juin 2005
28 juin 2003 à 16:48
Slt super cool comme control mais un peu trop contraignant tu devrai selon moi faire plusieur style prédefinit en crée un Enum qui regrouperai les plusioeurs style qui séléctionnner modifi tout les parametres d'aparance et de bordure d'un coup...
Mais sinon il est vraiment bien !!!
cs_BFR Messages postés 88 Date d'inscription mardi 30 juillet 2002 Statut Membre Dernière intervention 1 mars 2008
7 mai 2003 à 16:45
Si cela peut servir
'-Déclaration
Dim NodeX As Node

'-Création du noeud "Bureau"
Set NodeX = TreeView1.Nodes.Add(, , "Bureau", "Bureau")
'-Coloriser le noeud en gris
NodeX.BackColor = &HE0E0E0

'-Création du noeud "Poste de travail"
Set NodeX = TreeView1.Nodes.Add("Bureau", tvwChild, "Racine", "Poste de travail")
'-Coloriser le noeud en gris
NodeX.BackColor = &HE0E0E0


'-Afficher le noeud
NodeX.EnsureVisible

'-Destruction objet
Set NodeX = Nothing
Wizard17 Messages postés 47 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 9 juillet 2005
16 avril 2003 à 19:59
Slt, bien, mais j'ai un ptit pb, moi g bien la couleur de fond voulue, mais, le backcolor des noeuds restent blanc ainsi que celle des icones a 'lintérieur du treeview, serait tu comment faire pour ke tout prennent la meme couleur ? merci
cs_Kryogen Messages postés 18 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 3 mars 2008
28 janv. 2003 à 21:12
Salut Kelpan, ta fonction SendMessageLong fait référence à SendMessageA et SendMessage fait aussi référence à cette fonction dans la dll "user32.dll". En clair, en fait, tu appelles la meme fonction que tu déclares "SendMessageLong" ou "SendMessage" seul le paramètre change, microsoft à utilisé SendMessageLong pour définir le nom de sa fonction afin de souligner le faite que le paramètre est un long, mais tu aurais pu la fonction "Envoieunmessage()" si tu fais réference toujours à la meme fonction, et les meme paramètres, ca marche aussi, seul l'Alias compte.... Voilà j'espere t'avoir éclairé!...
cs_Kelpan Messages postés 70 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 17 septembre 2006
19 oct. 2002 à 21:06
Salut l'API SendMessage permet d'envoyer un message (comme son nom l'indique) à un objet qui comporte un Handle (object.Hwnd)
Les constantes te permet de preciser à ki ou à koi s'adresse ton message (ici la couleur de fond).
Pour connaitre les constantes, y a po de secret fo chercher.
Si tu as MSDN, la platform SDK peut t'aider.
En ce ki me concerne g trouvé toutes mes infos dans la partie
User Interface Service
Common Control
Et l'objet TreeView
A l'interieur il y a une section TreeView Control Message

Je remarque avec étonnement que j'appelle l'API SendMessageLong à la place de SendMessage. Je n'ai aucune Info dessus.
La seule différence se situe au niveau du 2eme paramètre qui est Long à la place de Any (pour SendMessage)

Mais les 2 fonctionnent parfaitememnt. Je te conseille de suavegarder ton travaille avant de faire des tests car l'utilisation d'une mauvaise constante fait planter l'appli.

Voila ce ke je peux te dire sur ce sujet.

@+
leptidev Messages postés 206 Date d'inscription mercredi 30 janvier 2002 Statut Membre Dernière intervention 4 décembre 2007
19 oct. 2002 à 16:40
Salut, je vois beaucoup de fois cet API, comment s'en sert on ??? et surtout, ou trouver une bonne doc pour pouvoir utiliser tous les API ?
Rejoignez-nous