Page 1 of 1

GetGadgetTree(#Treegadget,Index)

Posted: Mon Mar 29, 2004 5:28 pm
by Tranquil
Hello!

I would like to see something like the above command which returns the complete path of an item that is selected by index.
Eg:

Code: Select all

+ First Node
|
----+Second Node
      |
      ----Entry (Selected)
should return something like: first node/second node/entry

Cheers
Mike

GetGadgetTree(#Treegadget,Index)

Posted: Mon Mar 29, 2004 7:27 pm
by freak
Code updated for 5.20+

like this?

Code: Select all

Procedure TreeGadgetItemNumber(gadget, itemID)
  count = CountGadgetItems(gadget)
  For i = 0 To count
    If GadgetItemID(gadget, i) = itemID
      ProcedureReturn i
    EndIf
  Next i
  ProcedureReturn -1
EndProcedure

Procedure.s GetGadgetTree(treeGadget, index, seperator$)
  hParent = SendMessage_(GadgetID(treeGadget), #TVM_GETNEXTITEM, 
                         #TVGN_PARENT, GadgetItemID(treeGadget, index))
  If hParent
    ProcedureReturn GetGadgetTree(treeGadget, TreeGadgetItemNumber(treeGadget, hParent),
                    seperator$) + seperator$ + GetGadgetItemText(treeGadget, index, 0)
  Else
    ProcedureReturn GetGadgetItemText(treeGadget, index, 0)
  EndIf
EndProcedure

If OpenWindow(0, 0, 0, 200, 200, "Get Tree Hierarchy",
              #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  TextGadget(1, 10, 10, 180, 20, "double-click to display hierarchy...")
  TreeGadget(0, 10, 35, 180, 155)
  AddGadgetItem (0, -1, "Level 1.1", 0, 0)
  AddGadgetItem (0, -1, "Level 1.2 Parent", 0, 0)
  AddGadgetItem(0, -1, "Level 2.1", 0, 1)
  AddGadgetItem(0, -1, "Level 2.2", 0, 1)
  AddGadgetItem(0, -1, "Level 2.3 Parent", 0, 1)
  AddGadgetItem(0, -1, "Level 3.1", 0, 2)
  AddGadgetItem(0, -1, "Level 3.2", 0, 2)
  AddGadgetItem(0, -1, "Level 3.3", 0, 2)
  
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        appQuit = 1
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 0
            Select EventType()
              Case #PB_EventType_LeftDoubleClick
                Debug GetGadgetTree(0, GetGadgetState(0), ",")
            EndSelect
        EndSelect
    EndSelect
  Until appQuit = 1 
EndIf
Quite simple actually. Do you think there is really a new command needed for this?

Timo

Posted: Mon Mar 29, 2004 8:41 pm
by Tranquil
lol, yet. exactly that! :-)

didn't know that there is a #TVGN_PARENT constant anyway. I didnt thought to go the API way.

Thanks !

Maybe this should be moved to Tips and Tricks section!?

Cheers
Mike