Treeview et Node

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Treeview et Node

Message par Progi1984 »

Salut,
en fait je teste les treeviews :
-add node ajoute un noeud créant l'élément sélectionnée comme racine du noeud
- add item ajoute un item au meme niveau que les autres

Problème : je crée quelques noeud
genre
+1
----+ 2
-------+3

Si je veux ajouter un item en cliquand droit sur 3, normalment il devrait créer :
+1
----+ 2
-------+3
-------+4

alors qu'il crée :
+1
----+ 2
-------+3
+4

Need Help !
merci !

Code : Tout sélectionner

If CreatePopupMenu(1) 
  MenuItem(1,"RightClick") 
  MenuBar() 
  MenuItem(2,"Ajouter un noeud") 
  MenuItem(3,"Ajouter un item") 
EndIf 

If CreatePopupMenu(2) 
  MenuItem(1,"LeftDoubleClick") 
  MenuBar() 
  MenuItem(2,"select this item") 
  MenuItem(3,"opt2...") 
EndIf 
 
  If OpenWindow(0,0,0,355,180,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"TreeGadget") And CreateGadgetList(WindowID(0))
    TreeGadget(1, 10,10,160,160)                                       ; TreeGadget standard
    AddGadgetItem (1, -1, "Item")    ; if you want to add an image, use 

    Repeat 
        EventID.l=WaitWindowEvent() 
        Select EventID 
          Case #PB_Event_Gadget 
          Select EventGadgetID() 
            Case 1 
              MB.l=EventType() ;<--- for checking if was pushed RMB or LMB, ... 
              GetCursorPos_(@var.TV_HITTESTINFO\pt) ;get mousepointer position screen coordenates 
              ScreenToClient_(GadgetID(1),@var.TV_HITTESTINFO\pt) ;convert that coordenates to the Gadget 1 (TreeView Gadget) referenced by 
              SendMessage_(GadgetID(1),#TVM_HITTEST,0,var) ;this is to know what is the item i am pointing. 
              SendMessage_(GadgetID(1),#TVM_SELECTITEM,#TVGN_CARET,var\hItem);<-- and this selects the pointed item 
              itemsel=GetGadgetState(1) ;save selected item 
              Select MB 
                ;--------------- 
;                 Case #PB_EventType_LeftClick 
;                   DisplayPopupMenu(0,WindowID(0)) 
                Case #PB_EventType_RightClick 
                  DisplayPopupMenu(1,WindowID(0)) 
                Case #PB_EventType_LeftDoubleClick ;<---this doesn't work if single LeftClick is checked (logical, because this is captured at once) 
                  DisplayPopupMenu(2,WindowID(0)) 
                  
                ;--------------------- 
              EndSelect 
          EndSelect 
          Case #PB_Event_Menu 
            Select EventMenuID() 
              Case 2 
                OpenTreeGadgetNode(1,GetGadgetState(1))
                  AddGadgetItem(1,GetGadgetState(1)+1,"item"+Str(GetGadgetState(1)))
                  SetGadgetItemState(1,GetGadgetState(1)+1,#PB_Tree_Expanded)
                CloseTreeGadgetNode(1)
                
              Case 3
                  AddGadgetItem(1,GetGadgetState(1)+1,"item"+Str(GetGadgetState(1)+1))

                 
            EndSelect 
      EndSelect 

    Until EventID=#PB_Event_CloseWindow
  EndIf
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Personne pour m'aider ?
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Sur purearea.net , il y a ce code (ShowTreeViewNodeNames.pb) qui montre comment connaittre les parents d'un item, il te sera très utile.
Répondre