what i want to do

Code: Select all
Procedure SwitchCheckBoxVisibility(ItemID)
Protected TVItem.TV_ITEM
TVItem\Mask = #TVIF_STATE
TVItem\hItem = GadgetItemID(0, ItemID)
TVItem\StateMask = #TVIS_STATEIMAGEMASK
SendMessage_(GadgetID(0), #TVM_GETITEM, 0, @TVItem)
If TVItem\State & $3000
TVItem\State = 0
Else
TVItem\State = $1000
EndIf
SendMessage_(GadgetID(0), #TVM_SETITEM, 0, @TVItem)
EndProcedure
If OpenWindow(0, 0, 0, 160, 140, "TreeView Demo", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CompilerIf #PB_Compiler_Version < 430
CreateGadgetList(WindowID(0))
CompilerEndIf
TreeGadget(0, 10, 10, WindowWidth(0) - 20, WindowHeight(0) - 40, #PB_Tree_CheckBoxes)
ButtonGadget(1, 10, WindowHeight(0) - 25, WindowWidth(0) - 20, 20, "Switch CheckBox Visibility")
AddGadgetItem(0, -1, "Node", 0, 0)
For i = 1 To 3
AddGadgetItem(0, -1, "Subnode " + Str(i), 0, 1)
Next i
SetGadgetItemState(0, 0, #PB_Tree_Expanded)
Repeat
WindowEvent = WaitWindowEvent()
If WindowEvent = #PB_Event_Gadget
If EventGadget() = 1
SwitchCheckBoxVisibility(2)
EndIf
EndIf
Until WindowEvent = #PB_Event_CloseWindow
EndIf
Code: Select all
Procedure SwitchCheckBoxVisibility(ItemID)
Protected NMHdr.NMHDR
Protected TVItem.TV_ITEM
TVItem\Mask = #TVIF_HANDLE | #TVIF_STATE
TVItem\hItem = GadgetItemID(0, ItemID)
TVItem\StateMask = #TVIS_STATEIMAGEMASK
SendMessage_(GadgetID(0), #TVM_GETITEM, 0, @TVItem)
If TVItem\State & $3000
TVItem\State = 0
SetGadgetItemData(0, ItemID, #False)
Else
TVItem\State = $1000
SetGadgetItemData(0, ItemID, #True)
EndIf
SendMessage_(GadgetID(0), #TVM_SETITEM, 0, @TVItem)
EndProcedure
Procedure WindowCallback(Handle, Msg, WParam, LParam)
If Msg = #WM_NOTIFY
*NMHdr.NMHDR = LParam
If *NMHdr\hWndFrom = GadgetID(0)
If *NMHdr\Code = #NM_CUSTOMDRAW
*NMTVCustomDraw.NMTVCUSTOMDRAW = LParam
ItemID = *NMTVCustomDraw\nmcd\lItemlParam
;- See if the checkbox is set to on or off
If GetGadgetItemData(0, ItemID) = #False
;- If it's set to off, prevent the checkbox from displaying
TVItem.TV_ITEM
TVItem\Mask = #TVIF_HANDLE | #TVIF_STATE
TVItem\hItem = GadgetItemID(0, ItemID)
TVItem\State = 0
TVItem\StateMask = #TVIS_STATEIMAGEMASK
SendMessage_(*NMHdr\hWndFrom, #TVM_SETITEM, 0, @TVItem)
EndIf
EndIf
EndIf
EndIf
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
If OpenWindow(0, 0, 0, 160, 140, "TreeView Demo", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CompilerIf #PB_Compiler_Version < 430
CreateGadgetList(WindowID(0))
CompilerEndIf
TreeGadget(0, 10, 10, WindowWidth(0) - 20, WindowHeight(0) - 40, #PB_Tree_CheckBoxes)
ButtonGadget(1, 10, WindowHeight(0) - 25, WindowWidth(0) - 20, 20, "Switch CheckBox Visibility")
AddGadgetItem(0, -1, "Node", 0, 0)
SetGadgetItemData(0, 0, #True)
For i = 1 To 3
AddGadgetItem(0, -1, "Subnode " + Str(i), 0, 1)
SetGadgetItemData(0, i, #True)
Next i
SetGadgetItemState(0, 0, #PB_Tree_Expanded)
SetWindowCallback(@WindowCallback())
Repeat
WindowEvent = WaitWindowEvent()
If WindowEvent = #PB_Event_Gadget
If EventGadget() = 1
SwitchCheckBoxVisibility(2)
EndIf
EndIf
Until WindowEvent = #PB_Event_CloseWindow
EndIf