Page 1 sur 1

utiliser les hadles au lieux des controlID

Posté : lun. 20 févr. 2017 14:57
par Nicoloquinte
Bonjour , j'ai encore un problème avec ces satanés treeview , en effet la fonction _GUICtrlTreeView_GetSelection donne le handle de la sélection ,or ... comment faire pour retrouver le controlID ou le texte écrit sur le bouton ... :mrgreen:

Je sais que je m'y prend très mal ... :mrgreen:
mais voila le principe :

-un tableau
->>dim 1 = controlID de l'element
-quand on clique sur un element , il affiche le nom du fichier qui lui correspond

et voici mon code 8)
$aFileList = _FileListToArray($Repertoire, "*")
   Local $Client[$aFileList[0]]
   
   For $i = 1 to $aFileList[0]
      $Client[$i -1][0] = GUICtrlCreateTreeViewItem($aFileList[$i], $Patients)

   Next
_ArraySort($Client)


   Case $Client[0][0] To $Client[$nbITEMS -1][0]   
      msgbox(0,"_GUICtrlTreeView_GetSelection ( $Patients)","Nom du fichier")
je pense me retourner vers un listbox comme conseillé plus tôt par mikell :mrgreen:

merci

Re: utiliser les hadles au lieux des controlID  

Posté : lun. 20 févr. 2017 15:41
par TommyDDR
Les éléments créés avec les fonctions d'UDF n'ont pas de CtrlId, seulement des Handle, vous ne pouvez donc pas utiliser de fonction nécessitant un CtrlId avec un élément obtenu par _GUICtrlTreeView_Add(), en revanche, vous pouvez obtenir le Handle d'un CtrlId, et par chance, une fonction existe pour récupérer le texte d'un item de TreeView à partir d'un handle ! :)
Hors sujet : Si vous vous lancer dans un programme qui va commencer à être complexe (et d'une manière général, même pour de petits programmes), je vous conseille de vous renseigner sur le mode événementiel.
Opt("GUIOnEventMode", 1)
Je vous posterai un petit exemple de script en mode événementiel dans la journée.

Edit : Voici un code simple vous montrant la façon dont le mode évènementiel peut rendre votre code plus clair.
#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)
Opt("MustDeclareVars", 1)

Global $gui
Global $boutonBleu
Global $boutonRouge
Global $taille[2] = [300, 300]

$gui = GUICreate("", $taille[0], $taille[1])
GUISetOnEvent($GUI_EVENT_CLOSE, quit, $gui)                    ; On associe les évènements : "AltF4", "Clic sur croix rouge", "Echap" à la fonction "quit"
$boutonBleu = GUICtrlCreateButton("Bleu", 10, 10, 100, 25)
$boutonRouge = GUICtrlCreateButton("Rouge", 10, 40, 100, 25)
GUICtrlSetOnEvent($boutonBleu, goBleu)                      ; On associe le clic sur le bouton "$boutonBleu" à la fonction "goBleu"
GUICtrlSetOnEvent($boutonRouge, goRouge)                    ; On associe le clic sur le bouton "$boutonRouge" à la fonction "goRouge"
GUISetState(@SW_SHOW, $gui)

While(True)
   Sleep(10)
WEnd

Func goBleu()
   GUISetBkColor(0x8080FF)
EndFunc

Func goRouge()
   GUISetBkColor(0xFF5050)
EndFunc

Func quit()
   Exit
EndFunc

Re: utiliser les hadles au lieux des controlID

Posté : lun. 20 févr. 2017 16:00
par mikell
D'une manière beaucoup plus générale et au vu des épisodes précédents, personnellement je dirais que tu te simplifierais beaucoup la vie si tu définissais dès le départ et avec précision toutes les actions que ton programme devra effectuer
ça te permettrait de définir un plan de script, les meilleurs controles à utiliser, les fonctions à construire, etc
Parce que là ça part dans tous les sens, un vrai feu d'artifice :mrgreen:

Re: utiliser les hadles au lieux des controlID

Posté : lun. 20 févr. 2017 18:56
par Nicoloquinte
J'ai deja noté tout ce que je programme devait faire , mais , je doit develloper car je ne suis qu'un novice en programmation :mrgreen:
je sais ce que je veux faire , mais je ne sais pas ce que je veux faire :mrgreen: :mrgreen:

merci beaucoup TommyDDR , je vais aller voir ça