GetGadgetTree(#Treegadget,Index)

Share your advanced PureBasic knowledge/code with the community.
Tranquil
Addict
Addict
Posts: 952
Joined: Mon Apr 28, 2003 2:22 pm
Location: Europe

GetGadgetTree(#Treegadget,Index)

Post 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
Tranquil
freak
PureBasic Team
PureBasic Team
Posts: 5950
Joined: Fri Apr 25, 2003 5:21 pm
Location: Germany

GetGadgetTree(#Treegadget,Index)

Post 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
quidquid Latine dictum sit altum videtur
Tranquil
Addict
Addict
Posts: 952
Joined: Mon Apr 28, 2003 2:22 pm
Location: Europe

Post 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
Tranquil
Post Reply