Page 1 sur 1

[R] Comportement Treeview (parents / enfants)

Posté : lun. 28 mars 2011 13:21
par zeshrek
Bonjour tout le monde

Apres avoir farfouillé tant sur le forum US que sur le notre, je n'ai aps trouvé ce que je voudrais.
Ce que je veux c'est pouvoir prendre un treeview par exemple tel que celui ci :
► Afficher le texte
Et faire en sorte que quand on clique sur un parent ca (dé)coche les enfants, et que quand on coche un enfant ca (dé)coche les ascendants.

J'ai trouvé des choses ressemblantes (je pense au shelltristate treeview par exemple, mais qui est dédié aux arborescences disques/fichiers), ou qui ne fonctionnent pas (en tout cas pas chez moi ni au bureau comme le tristate treeview du forum US), mais pas ce que je veux.

Donc voilà, si qqun a un tuyau, je suis preneur.
D'avance merci

Re: [..] Comportement Treeview (parents / enfants)

Posté : lun. 28 mars 2011 13:27
par sksbir
bonjour

La seule piste qui me vient tout de suite à l'esprit, c'est de passer en mode
AutoItSetOption("GUIOnEventMode", 1)

Puis d'utiliser GUICtrlSetOnEvent sur chaque case à cocher, ce qui fait que tu pourras contrôler la coche des cases "filles" dans une fonction appelée par la coche des cases "mères"...

Re: [..] Comportement Treeview (parents / enfants)

Posté : lun. 28 mars 2011 20:52
par zeshrek
c'est pas l'implémentation qui pose probleme, c'est l'algo.
Je vois pas comment faire ca. Tous mes essais se sont soldés par des erreurs. soit ca gere mal les descedants, soit c'est les parents... bref, c'est la loose.

Re: [..] Comportement Treeview (parents / enfants)

Posté : lun. 28 mars 2011 21:34
par Tlem
Hummm, j'avoue ne pas avoir l'esprit très alerte ce soir pour ce type de masturbation intellectuelle, mais grossièrement, je verrais un truc du genre :
- Si je clique un parent, alors j'utilise : _GUICtrlTreeView_GetFirstChild et GetNextChild en boucle récursive pour contrôler/modifier la totalité des enfants.

Si je clique un enfant pour le cocher, alors j'utilise _GUICtrlTreeView_GetParentHandle en boucle jusqu'à ce qu'il n'y ai plus de parent (Return Value 0) tout en cochant chaque parent.

Après, il reste des cas particuliers à gérer, tel que :
- Si je décoche un enfant et qu'il n'y à plus d'enfant coché, alors le parent doit-il être décoché ?

- Et probablement d'autres qui ne me viennent pas à l'esprit pour l'instant. ;)

Re: [..] Comportement Treeview (parents / enfants)

Posté : lun. 28 mars 2011 21:59
par zeshrek
Bah c'est ce que j'ai éssayé... et ca marche pô.
Je crois que je vais aller titiller l'auteur de tristate treeview sur le forum US, histoire de voir pourquoi son bidule marche pas chez moi...

Re: [..] Comportement Treeview (parents / enfants)

Posté : mer. 30 mars 2011 16:10
par sksbir
Hello

dis moi ce que tu penses de ça: (mis à part que c'est un peu anarchique comme programmation)
► Afficher le texte
A part ça, j'ai un bug d'affichage : le petit "+" qui est sensé s'afficher en face de la derniere case à cocher de niveau 1 ne s'affiche pas. Mais j'ai remarqué que t'as le bug aussi.

Re: [..] Comportement Treeview (parents / enfants)

Posté : mer. 30 mars 2011 16:39
par zeshrek
Cest gentil de t'etre penché sur mon probleme, et il faut bien avouer qu'a 48h pres, j'aurai surement employé ton code, mais j'ai fini par me dépatouiller. Au final j'ai fait un systeme ou les enfants héritent systématiquement du parent, et ou les parents héritent seulement du cochage de leur descendance (on peut décocher les enfants, les ascendants restent cochés)
Le tout bien sur quel que soit le niveau ou on (dé)coche.
pour un exemple 'en live' je te renvoie vers la dernière version de DirInstall que je viens de publier
Par contre je comprend mal ta dernière phrase.
"le petit "+" qui est sensé s'afficher en face de la derniere case à cocher de niveau 1 ne s'affiche pas"
Chez moi ca s'affiche tres bien...

Re: [R] Comportement Treeview (parents / enfants)

Posté : mer. 30 mars 2011 17:04
par sksbir
Une petite capture d'écran valant mieux qu'un long discours, voici 2 captures d'écran : En haut à gauche, la form telle qu'elle apparait au début, et la 2eme capture, c'est après avoir coché la derniere case en bas.
Image

je suis sous windows XP, thème "classique". Ceci explique peut-etre cela...

Re: [R] Comportement Treeview (parents / enfants)

Posté : jeu. 31 mars 2011 10:43
par zeshrek
tiens oui c'est bizare, j'avais pas remarqué...
Sur mon seven a la maison j'ai aps le pb...

Bon, sinon au cas ou ca interesserait qqun, voici ma solution :
► Afficher le texte

Re: [R] Comportement Treeview (parents / enfants)

Posté : jeu. 31 mars 2011 12:09
par sksbir
on trie le tableau (pour le pb de la petite croix)
Intéressant.. 8)

Re: [R] Comportement Treeview (parents / enfants)

Posté : jeu. 31 mars 2011 12:52
par zeshrek
j'ai toujours été tres doué pour trouver des facons 'exotiques' de contourner un problème. :P

Ceci dit je garde dans un coin de ma tête qu'il ne faut pas finir un treeview avec un node a la racine. Ce qui en soit n'est pas hyper contraignant dans la mesure ou souvent je construit mes treeview en mettant les nodes d'abord, et les entrées simples ensuite...