[RESOLU] Treegadget numero noeud sélectionné

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Malo
Messages : 79
Inscription : dim. 09/août/2009 17:48

[RESOLU] Treegadget numero noeud sélectionné

Message 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
Dernière modification par Malo le mar. 11/oct./2011 21:42, modifié 1 fois.
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Re: Treegadget numero noeud sélectionné

Message 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
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Treegadget numero noeud sélectionné

Message par Ar-S »

Merci gnozal,
J'avais essayé pas mal de tentatives sans succès.
Je le mets dans ma hotte.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Malo
Messages : 79
Inscription : dim. 09/août/2009 17:48

Re: Treegadget numero noeud sélectionné

Message 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.
Répondre