Code: Select all
; treeview test
#Tree=51
Procedure TreeViewExpandAll(gadget.l)
Define hwndTV.l, hRoot.l, hItem.l
hwndTV.l = GadgetID(gadget)
hRoot.l = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_ROOT, 0)
hItem.l = hRoot
Repeat
SendMessage_(hwndTV, #TVM_EXPAND, #TVE_EXPAND, hItem)
hItem = SendMessage_(hwndTV, #TVM_GETNEXTITEM, #TVGN_NEXTVISIBLE , hItem)
Until hItem = #NULL
SendMessage_(hwndTV, #TVM_ENSUREVISIBLE, 0, hRoot)
EndProcedure
Procedure RemoveTreeRootBoxes(treeview, bool)
Define result.l
;...This removes ALL +/- boxes at the tree root
If bool
result = SetWindowLong_(GadgetID(treeview), #GWL_STYLE, GetWindowLong_(GadgetID(treeview), #GWL_STYLE) & (~#TVS_LINESATROOT))
Else
result = SetWindowLong_(GadgetID(treeview), #GWL_STYLE, GetWindowLong_(GadgetID(treeview), #GWL_STYLE) | #TVS_LINESATROOT)
EndIf
ProcedureReturn result
EndProcedure
Procedure SubClassedTree(hwnd.l, message.l, wParam.l, lParam.l)
Shared OldProc
If OldProc
If message = #WM_LBUTTONDBLCLK
Debug "#PB_EventType_LeftDoubleClick"
Else
ReturnValue = CallWindowProc_(OldProc, hwnd, message, wParam, lParam)
EndIf
ProcedureReturn ReturnValue
EndIf
EndProcedure
If OpenWindow(0, 0, 0, 280, 200, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
TreeGadget(#Tree, 10, 10, 260, 180) ;,#PB_Tree_NoLines)
OldProc = SetWindowLong_(GadgetID(#Tree), #GWL_WNDPROC, @SubClassedTree())
;...Remove +/- boxes at tree root
RemoveTreeRootBoxes(#Tree, 1)
AddGadgetItem(#Tree, -1, "Here's one song", 0, 0)
AddGadgetItem(#Tree, -1, "Here's another song", 0, 0)
AddGadgetItem(#Tree, -1, "This is a Disk", 0, 0)
AddGadgetItem(#Tree, -1, "Song 01", 0, 1)
AddGadgetItem(#Tree, -1, "Song 02", 0, 1)
AddGadgetItem(#Tree, -1, "Song 03", 0, 1)
AddGadgetItem(#Tree, -1, "Song 04", 0, 1)
AddGadgetItem(#Tree, -1, "Song 05", 0, 1)
AddGadgetItem(#Tree, -1, "Song 06", 0, 1)
AddGadgetItem(#Tree, -1, "Some other song", 0, 0)
AddGadgetItem(#Tree, -1, "Just another song", 0, 0)
AddGadgetItem(#Tree, -1, "This is another Disk", 0, 0)
AddGadgetItem(#Tree, -1, "Song 01", 0, 1)
AddGadgetItem(#Tree, -1, "Song 02", 0, 1)
AddGadgetItem(#Tree, -1, "Song 03", 0, 1)
AddGadgetItem(#Tree, -1, "Song 04", 0, 1)
AddGadgetItem(#Tree, -1, "Song 05", 0, 1)
AddGadgetItem(#Tree, -1, "Song 06", 0, 1)
AddGadgetItem(#Tree, -1, "Song 07", 0, 1)
AddGadgetItem(#Tree, -1, "Song 08", 0, 1)
AddGadgetItem(#Tree, -1, "Another single song", 0, 0)
TreeViewExpandAll(#Tree)
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf
End