Page 1 sur 1

[RESOLU] Treegadget numero noeud sélectionné

Publié : lun. 10/oct./2011 22:50
par Malo
Bonjour à tous

Est-il possible quand on clic sur un nœud (la croix, pas sur l'élément) d'avoir le retour du numéro
de l'élément qui lui est attaché. Exemple ci dessous "Nœud 1 = 8"

Code : Tout sélectionner

Enumeration
	#Fen 
EndEnumeration

Enumeration
	#T_Gadget 
EndEnumeration

If OpenWindow(#Fen, 0, 0, 300, 500, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
    TreeGadget(#T_Gadget, 10, 10, 250, 450)                                      
   
     
      For a = 0 To 3
        AddGadgetItem (#T_Gadget, -1, "Elément normal "+Str(a), 0, 0) 
        AddGadgetItem (#T_Gadget, -1, "Noeud "+Str(a), 0, 0)          
        AddGadgetItem (#T_Gadget, -1, "Sous-élément 1", 0, 1)         
        AddGadgetItem (#T_Gadget, -1, "Sous-élément 2", 0, 1)
        AddGadgetItem (#T_Gadget, -1, "Sous-élément 3", 0, 1)
        AddGadgetItem (#T_Gadget, -1, "Sous-élément 4", 0, 1)
        AddGadgetItem (#T_Gadget, -1, "Fichier "+Str(a), 0, 0) 
      Next
 
      Repeat
      	
      	Select WaitWindowEvent()
      		Case #PB_Event_Gadget
      			Select EventGadget()
      				Case #T_Gadget
      					Debug GetGadgetState(#T_Gadget)
      			EndSelect
      	EndSelect
      	
      	
      	
      Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf




Merci par avance

Re: Treegadget numero noeud sélectionné

Publié : mar. 11/oct./2011 14:52
par gnozal
Oui, par exemple avec un callback (Windows uniquement) :

Code : Tout sélectionner

Enumeration
  #Fen 
EndEnumeration

Enumeration
  #T_Gadget 
EndEnumeration

Procedure.l Callback(hWnd, uMsg, wParam, lParam)
  Protected *pnmtv.NM_TREEVIEW
  Select uMsg
    Case #WM_NOTIFY
      *pnmtv = lParam
      Select *pnmtv\hdr\code
        Case #TVN_ITEMEXPANDED
          Select *pnmtv\action
            Case 1
              Debug "Noeud fermé " + Str(*pnmtv\itemNew\lParam)
            Case 2
              Debug "Noeud ouvert " + Str(*pnmtv\itemNew\lParam)
          EndSelect
      EndSelect
  EndSelect
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

If OpenWindow(#Fen, 0, 0, 300, 500, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
  TreeGadget(#T_Gadget, 10, 10, 250, 450)                                      
  
  
  For a = 0 To 3
    AddGadgetItem (#T_Gadget, -1, "Elément normal "+Str(a), 0, 0) 
    AddGadgetItem (#T_Gadget, -1, "Noeud "+Str(a), 0, 0)          
    AddGadgetItem (#T_Gadget, -1, "Sous-élément 1", 0, 1)         
    AddGadgetItem (#T_Gadget, -1, "Sous-élément 2", 0, 1)
    AddGadgetItem (#T_Gadget, -1, "Sous-élément 3", 0, 1)
    AddGadgetItem (#T_Gadget, -1, "Sous-élément 4", 0, 1)
    AddGadgetItem (#T_Gadget, -1, "Fichier "+Str(a), 0, 0) 
  Next
  
  SetWindowCallback(@Callback())
  
  Repeat
    
    Select WaitWindowEvent()
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #T_Gadget
            Debug GetGadgetState(#T_Gadget)
        EndSelect
    EndSelect
    
    
    
  Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

Re: Treegadget numero noeud sélectionné

Publié : mar. 11/oct./2011 17:43
par Ar-S
Merci gnozal,
J'avais essayé pas mal de tentatives sans succès.
Je le mets dans ma hotte.

Re: Treegadget numero noeud sélectionné

Publié : mar. 11/oct./2011 21:41
par Malo
Merci gnozal pour cette réponse avec ce code.

N'ayant pas encore utilisé SetWindowCallback, j'ai vais essayé de comprendre un peu comment cela fonctionne.