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