[R] Récupération de la sélection d'une TreeView

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Avatar du membre
AdrienMar
Niveau 1
Niveau 1
Messages : 14
Enregistré le : mer. 10 févr. 2016 15:03
Localisation : Nancy
Status : Hors ligne

[R] Récupération de la sélection d'une TreeView

#1

Message par AdrienMar »

Bonjour à tous ! :D

C'est mon tout premier message dans ce forum, je me suis inscris aujourd'hui, malgré que j'utilise autoit depuis quelques mois :D

Depuis quelques semaines, j'essaye de créer une sorte d'agenda scolaire avec une GUI (Les données sont enregistrées dans un fichier .ini)

Pour l'instant, le calendrier fonctionne (dans le .ini, lecture de la section [Year/Month/Day] , fourni par le calendrier lorsqu'on sélectionne une date)

J'ai fais en sorte qu'une TreeView affiche uniquement les matières scolaire où quelque chose a été enregistré dans le .ini
(Par exemple : dans le .ini : maths=Ex 14 page 215 => Ma TreeView affiche "Maths" dans la liste)

Mais ensuite, je bloque... Je ne sais pas comment faire pour "savoir quel élément de la TreeView est sélectionné"...
En gros, je ne sais pas quoi utiliser comme fonction pour (par exemple), afficher le contenu de la variable $maths dans une msgbox par exemple,
Soit comment savoir quel élément je sélectionne dans la TreeView, pour effectuer ensuite d'autres fonctions (comme afficher la variable...)

J'ai déjà essayé GUICtrlRead ($TreeView), mais ça me donne "21" (j'ai compris que c'est le ControlID de l'élément sélectionné, mais je ne sais pas quoi en faire... Car "21" correspond toujours au premier élément de la TreeView, et non à une matière définie...

En tout cas merci beaucoup d'éclairer un peu ma lanterne, et bonne journée à vous ! :D
PS: Je peux aussi poster un bout de mon script si nécessaire :)
Modifié en dernier par AdrienMar le dim. 25 sept. 2016 01:49, modifié 1 fois.
Adrien

L'échec, c'est la réussite du con.
Seul le geek comprend pourquoi la peugeot 404 n'existe pas.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Récupération de la sélection d'une TreeView

#2

Message par Tlem »

Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
AdrienMar
Niveau 1
Niveau 1
Messages : 14
Enregistré le : mer. 10 févr. 2016 15:03
Localisation : Nancy
Status : Hors ligne

Re: Récupération de la sélection d'une TreeView

#3

Message par AdrienMar »

Merci Thierry pour le lien :)

Je n'ai pas réussi à appliquer les formules qu'ils proposent, de plus je ne suis pas encore aussi avancé,

Mais je viens d'avoir une petite idée :

Je me base sur le fait que GUICtrlRead($TreeView) retourne le ControlID "21" pour le premier élément de la liste, "22" pour le deuxième, ... Je pourrais peut-être (si les ControlID ne changent pas) au début, créer dans la TreeView toutes les matières, puis supprimer les matières où rien n'est enregistré (donc la première matière, soit Allemand, aurait le controlID "21", jusqu'à la dernière matière ("28")...

Donc, lorsque je sélectionne (par exemple) l'anglais, soit le 2e élément, GUICtrlRead($TreeView) me retourne "22", même si l'anglais est le premier élément de la liste, et non "21"...

Et comme les matières "vides" sont supprimées après avoir créé toutes les matières, le ControlID des autres matières ne changera pas, vu qu'il a déjà été attribué précédemment...

Merci beaucoup pour l'aide et l'intérêt que vous portez à mon "petit" script :)
Adrien

L'échec, c'est la réussite du con.
Seul le geek comprend pourquoi la peugeot 404 n'existe pas.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Récupération de la sélection d'une TreeView

#4

Message par Tlem »

Il est préférable d'utiliser les fonctions adaptées (_GuiCtrlTreeview_xxx) au moins vous ne serez pas bloqué par le fait d'avoir une interface qui ne peux pas évoluer. ^^

Envoyé de mon appareil mobile avec Tapatalk.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
AdrienMar
Niveau 1
Niveau 1
Messages : 14
Enregistré le : mer. 10 févr. 2016 15:03
Localisation : Nancy
Status : Hors ligne

Re: Récupération de la sélection d'une TreeView

#5

Message par AdrienMar »

Il est préférable d'utiliser les fonctions adaptées (_GuiCtrlTreeview_xxx)

=> Je viens d'essayer, avant mon script fonctionnait pour la partie Calendrier / Lecture du .ini, mais maintenant :

http://www.cjoint.com/data3/FBkwreFJKpc ... -4397-.png

Je comprend pas très bien pourquoi ça bloque à ce niveau là,
En parallèle je vais essayer d'appliquer ma première solution, je ne pense pas que le script évoluera...
Adrien

L'échec, c'est la réussite du con.
Seul le geek comprend pourquoi la peugeot 404 n'existe pas.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Récupération de la sélection d'une TreeView

#6

Message par Tlem »

Le message d'erreur vous indique une erreur de paramètre pour la fonction IniRead().
Vu la ligne retournée, l'erreur provient très certainement de GuiCtrlRead($cal).

Pour retrouver le handle de l'élément sélectionné, utilisez $hSelected = _GUICtrlTreeView_GetSelection($cal) et normalement un GuiCtrlRead($hSelected) devrait vous renvoyer la valeur de votre sélection.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
AdrienMar
Niveau 1
Niveau 1
Messages : 14
Enregistré le : mer. 10 févr. 2016 15:03
Localisation : Nancy
Status : Hors ligne

Re: [..] Récupération de la sélection d'une TreeView

#7

Message par AdrienMar »

Pour la première erreur (iniRead), j'ai tenté de corriger le problème, toujours le même message d'erreur que sur la capture,
J'ai ensuite fait un script de 2 lignes :
$var = IniRead("config.ini",$day,"svt","0")
msgbox (0,"",$var)
Et là, miracle, ça fonctionne (même fichier ini, j'ai placé ce deuxième script dans le même fichier que celui qui retourne une erreur)

Et pour le deuxième problème, soit, la sélection d'un élément de ma TreeView,
J'ai essayé $hSelected = _GUICtrlTreeView_GetSelection($cal), puis MsgBox (0,"",GuiCtrlRead($hSelected)),
ça me donne : http://www.cjoint.com/data3/FBlxIPyOs8c ... -4423-.png

Donc pour l'instant je suis perdu sur les deux, et je continue à avancer sur le reste du script (notamment les iniWrite :D )

Dans tous les cas, merci beaucoup de m'aider, malgré le peu d'importance de mon script !
Bonne journée ! :D

PS : J'ai pensé à compléter mon profil, ma localisation, la photo, les citations... :D
Adrien

L'échec, c'est la réussite du con.
Seul le geek comprend pourquoi la peugeot 404 n'existe pas.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Récupération de la sélection d'une TreeView

#8

Message par mikell »

Sérieusement, tu devrais poster du code au lieu d'images
Ake sinon tu prends un abonnement pour les "j'ai fait comme tu as dit mais ça marche pô..."
:mrgreen:
" 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
AdrienMar
Niveau 1
Niveau 1
Messages : 14
Enregistré le : mer. 10 févr. 2016 15:03
Localisation : Nancy
Status : Hors ligne

Re: [..] Récupération de la sélection d'une TreeView

#9

Message par AdrienMar »

Sérieusement, tu devrais poster du code au lieu d'images
=> Pas de soucis ! Bon, je ne vais pas poster mes 400 lignes (ou presque), donc quelle partie dois-je poster ? Le iniRead et ma TreeView ?
Ake sinon tu prends un abonnement pour les "j'ai fait comme tu as dit mais ça marche pô..."
=> Haha oui, je crois être déjà abonné, en tout cas depuis que j'ai essayé de passer de Windows à ubuntu... :D sans rentrer dans le débat...

Franchement, je ne vois toujours pas pourquoi un script de 2 lignes arrive à faire ce que je lui demande, alors que l'autre, avec les mêmes lignes n'y parvient pas...

Et pour ma TreeView j'ai réglé le problème, j'ai finalement mis en œuvre la solution que j'évoquais dans un de mes précédents messages, soit
(Lorsque je change de date sur le calendrier)
-> Supprimer TOUS les 8 items correspondants aux matières
-> Créer TOUS les 8 items (ControlID de "21" à "28")
-> Supprimer les items "vides" (où rien n'est enregistré dans le .ini)

Comme ça, si, par exemple, "21" est l'allemand, "22" est l'anglais, ... Si dans la TreeView il n'y a rien en allemand, quand je sélectionne l'anglais, ça me retourne "22" et non "21", car même si "21" n'est plus utilisé (car supprimé auparavant), "22" a déjà été attribué, et est donc "fixe"...
Adrien

L'échec, c'est la réussite du con.
Seul le geek comprend pourquoi la peugeot 404 n'existe pas.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Récupération de la sélection d'une TreeView

#10

Message par mikell »

Poster 400 lignes de code ne pose pas de problème, c'est toujours mieux de montrer un code fonctionnel
D'ailleurs - AMHA - si tu l'avais fait dans le post #1 tu aurais eu toutes les réponses au post #2 :P
" 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
AdrienMar
Niveau 1
Niveau 1
Messages : 14
Enregistré le : mer. 10 févr. 2016 15:03
Localisation : Nancy
Status : Hors ligne

Re: [..] Récupération de la sélection d'une TreeView

#11

Message par AdrienMar »

J'ai fait un grand ménage dans mon script pour qu'il soit "compréhensible" par d'autres personnes que moi,
Bien que ce soit quand même en bordel après mon "tri" des lignes inutiles...

D'ailleurs, j'ai pris l'habitude pour tous mes scripts d'utiliser des ; pour mettre des explications sur les fonctions que j’emploie...
Tout y est bien expliqué,
Enjoy !
(enfin, surtout bonne chance pour la lecture des 209 lignes... :D)
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <DateTimeConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
#include <GuiTreeView.au3>

#Region ### START GUI /  ; DO NOT TOUCH ANYTHING
$Form1_1 = GUICreate("Form1", 651, 451, 306, 137)
$cal = GUICtrlCreateMonthCal("Calendrier", 400, 72, 237, 172)
GUICtrlSetCursor (-1, 4)
$titre = GUICtrlCreateLabel("Agenda interactif - 2016 (perpétuel)", 120, 24, 416, 33)
GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")
$worktree = GUICtrlCreateTreeView(400, 250, 233, 169)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$getid = GUICtrlCreateButton("Get item ID", 312, 278, 83, 25)
GUICtrlSetCursor (-1, 1)
$txt_dm = GUICtrlCreateLabel("Devoir maison / ", 16, 318, 136, 24)
GUICtrlSetFont(-1, 12, 400, 0, "Bookman Old Style")
$devoir = GUICtrlCreateEdit("", 16, 120, 377, 122)
GUICtrlSetFont(-1, 11, 800, 0, "@Adobe Fan Heiti Std B")
GUICtrlSetCursor (-1, 5)
$txt_ajouter = GUICtrlCreateLabel("Ajouter...", 18, 80, 77, 24)
GUICtrlSetFont(-1, 12, 400, 0, "Bookman Old Style")
$selectmat = GUICtrlCreateCombo("Sélectionner une matière...", 96, 80, 150, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "Anglais|Allemand|Français|Maths|Histoire géo|S.E.S|Chimie|S.V.T")
GUICtrlSetCursor (-1, 2)
$inputclear = GUICtrlCreateButton("Input clear", 253, 78, 67, 25)
$nvenregistrer = GUICtrlCreateButton("Enregistrer", 323, 78, 67, 25)
$savemodif = GUICtrlCreateButton("Enregistrer les modifications...", 238, 250, 157, 25)
$delandreport = GUICtrlCreateButton("Supprimer puis reporter à une autre date...", 16, 250, 219, 25)
$supprimer = GUICtrlCreateButton("Supprimer", 16, 278, 75, 25)
$shellini = GUICtrlCreateButton("Ouvrir le fichier .ini", 94, 278, 115, 25)
$shelldossier = GUICtrlCreateButton("Ouvrir le dossier", 211, 278, 99, 25)
$nodm = GUICtrlCreateCheckbox("Pas de DM", 315, 320, 73, 17)
$assistant = GUICtrlCreateLabel("Essaii want to know what is the", 17, 375, 375, 26, $SS_CENTER)
GUICtrlSetFont(-1, 12, 400, 0, "Segoe Print")
GUICtrlSetColor(-1, 0x008000)
$watermark = GUICtrlCreateLabel("Développé par AdrienMar", 422, 426, 192, 20, $SS_CENTER)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUICtrlSetCursor (-1, 7)
GUISetState(@SW_SHOW)
#EndRegion ### END GUI / DO NOT TOUCH ANYTHING



; /// START /// Lines à exécuter avant le départ des contrôles de la GUI

   ; Devoirs pour demain

         $day = @YEAR & "/" & @MON & "/" & @MDAY

      $all = IniRead("config.ini",$day,"all","0")
      $ang = IniRead("config.ini",$day,"ang","0")
      $fr = IniRead("config.ini",$day,"fr","0")
      $mat = IniRead("config.ini",$day,"mat","0")
      $hg = IniRead("config.ini",$day,"hg","0")
      $ses = IniRead("config.ini",$day,"ses","0")
      $svt = IniRead("config.ini",$day,"svt","0")
      $chim = IniRead("config.ini",$day,"chim","0")

      If $all <> "0" Then
         $worktree_all = GUICtrlCreateTreeViewItem ("Allemand",$worktree)
      EndIf
      If $ang <> "0" Then
         $worktree_ang = GUICtrlCreateTreeViewItem ("Anglais",$worktree)
      EndIf
      If $fr <> "0" Then
         $worktree_fr = GUICtrlCreateTreeViewItem ("Français",$worktree)
      EndIf
      If $mat <> "0" Then
         $worktree_mat = GUICtrlCreateTreeViewItem ("Maths",$worktree)
      EndIf
      If $hg <> "0" Then
         $worktree_hg = GUICtrlCreateTreeViewItem ("Histoire géo",$worktree)
      EndIf
      If $ses <> "0" Then
         $worktree_ses = GUICtrlCreateTreeViewItem ("S.E.S",$worktree)
      EndIf
      If $svt <> "0" Then
         $worktree_svt = GUICtrlCreateTreeViewItem ("S.V.T",$worktree)
      EndIf
      If $chim <> "0" Then
         $worktree_chim = GUICtrlCreateTreeViewItem ("Chimie",$worktree)
      EndIf

   ; END Devoirs pour demain



; /// END /// Lines à exécuter avant le départ des contrôles de la GUI




; /// START /// Affectations de paramètres à la GUI



; /// END /// Affectations de paramètres à la GUI



; Modifications par Event

While 1

   $nMsg = GUIGetMsg()
   Switch $nMsg

      Case $GUI_EVENT_CLOSE   ; Exit Win
         Exit
      Case $inputclear     ; Input clear
         GUICtrlSetData ($devoir,"")
         GUICtrlSetData ($assistant,"[ input : clear ] : OK")

      Case $cal            ; Clic Calendrier => iniRead => delete -> create TreeView & subitems

         GUICtrlSetData ($assistant,GUICtrlRead($cal))

            ; Supression et création de la WorkTree et ses subitems

               ; Delete all subitems (TreeView)          ; Non fonctionnel
                  ;GUICtrlDelete ($worktree_all)   ; 21
                  ;GUICtrlDelete ($worktree_ang)   ; 22
                  ;GUICtrlDelete ($worktree_fr) ; 23
                  ;GUICtrlDelete ($worktree_mat)   ; 24
                  ;GUICtrlDelete ($worktree_hg) ; 25
                  ;GUICtrlDelete ($worktree_ses)   ; 26
                  ;GUICtrlDelete ($worktree_svt)   ; 27
                  ;GUICtrlDelete ($worktree_chim)  ; 28
               ; Delete End                           ; // End

               GUICtrlDelete ($worktree)                          ; Delete TreeView
               $worktree = GUICtrlCreateTreeView(400, 250, 233, 169)    ; Create TreeView


            ; End

            ; Création de tous les subitems des matières

               $worktree_all = GUICtrlCreateTreeViewItem ("Allemand",$worktree)
               $worktree_ang = GUICtrlCreateTreeViewItem ("Anglais",$worktree)
               $worktree_fr = GUICtrlCreateTreeViewItem ("Français",$worktree)
               $worktree_mat = GUICtrlCreateTreeViewItem ("Maths",$worktree)
               $worktree_hg = GUICtrlCreateTreeViewItem ("Histoire géo",$worktree)
               $worktree_ses = GUICtrlCreateTreeViewItem ("Economie",$worktree)
               $worktree_svt = GUICtrlCreateTreeViewItem ("S.V.T",$worktree)
               $worktree_chim = GUICtrlCreateTreeViewItem ("Chimie",$worktree)

            ; End

            ; Lecture des éléments dans le fichier config.ini

               $all = IniRead ("config.ini",GUICtrlRead($cal),"all","")
               $ang = IniRead ("config.ini",GUICtrlRead($cal),"ang","")
               $fr = IniRead ("config.ini",GUICtrlRead($cal),"fr","")
               $mat = IniRead ("config.ini",GUICtrlRead($cal),"mat","")
               $hg = IniRead ("config.ini",GUICtrlRead($cal),"hg","")
               $ses = IniRead ("config.ini",GUICtrlRead($cal),"ses","")
               $svt = IniRead ("config.ini",GUICtrlRead($cal),"svt","")
               $chim = IniRead ("config.ini",GUICtrlRead($cal),"chim","")

            ; End

            ; Suppression des subitems "vides"

               If $all = "" Then
            GUICtrlDelete ($worktree_all)
         EndIf
               If $ang = "" Then
            GUICtrlDelete ($worktree_ang)
         EndIf
               If $fr = "" Then
            GUICtrlDelete ($worktree_fr)
         EndIf
               If $mat = "" Then
            GUICtrlDelete ($worktree_mat)
         EndIf
               If $hg = "" Then
            GUICtrlDelete ($worktree_hg)
         EndIf
               If $ses = "" Then
            GUICtrlDelete ($worktree_ses)
         EndIf
               If $svt = "" Then
            GUICtrlDelete ($worktree_svt)
         EndIf
               If $chim = "" Then
            GUICtrlDelete ($worktree_chim)
         EndIf

      Case $shellini       ; Button => Shell -> config.ini

            ShellExecute ("T:\Archives\Terminés\Agenda\config.ini")

      Case $getid          ; Button => GUIread => MsgBox

         MsgBox (0,"",GUICtrlRead($worktree))



   EndSwitch

WEnd  ; END script
Modifié en dernier par AdrienMar le dim. 25 sept. 2016 01:49, modifié 3 fois.
Adrien

L'échec, c'est la réussite du con.
Seul le geek comprend pourquoi la peugeot 404 n'existe pas.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Récupération de la sélection d'une TreeView

#12

Message par mikell »

La seule partie difficile dans ton code est la gestion des treeviewitems
Y a-t-il une raison particulière d'utiliser un treeview ?
Si tu affiches juste les matières, une simple liste suffit et c'est beaucoup plus facile à gérer
Si tu penses faire un arbre plus compliqué avec items/subitems, utiliser les fonctions _GuiCtrlTreeview_* est quasiment incontournable
" 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
AdrienMar
Niveau 1
Niveau 1
Messages : 14
Enregistré le : mer. 10 févr. 2016 15:03
Localisation : Nancy
Status : Hors ligne

Re: [..] Récupération de la sélection d'une TreeView

#13

Message par AdrienMar »

Y a-t-il une raison particulière d'utiliser un treeview ?
=> Comme tu l'a compris, la seule raison d'intégrer une TreeView dans la GUI est l'affichage des matières, j'ai utilisé une TreeView car je ne connais rien d'autre de similaire pour afficher les matières... :D
Si tu affiches juste les matières, une simple liste suffit et c'est beaucoup plus facile à gérer
=> Je pense aussi que ce serait plus facile que la TreeView, mais je n'y connais rien aux "listes"...
J'avais aussi pensé à créer 8 labels, et, suivant les matières à afficher ou non, la fonction GUICtrlSetData($label1) aurait affiché uniquement une matière où quelque chose a été enregistré, et ainsi de suite... Mais après, je ne sais pas très bien comment gérer le nombre de labels à modifier en fonction du nombre de matières non-vides...
Peut-être :
$1 = iniRead("config.ini,$day,"allemand","")
$2 = iniRead("config.ini,$day,"anglais","")
...
$8 = iniRead("config.ini,$day,"svt","")

$total = $1 + $2 + $3 + $4 + $5 + $6 + $7 + $8

While $nTotal = $total
GUICtrlSetData($label1,If $allemand = "" ElseIf $anglais = "" ...... )

Bref, c'est un peu trop compliqué pour moi tout ça... Mais bon, vaut mieux se creuser un peu le cerveau et faire un bon script, plutôt que d'acheter un agenda et devoir le trimballer (avec un stylo) à chaque cours, alors que j'ai mon pc avec ... :lol:
Adrien

L'échec, c'est la réussite du con.
Seul le geek comprend pourquoi la peugeot 404 n'existe pas.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Récupération de la sélection d'une TreeView

#14

Message par mikell »

Tu te compliques vachement la vie :roll:
Je suggère dans le .ini de donner aux clés des noms corrects et d'utiliser un tableau (array) pour les lire
Exemple de fichier ini :

Code : Tout sélectionner

[2016/02/15]
Anglais=oh my god yes

[2016/02/16]
Anglais=
Allemand=das ist wunderboire
Français=
Histoire géo=la birmanie produit du thungstène
S.E.S=
S.V.T=CH3Ch2OH à 13%
Maths=apprendre les additions| |surtout celles avec virgule|c'est les plus dures
Chimie=
Exemple de code pour aller avec le ini précédent :
#include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <DateTimeConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <Array.au3>
     
    #Region ### START GUI /  ; DO NOT TOUCH ANYTHING
    $Form1_1 = GUICreate("Form1", 651, 451, 306, 137)
    $cal = GUICtrlCreateMonthCal("Calendrier", 400, 72, 237, 172)
    GUICtrlSetCursor (-1, 4)
    $titre = GUICtrlCreateLabel("Agenda interactif - 2016 (perpétuel)", 120, 24, 416, 33)
    GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")

$worklist = GUICtrlCreateListView(" ", 400, 250, 233, 169, $LVS_NOCOLUMNHEADER )
GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 200)

    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    $getid = GUICtrlCreateButton("Get item ID", 312, 278, 83, 25)
    GUICtrlSetCursor (-1, 1)
    $txt_dm = GUICtrlCreateLabel("Devoir maison / ", 16, 318, 136, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Bookman Old Style")
    $devoir = GUICtrlCreateEdit("", 16, 120, 377, 122)
    GUICtrlSetFont(-1, 11, 800, 0, "@Adobe Fan Heiti Std B")
    GUICtrlSetCursor (-1, 5)
    $txt_ajouter = GUICtrlCreateLabel("Ajouter...", 18, 80, 77, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "Bookman Old Style")
    $selectmat = GUICtrlCreateCombo("Sélectionner une matière...", 96, 80, 150, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "Anglais|Allemand|Français|Maths|Histoire géo|S.E.S|Chimie|S.V.T")
    GUICtrlSetCursor (-1, 2)
    $inputclear = GUICtrlCreateButton("Input clear", 253, 78, 67, 25)
    $nvenregistrer = GUICtrlCreateButton("Enregistrer", 323, 78, 67, 25)
    $savemodif = GUICtrlCreateButton("Enregistrer les modifications...", 238, 250, 157, 25)
    $delandreport = GUICtrlCreateButton("Supprimer puis reporter à une autre date...", 16, 250, 219, 25)
    $supprimer = GUICtrlCreateButton("Supprimer", 16, 278, 75, 25)
    $shellini = GUICtrlCreateButton("Ouvrir le fichier .ini", 94, 278, 115, 25)
    $shelldossier = GUICtrlCreateButton("Ouvrir le dossier", 211, 278, 99, 25)
    $nodm = GUICtrlCreateCheckbox("Pas de DM", 315, 320, 73, 17)
    $assistant = GUICtrlCreateLabel("Essaii want to know what is the", 17, 375, 375, 26, $SS_CENTER)
    GUICtrlSetFont(-1, 12, 400, 0, "Segoe Print")
    GUICtrlSetColor(-1, 0x008000)
    $watermark = GUICtrlCreateLabel("Développé par AdrienMar", 422, 426, 192, 20, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    GUICtrlSetCursor (-1, 7)
    GUISetState(@SW_SHOW)
    #EndRegion ### END GUI /   ; DO NOT TOUCH ANYTHING
     
 GUIRegisterMsg($WM_NOTIFY, "_WM_NOTIFY") ; détection du clic sur listviewitems


    While 1
        $nMsg = GUIGetMsg()
        Switch $nMsg
     
            Case $GUI_EVENT_CLOSE   ; Exit Win
                Exit
            Case $inputclear        ; Input clear
                GUICtrlSetData ($devoir,"")
                GUICtrlSetData ($assistant,"[ input : clear ] : OK")
     
            Case $cal               ; Clic Calendrier => iniRead =>  items
                    GUICtrlSetData ($assistant,GUICtrlRead($cal))

                 ; vide la listview et l'edit
                     GuiCtrlSendMsg($worklist, $LVM_DELETEALLITEMS, 0, 0)
                     GUICtrlSetData ($devoir, "")

                 ; lit la section 'date' du ini dans un tableau
                     $devoirs = IniReadSection("config.ini", GUICtrlRead($cal) )
                   _ArrayDisplay($devoirs)  ; visualisation

                  ; crée les items qui vont bien
                     For $i = 1 to $devoirs[0][0]
                          If $devoirs[$i][1] <> "" Then
                                  $devoirs[$i][1] = StringReplace($devoirs[$i][1], "|", @crlf)
                                  GUICtrlCreateListViewItem ($devoirs[$i][0], $worklist)
                          EndIf
                     Next


       EndSwitch
    WEnd  


Func _WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $wParam
    Local $tagNMHDR = "hwnd hWndFrom;uint_ptr IDFrom;INT Code"
    $tNMHDR = DllStructCreate($tagNMHDR, $lParam)
    Local $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    Local $iCode = DllStructGetData($tNMHDR, "Code")
     Switch $iIDFrom
        Case $worklist
            Switch $iCode
                Case $NM_CLICK   ; clic gauche sur l'item
                    $index = ControlListView($Form1_1, "", $worklist, "GetSelected") ; récupère l'index de l'item
                    $itemtxt = ControlListView($Form1_1, "", $worklist, "GetText", $index, 0) ; lit son texte
                    For $i = 1 to $devoirs[0][0]
                        If $itemtxt = $devoirs[$i][0] Then GUICtrlSetData($devoir, $devoirs[$i][1])
                    Next
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>_WM_NOTIFY
" 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
AdrienMar
Niveau 1
Niveau 1
Messages : 14
Enregistré le : mer. 10 févr. 2016 15:03
Localisation : Nancy
Status : Hors ligne

Re: [..] Récupération de la sélection d'une TreeView

#15

Message par AdrienMar »

Bonjour !

Désolé de ne pas avoir répondu plus tôt...
mikell : tu m'a envoyé un message privé ? Je suis désolé mais étant débutant, je ne sais pas trop comment le lire, lorsque je clic dessus ça me demande "Voulez-vous supprimer ce message ?" ...

Pour le code, j'ai essayé de mettre ça avec le reste du script (la fameuse partie iniWrite et autres)
Je n'ai n'ai réussi ni à le comprendre, ni à le faire fonctionner :
Lorsque je le lance, pas de problème, mais lorsque je sélectionne sur le calendrier une date où des matières ont été enregistrées dans le ini,
Ca me ferme la GUI... DOnc je comprends plus rien, pourquoi le script s'arrête-il subitement ? S'il y avait une erreur, il aurait affiché une msgbox avec la ligne !?

Donc pour l'instant, je continue avec le système rustique de "supprimer tous les items", "créer tous les items", "supprimer les items vides"...
Adrien

L'échec, c'est la réussite du con.
Seul le geek comprend pourquoi la peugeot 404 n'existe pas.
Répondre