TreeViewGadget - #TVM_SORTCHILDREN

Windows specific forum
User avatar
Josh
Addict
Addict
Posts: 1183
Joined: Sat Feb 13, 2010 3:45 pm

TreeViewGadget - #TVM_SORTCHILDREN

Post by Josh »

Did I misunderstand something or is there a bug in the API. According to MSDN, all subnodes should be sorted recursively, but only the first sublevel is sorted.

Code: Select all

EnableExplicit

Define hItem

OpenWindow(0, 0, 0, 200, 400, "Sort TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TreeGadget(0, 10, 10, 180, 380)

AddGadgetItem (0, -1, "Node00", 0, 0)

AddGadgetItem (0, -1, "Node40", 0, 1)
AddGadgetItem (0, -1, "Node30", 0, 1)
AddGadgetItem (0, -1, "Node20", 0, 1)
AddGadgetItem (0, -1, "Node10", 0, 1)

AddGadgetItem (0, -1, "Node14", 0, 2)
AddGadgetItem (0, -1, "Node13", 0, 2)
AddGadgetItem (0, -1, "Node12", 0, 2)
AddGadgetItem (0, -1, "Node11", 0, 2)

hItem = SendMessage_(GadgetID (0), #TVM_GETNEXTITEM, #TVGN_ROOT, 0)
SendMessage_(GadgetID (0), #TVM_SORTCHILDREN, #True, hItem)

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
MSDN wrote:wParam
Value that specifies whether the sorting is recursive. Set wParam to TRUE to sort all levels of child items below the parent item. Otherwise, only the parent's immediate children are sorted.
sorry for my bad english
User avatar
RSBasic
Moderator
Moderator
Posts: 1218
Joined: Thu Dec 31, 2009 11:05 pm
Location: Gernsbach (Germany)
Contact:

Re: TreeViewGadget - #TVM_SORTCHILDREN

Post by RSBasic »

Isn't bug.

Correct example:

Code: Select all

EnableExplicit

Procedure SortTreeGadgetItems(Gadget)
  Protected a
  For a=0 To CountGadgetItems(Gadget)-1
    If SendMessage_(GadgetID(Gadget),#TVM_GETNEXTITEM,#TVGN_CHILD,GadgetItemID(Gadget,a))
      SendMessage_(GadgetID(Gadget),#TVM_SORTCHILDREN,0,GadgetItemID(Gadget,a))
    EndIf
  Next
  SendMessage_(GadgetID(Gadget),#TVM_SORTCHILDREN,0,0)
EndProcedure

If OpenWindow(0,0,0,500,250,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  TreeGadget(1,10,10,480,230,0)
  
  AddGadgetItem(1,-1,"n",0,0)
    AddGadgetItem(1,-1,"b",0,1)
    AddGadgetItem(1,-1,"z",0,1)
    AddGadgetItem(1,-1,"a",0,1)
  AddGadgetItem(1,-1,"a",0,0)
  AddGadgetItem(1,-1,"j",0,0)
  AddGadgetItem(1,-1,"v",0,0)
  AddGadgetItem(1,-1,"d",0,0)
  AddGadgetItem(1,-1,"b",0,0)
    AddGadgetItem(1,-1,"g",0,1)
    AddGadgetItem(1,-1,"b",0,1)
    AddGadgetItem(1,-1,"j",0,1)
    AddGadgetItem(1,-1,"d",0,1)
  AddGadgetItem(1,-1,"p",0,0)
  AddGadgetItem(1,-1,"s",0,0)
  
  SortTreeGadgetItems(1)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Image
Image
User avatar
Josh
Addict
Addict
Posts: 1183
Joined: Sat Feb 13, 2010 3:45 pm

Re: TreeViewGadget - #TVM_SORTCHILDREN

Post by Josh »

Thanks for your answer, but may I recall my quote from MSDN from my first post?
MSDN wrote:wParam
Value that specifies whether the sorting is recursive. Set wParam to TRUE to sort all levels of child items below the parent item. Otherwise, only the parent's immediate children are sorted.
As far as I understand this, ALL levels should be sorted if wParam is set to #True
sorry for my bad english
Post Reply