cs_magicgus
Messages postés206Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention14 septembre 2011
-
4 sept. 2008 à 20:31
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 2018
-
5 sept. 2008 à 16:57
Tout le monde connait le TreeView de VB...
Plutôt abouti comme contrôle mais merci Crosoft, ils ont oublié quelques petite propriétés qui pourrait être bien pratiques...
Comme la coloristation par exemple, voir meme pour ne citer que ça !
Toujours est-il qu'après quelques recherches j'ai réussi à trouver les constantes à changer par function pour lui donner les couleurs que je veux (backcolor, forecolor, etc ...)
Bon premier essai, la constante permetant de changer la couleur du texte ne fontionne pas et change en fait la couleur de surlignage...
Encore quelques recherches plus tard j'ai compris que la cause étai la version 6 du contrôle alors que les constances que j'ai reccuperés sont applicable à la version 5.0.
J'ai donc charger la version 5 et là pas moyen, meme problème, j'ai meme copier coler à 100š% une source fonctionnel et ça me fait la meme chose, très etrange...
Je programme sous Vista 32 et 64, peut être un bug de VB6, bref.
OPTION N 1
- Quelq'un connait les constantes de la version 6 et avec un peu de chance je n'aurais pas le plantage...
- Peut être devrais-je me faire mon propre treeView (auquel j'ajouterais bien sûr des fonction, et je simplifiré le fonctionnement...)
Si quelqu'un a une idée pour la première option, je n'ai que moyenement envie de recréer l'usine à gaz...
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 4 sept. 2008 à 22:40
jack l' avait bien compris.. un jour
Ca y est, j'ai trouvé
Cela vient d'un bug ressencé chez Microsoft.
La solution est ici [http://www.vbfrance.com/c.aspx?u= aHR0cDovL3N1cHBvcnQubWljcm9zb2Z0LmNvbS9rYi84OTY1NTkvZnI= [ Lien ]]
(ne faites pas attention à la traduction automatique en français qui rend les explications un peu ... lunaires
Il suffit de recharger des versions plus récentes de MSComCtl.OCX
Il semble que cela touche aussi d'autres composants dispos à la même adresse dans Comctl32
N'oubliez-pas de dé-Registrer l'ancienne version avant d'implanter la nouvelle et de la re-Registrer.
Un petit cadeau : Simplifiez-vous les Register/UnRegister en ayant une commande sous la main avec un simple Clic-Droit sur une DLL ou un OCX :
Recopiez ces quelques lignes dans un fichier que vous nommerez "Register clic-droit. REG "
puis double-cliquez dessus + accepter l'écriture en base de registre.
REGEDIT4
; This adds the ability to Right-Click on a .dll or .ocx
; and get the Register / UnRegister options.
cs_magicgus
Messages postés206Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention14 septembre 2011 5 sept. 2008 à 14:55
Merci à tous d'avoir répondu aussi vite.
J'ai bien le service pack 6 et toutes les mises a jour installé, je vient d'installer la mise à jour des controles.
Merci à toi libre_max pour l'astuce d'enregistrement des dll ocx ...
Malheureusement mon problème reste le même, pour changer les couleurs du treeview mis à jour certaines constantes marchent mais celle de la couleur de texte me change la couleur de fond du texte, le problème reste entier...
<hr />
Guillaume - VB6 n'est pas mort !
<hr />
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_magicgus
Messages postés206Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention14 septembre 2011 5 sept. 2008 à 15:16
Voici un aperçu pour mieux comprendre...
Dans le ListView le résultat voulu mais pas dans le TreeView
A noter qu'alors que les constantes que j'ai pour la version 5.0 fonctionne, je n'arrive pas faire marcher la fonction ...listitem.add, ce pour quoi je m'obstine sur la version 6.xxx
Peut être Vista ??? En tout cas je veut rester sur le 6.xxx
cs_magicgus
Messages postés206Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention14 septembre 2011 5 sept. 2008 à 15:26
Oups j'ai oublié ... Le code !
<hr />
' Declaration de l'api
Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
' Déclaration des constantes pour les message vers le TreeView
Private Const TV_FIRST As Long = &H1100
Private Const TVM_SETBKCOLOR As Long = (TV_FIRST + 29)
Private Const TVM_SETLINECOLOR As Long = (TV_FIRST + 40)
Private Const TVM_SETTEXTCEOLOR As Long = (TV_FIRST + 30)
<hr />
Private Sub MaFonction()
'Modification des couleurs du Treeview
SendMessageLong TvRubriques.hwnd, TVM_SETBKCOLOR, 0, vbBlack
SendMessageLong TvRubriques.hwnd, TVM_SETTEXTCOLOR, 0, vbWhite <-
C'est cet appel de fonction qui ne donne pas le résultat souhaité
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 5 sept. 2008 à 16:57
umm, un début peut-être : ajouter OPTION EXPLICIT
grâce à çà tes variables ont l'obligation d'être déclarées, sous peine de message d'erreur.
et là tu vois très vite que TVM_SETTEXTCOLOR
vaut 0
Private Const TVM_SETTEXTC<strike>E
</strike>OLOR As Long = (TV_FIRST + 30)
testé, le texte passe bien au rouge (remplacé pour test) mais ne reste pas.
peut-être en ajoutant d'autres subitems etc..., en rappelant la ligne à d'autres moment....
regarde dans les sources de Yomm , çà peut aussi t'aider
++
<hr size ="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp