[..] Treeview retrouver l'index

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
cluster49
Niveau 3
Niveau 3
Messages : 32
Enregistré le : lun. 02 juil. 2012 11:56
Status : Hors ligne

[..] Treeview retrouver l'index

#1

Message par cluster49 »

Bonjour,

A partir d'un "treeview" crée à la volée comme dans l'exemple ci-dessous je peux connaitre l'endroit où je me trouve dans l'arborescence grâce au bouton "Get Index".

Je souhaiterais obtenir le même résultat lorsque je clic directement dans l'arborescence (sans avoir besoin de cliquer sur le bouton). Est-ce envisageable ?
► Afficher le texte
Merci pour votre aide.
Modifié en dernier par mikell le sam. 03 oct. 2015 16:24, modifié 1 fois.
Raison : balise spoiler
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] treeview retrouver l'index

#2

Message par Hugues »

Salut,

Il va falloir passer par WM_NOTIFY()...
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] treeview retrouver l'index

#3

Message par Hugues »

Un petit exemple de WM_Notify: (de Tlem)
► Afficher le texte
mdanielm
Membre émérite
Membre émérite
Messages : 254
Enregistré le : mer. 11 déc. 2013 19:48
Status : Hors ligne

Re: [..] Treeview retrouver l'index

#4

Message par mdanielm »

Bonsoir,
Je débarque avec un peu de retard!
J'ai regardé Create, il y a la solution:
► Afficher le texte
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Treeview retrouver l'index

#5

Message par mikell »

Ce genre de syntaxe

Code : Tout sélectionner

$yest = $hSelected_Item = _GUICtrlTreeView_GetItemHandle($TreeView, $aItems[$i])
n'est absolument pas recommandé
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
mdanielm
Membre émérite
Membre émérite
Messages : 254
Enregistré le : mer. 11 déc. 2013 19:48
Status : Hors ligne

Re: [..] Treeview retrouver l'index

#6

Message par mdanielm »

Même avec des parenthèses? $b = ($a=1)
Où je peux lire dans la doc ce que vous dites? je n'ai jamais eu aucun problème, quel que soit le langage.
....un booléen qui prend une valeur booléenne!
Donnez un contre exemple, vous avez le week-end.
J'ai modifié ces lignes car l'exitloop dans la boucle for ne permettait pas de traiter le cas où l'index cherché n'existait pas dans la liste.
Avec $yest je n'affiche que si j'ai trouvé l'index.
Cordialement
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Treeview retrouver l'index

#7

Message par mikell »

Dans cette instruction le '=' est utilisé avec 2 usages différents (assignation et égalité) et l'absence de parenthèses rend cette syntaxe peu lisible et potentiellement source d'erreurs
Idem d'ailleurs pour toute instruction qui comporte plusieurs opérateurs et qui se contente d'exploiter leur précédence sans marquer les opérations par des parenthèses
Ce n'est pas parce que quelque chose marche que c'est forcément recommandé. Je suis surpris que toi qui défends ardemment la lisibilité et les bonnes pratiques tu ne comprennes pas ça
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Treeview retrouver l'index

#8

Message par walkson »

Bonjour,
Donnez un contre exemple, vous avez le week-end.
Mikell a peut être d'autres chats à fouetter ce week-end ? :wink:
Un petit exemple plus simple:
► Afficher le texte
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
mdanielm
Membre émérite
Membre émérite
Messages : 254
Enregistré le : mer. 11 déc. 2013 19:48
Status : Hors ligne

Re: [..] Treeview retrouver l'index

#9

Message par mdanielm »

On a tous un chat à fouetter.
Le sujet du différent est: $b=($a=1).
Je ne vois pas le rapport avec votre exemple.
Annoncez ce qu'il doit faire et ce que vous attendez de moi.
Si vous voulez que je vous supprime votre exitloop et votre while 1, voilà la solution:
► Afficher le texte
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Treeview retrouver l'index

#10

Message par walkson »

Mille regrets si je vous ai blessé, j'étais sur le ton de la plaisanterie.
Si je me suis permis de donner cet exemple, c'est parce qu'il n'utilise pas WM_NOTIFY() et qu'il me semble plus simple.
Après, la discussion au sujet de $b=($a=1), je ne suis qu'un simple usager du forum sans aucune qualification et donc sans avis... Je voulais tout simplement rendre service à cluster49
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Treeview retrouver l'index

#11

Message par mikell »

mdanielm a écrit :On a tous un chat à fouetter.
Le sujet du différent est: $b=($a=1).
On se calme svp
Il n'y a pas de différent sur cette expression-là puisqu'elle comporte les parenthèses qui vont bien (ce qui n'est pas le cas dans le code posté)
Merci de prendre le temps de mieux relire mon message précédent
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
mdanielm
Membre émérite
Membre émérite
Messages : 254
Enregistré le : mer. 11 déc. 2013 19:48
Status : Hors ligne

Re: [..] Treeview retrouver l'index

#12

Message par mdanielm »

Je suis d'accord qu'avec des parenthèses c'est plus lisible, et qu'elles deviennent indispensables dans:
$a=$b=$c=1 ---> $a = ($b=($c=1))
tout comme dans:
$a = $b=1? 2: $c? 3:4 -----> $a = ($b=1? 2: ($c=1? 3:4))

En même temps j'ai modifié rapidement un programme existant.

Quand à la fonction GUICtrlSendMsg, désolé, je ne comprends pas ce qu'elle fait.
(J'ai néanmoins corrigé la traduction de la page).

Je vous remercie de me lire attentivement et de critiquer mon style, je ne me vexerai jamais.
Cordialement
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Treeview retrouver l'index

#13

Message par mikell »

Ben on est d'accord alors Image

@walkson
Ton script me fait penser à une corde tendue au-dessus d'un précipice : c'est vrai qu'elle peut permettre de traverser, mais tu as beaucoup plus de chances de te péter la gueule que d'arriver entier de l'autre côté :mrgreen:
Pour aller réellement au plus simple :
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
mdanielm
Membre émérite
Membre émérite
Messages : 254
Enregistré le : mer. 11 déc. 2013 19:48
Status : Hors ligne

Re: [..] Treeview retrouver l'index

#14

Message par mdanielm »

Je n'ai fait que regarder l'exemple de la doc Create pour le TreeView.
Dans ta solution, je ne comprends pas pourquoi l'ID du message est égal à l'ID de l'item, mais ça marche.
A quel endroit on demande d'intercepter un click gauche?
Et si on voulait faire autre chose avec un clic droit?
La boucle for va systématiquement à la fin, elle pourrait s'interrompre avec EXITLOOP!
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Treeview retrouver l'index

#15

Message par mikell »

mdanielm a écrit :Dans ta solution, je ne comprends pas pourquoi l'ID du message est égal à l'ID de l'item, mais ça marche.
GUIGetMsg : The "event" returned is the control ID of the control sending the message
mdanielm a écrit :Et si on voulait faire autre chose avec un clic droit?
Ben faudrait un code différent... avec du WM_NOTIFY probablement
mdanielm a écrit :La boucle for va systématiquement à la fin, elle pourrait s'interrompre avec EXITLOOP!
C'est tout à fait exact (mais c'est un détail)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Treeview retrouver l'index

#16

Message par walkson »

@Mikell
c'est vrai le Case $msg > ""
$aa = ControlTreeView($gui, "", $treeview, "GetSelected" )
ça ressemble à renifler un peu partout pour retrouver son chemin.
Mais la deuxième partie

Code : Tout sélectionner

            Case Else
                For $i = 1 To $nbfolder
                    If $msg = $FileList1[$i] Then
                $item = $FileList[$i]
                MsgBox(4160, "", "Selection:   " & $item)

                EndIf
                Next

y a pas de quoi fouetter un y a qu'un petit chouilla de différence avec ton code ou bien quelque chose m' échappe. Bon, c'est vrai, mon exemple est un peu brouillon...
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Treeview retrouver l'index

#17

Message par mikell »

Par exemple rajoute juste ça dans la gui et clique dessus

Code : Tout sélectionner

GUICtrlCreateLabel("test1", 280, 16, 30, 20)
GUICtrlCreateList("test2", 280, 56, 40, 20)
;etc
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre