Constantes du treeview 6.0... Need help

cs_magicgus Messages postés 206 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 14 septembre 2011 - 4 sept. 2008 à 20:31
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Derniè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...

Merci d'avance

<hr />Guillaume - VB6 n'est pas mort !

<hr />

7 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 sept. 2008 à 21:27
salut,

as-tu bien installé le SP6 (qui évidemment est indispensable) ?
Service Pack pour Visual Basic 6.0 - SP

as-tu vérifier les diverses compatibilités avec vista?
Support
Statement for Visual Basic 6.0 on Windows®VistaT and Windows®Server 2008T


toutes les constantes sont disponibles depuis l'explorateur d'objet : [F2]

++
Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
4 sept. 2008 à 22:30
Pour le pack sp6, il te faut aussi le correctif qui va avec.

<hr />

[] Ce qui va sans dire. va mieux en le disant.

<hr />
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
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.

; ==========
; .DLL files
; ==========
[HKEY_CLASSES_ROOT\.dll]
"Content Type"="application/x-msdownload"
@="dllfile"

[HKEY_CLASSES_ROOT\dllfile]
@="Application Extension"



[HKEY_CLASSES_ROOT\dllfile\Shell\Register\command]
@="regsvr32.exe "%1""



[HKEY_CLASSES_ROOT\dllfile\Shell\UnRegister\command]
@="regsvr32.exe /u "%1""



; ==========
; .OCX files
; ==========

[HKEY_CLASSES_ROOT\.ocx]
@="ocxfile"



[HKEY_CLASSES_ROOT\ocxfile]
@="OCX"



[HKEY_CLASSES_ROOT\ocxfile\Shell\Register\command]
@="regsvr32.exe "%1""



[HKEY_CLASSES_ROOT\ocxfile\Shell\UnRegister\command]
@="regsvr32.exe /u "%1""



; End


Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés





<hr />

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)









<hr />




[] Ce qui va sans dire. va mieux en le disant.


<hr />
0
cs_magicgus Messages postés 206 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 14 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 />
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_magicgus Messages postés 206 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 14 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

<hr />Guillaume - VB6 n'est pas mort !

<hr />
0
cs_magicgus Messages postés 206 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 14 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é



    SendMessageLong TvRubriques.hwnd, TVM_SETLINECOLOR, 0, vbWhite
   
    'Ajout d'un Item test au TreeView
    Dim NodeRubriques As Node
    Set NodeRubriques = TvRubriques.Nodes.Add(, , "key1", "toto")
   
    'Ajout dun Item test au ListView
    Dim ItemFiches As ListItem
    Set ItemFiches = LvFiches.ListItems.Add(, "key1", "toto2")




End Sub





<hr />


Guillaume - VB6 n'est pas mort !







<hr />
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
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  
0
Rejoignez-nous