Have a look at this and modify it to suit yourself, it should do what you want.
It does a backward treewalk from the item clicked and adds all the paths together to give you a current full path.
Code: Select all
;---------------------------------------------------------------------------------------------------------------------------
Enumeration
#Window_Test_Form ; Window Constants
EndEnumeration
#WindowIndex = #PB_Compiler_EnumerationValue
Enumeration ; Gadget Constants
#Gadget_Test_Form_Creatures ; Window_Test_Form
#Gadget_Test_Form_Messages
#Gadget_Test_Form_Mainframe
EndEnumeration
#GadgetIndex = #PB_Compiler_EnumerationValue
;---------------------------------------------------------------------------------------------------------------------------
Procedure.l Window_Test_Form()
If OpenWindow(#Window_Test_Form,175,0,700,400,#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_Invisible,"Test Form")
If CreateGadgetList(WindowID(#Window_Test_Form))
TreeGadget(#Gadget_Test_Form_Creatures,15,15,225,370)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Physical")
OpenTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Human")
OpenTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Role")
OpenTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Swordsman")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Magician")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Thief")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Trader")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Asassin")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Politician")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Cleric")
CloseTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Strength")
OpenTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Level")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Maximum")
CloseTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Agility")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Cunning")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Diplomacy")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Evil")
CloseTreeGadgetNode(#Gadget_Test_Form_Creatures)
;-------------------------------------------
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Alien")
OpenTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Role")
OpenTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Swordsman")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Magician")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Thief")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Trader")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Asassin")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Politician")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Cleric")
CloseTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Strength")
OpenTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Level")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Maximum")
CloseTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Agility")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Cunning")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Diplomacy")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Evil")
CloseTreeGadgetNode(#Gadget_Test_Form_Creatures)
;------------------------------------------
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Animal")
OpenTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Role")
OpenTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Swordsman")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Magician")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Thief")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Trader")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Asassin")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Politician")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Cleric")
CloseTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Strength")
OpenTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Level")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Maximum")
CloseTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Agility")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Cunning")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Diplomacy")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Evil")
CloseTreeGadgetNode(#Gadget_Test_Form_Creatures)
;------------------------------------------
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Mythical")
OpenTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Role")
OpenTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Swordsman")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Magician")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Thief")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Trader")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Asassin")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Politician")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Cleric")
CloseTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Strength")
OpenTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Level")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Maximum")
CloseTreeGadgetNode(#Gadget_Test_Form_Creatures)
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Agility")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Cunning")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Diplomacy")
AddGadgetItem(#Gadget_Test_Form_Creatures, -1, "Evil")
CloseTreeGadgetNode(#Gadget_Test_Form_Creatures)
CloseTreeGadgetNode(#Gadget_Test_Form_Creatures)
SendMessage_(GadgetID(#Gadget_Test_Form_Creatures),$111D,0,12189133)
EditorGadget(#Gadget_Test_Form_Messages,250,15,435,370)
SendMessage_(GadgetID(#Gadget_Test_Form_Messages),#EM_SETBKGNDCOLOR,0,16703173)
Frame3DGadget(#Gadget_Test_Form_Mainframe,5,0,690,395,"")
HideWindow(#Window_Test_Form,0)
ProcedureReturn WindowID()
EndIf
EndIf
EndProcedure
;---------------------------------------------------------------------------------------------------------------------------
If Window_Test_Form() ; Main Loop
QuitTest_Form = 0
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_CloseWindow
If EventWindowID() = #Window_Test_Form
QuitTest_Form = 1
EndIf
Case #PB_Event_Gadget
Select EventGadgetID()
Case #Gadget_Test_Form_Creatures
Select EventType()
Case #PB_EventType_LeftClick : Gosub Test_Tree
Case #PB_EventType_LeftDoubleClick
Case #PB_EventType_RightDoubleClick
Case #PB_EventType_RightClick
Default
EndSelect
Case #Gadget_Test_Form_Messages
EndSelect
EndSelect
Until QuitTest_Form
CloseWindow(#Window_Test_Form)
EndIf
End
Test_Tree:
If GetGadgetState(#Gadget_Test_Form_Creatures) <> -1
CurrentItem.l = GetGadgetState(#Gadget_Test_Form_Creatures)
CurrentText.s = GetGadgetItemText(#Gadget_Test_Form_Creatures, CurrentItem, 0)
ItemToWalk.l = CurrentItem
FullPath.s = CurrentText.s
Repeat
hItem.l = GadgetItemID(#Gadget_Test_Form_Creatures, ItemToWalk)
hParent.l = SendMessage_(GadgetID(#Gadget_Test_Form_Creatures), #TVM_GETNEXTITEM, #TVGN_PARENT, hItem)
ParentNumber.l = TreeGadgetItemNumber(#Gadget_Test_Form_Creatures, hParent)
ParentText.s = GetGadgetItemText(#Gadget_Test_Form_Creatures, ParentNumber, 0)
FullPath.s = ParentText + "/" + FullPath
ItemToWalk = ParentNumber
Until ItemToWalk = -1
If Left(FullPath.s, 1) = "/"
FullPath.s = Mid(FullPath.s, 2, Len(FullPath.s) - 1)
EndIf
AddGadgetItem(#Gadget_Test_Form_Messages, -1, "Line: " + Str(CurrentItem))
AddGadgetItem(#Gadget_Test_Form_Messages, -1, "Child: " + CurrentText)
AddGadgetItem(#Gadget_Test_Form_Messages, -1, "Parent: " + FullPath.s)
AddGadgetItem(#Gadget_Test_Form_Messages, -1, "-------------------------------------------")
EndIf
Return