Delete Children of Node (including sub-nodes)

Category: Edit/Modify

Date: 02-16-2022

Return to Index


 
'Removes all children and sub-nodes of the specified node.
'The specified node is not deleted.
 
'The Windows TVM_DeleteItem message will delete a node and all
'its children, This approach cycles through all children of the
'selected node, using TVM_DeleteItem on each.
 
'The PowerBASIC DDT commands are used to loop through all
'children of the node.
 
'Primary Code - Delete Node + Children
Sub DeleteChildrenOfNode(hNode as Dword)
      Local hChild as Dword
      TreeView Get Child hDlg, %IDC_TreeView, hNode to hChild
      While hChild
         Control Send hDlg, %IDC_TreeView, %TVM_DeleteItem, 0, hChild
         TreeView Get Child hDlg, %IDC_TreeView, hNode to hChild
      Wend
End Sub
 
'Compilable Example:  (Jose Includes)
#Compiler PBWin 9, PBWin 10
#Compile EXE
#Dim All
%Unicode=1
#Include "Win32API.inc"
#Include "CommCtrl.inc"
%IDC_TreeView = 100 : %IDC_Button = 200
Global hDlg As Dword
 
Function PBMain() As Long
   Local hItem As Dword, hTemp As Dword, hTemp2 As Dword, hTemp3 As Dword
   Dialog New Pixels, 0, "TreeView",200,200,155,250, %WS_SysMenu, 0 To hDlg
   Control Add TreeView, hDlg, %IDC_TreeView, "", 10,10,130,200
   Control Add Button, hDlg, %IDC_Button,"Start", 25,220,95,20
   TreeView Insert Item hDlg, %IDC_TreeView, 0, %TVI_Last, 0,0,"RootTo hItem
   TreeView Insert Item hDlg, %IDC_TreeView, hItem, %TVI_Last, 0,0,"MotherTo hTemp
   TreeView Insert Item hDlg, %IDC_TreeView, hTemp, %TVI_Last, 0,0,"DanTo hTemp2
   TreeView Insert Item hDlg, %IDC_TreeView, hTemp, %TVI_Last, 0,0,"BobTo hTemp3
   TreeView Set Expanded hDlg, %IDC_TreeView, hTemp, %True
   TreeView Insert Item hDlg, %IDC_TreeView, hTemp3, %TVI_Last, 0,0,"FootTo hTemp2
   TreeView Insert Item hDlg, %IDC_TreeView, hTemp3, %TVI_Last, 0,0,"ArmTo hTemp2
   TreeView Set Expanded hDlg, %IDC_TreeView, hTemp3, %True
   TreeView Insert Item hDlg, %IDC_TreeView, hItem, %TVI_Last, 0,0,"FatherTo hTemp
   TreeView Insert Item hDlg, %IDC_TreeView, hTemp, %TVI_Last, 0,0,"HelenTo hTemp2
   TreeView Insert Item hDlg, %IDC_TreeView, hTemp, %TVI_Last, 0,0,"AnyTo hTemp3
   TreeView Set Expanded hDlg, %IDC_TreeView, hTemp, %True
   TreeView Insert Item hDlg, %IDC_TreeView, hTemp3, %TVI_Last, 0,0,"LegTo hTemp2
   TreeView Insert Item hDlg, %IDC_TreeView, hTemp3, %TVI_Last, 0,0,"FingerTo hTemp2
   TreeView Set Expanded hDlg, %IDC_TreeView, hTemp3, %True
   TreeView Set Expanded hDlg, %IDC_TreeView, hItem, %True
   Dialog Show Modal hDlg Call DlgProc
End Function
 
CallBack Function DlgProc() As Long
   Local hNode As Dword, iResult&
   If CB.Msg = %WM_Command AND CB.Ctl = %IDC_Button Then
      TreeView Get Select hDlg, %IDC_TreeView To hNode
      DeleteChildrenOfNode(hNode)
   End If
End Function
 
Sub DeleteChildrenOfNode(hNode as Dword)
   Local hChild as Dword
   TreeView Get Child hDlg, %IDC_TreeView, hNode to hChild
   While hChild
      Control Send hDlg, %IDC_TreeView, %TVM_DeleteItem, 0, hChild
      TreeView Get Child hDlg, %IDC_TreeView, hNode to hChild
   Wend
End Sub
 
'gbs_00264
'Date: 03-10-2012


created by gbSnippets
http://www.garybeene.com/sw/gbsnippets.htm