 .
.Code: Select all
AddElement(Saved())
Saved()\Names = "Sparkie, Srod"
Saved()\Times + 1
 .
.Code: Select all
AddElement(Saved())
Saved()\Names = "Sparkie, Srod"
Saved()\Times + 1
Code: Select all
GetWrongEndOfStick$ = "srod"
For i = 1 to 10000
  PrintN(GetWrongEndOfStick$)
  KickSrodUpTheArse + 1
Next
Code: Select all
Global oldproc
Procedure RemoveTVIcheckbox(tvGadget, item) 
  tvi.TV_ITEM 
  tvi\mask = #TVIF_HANDLE | #TVIF_STATE 
  tvi\hItem = GadgetItemID(tvGadget, item) 
  tvi\state = 0 << 12 
  tvi\stateMask = #TVIS_STATEIMAGEMASK 
  SendMessage_(GadgetID(1), #TVM_SETITEM, 0, tvi) 
EndProcedure 
Procedure Callback(hWnd, uMsg, wParam, lParam)
  Protected result
  Select uMsg
    Case #WM_KEYDOWN
      result=0
    Case #WM_CHAR ;Stop the infernal beeping!
      result=0
    Default
      result=CallWindowProc_(oldproc, hWnd, uMsg, wParam, lParam)
  EndSelect
  ProcedureReturn Result
EndProcedure
If OpenWindow(0, 0, 0, 400, 380, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0)) 
  TreeGadget(1, 180, 10, 160, 360, #PB_Tree_CheckBoxes) 
  For a = 0 To 4 
    AddGadgetItem (1, -1, "Normal Item "+Str(a), 0, 0) 
    AddGadgetItem (1, -1, "Node "+Str(a), 0, 0) 
    AddGadgetItem(1, -1, "Sub-Item 1", 0, 1) 
    AddGadgetItem(1, -1, "Sub-Item 2", 0, 1) 
    AddGadgetItem(1, -1, "Sub-Item 3", 0, 1) 
    AddGadgetItem(1, -1, "Sub-Item 4", 0, 1) 
    AddGadgetItem (1, -1, "File "+Str(a), 0, 0) 
  Next a 
  RemoveTVIcheckbox(1, 1) 
  RemoveTVIcheckbox(1, 6) 
  For i = 8 To 12 
    RemoveTVIcheckbox(1, i) 
  Next i 
  SetGadgetItemState(1, 8, #PB_Tree_Expanded) 
  oldproc=SetWindowLong_(GadgetID(1), #GWL_WNDPROC, @callback())
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow 
EndIf 

Here is something wierd:Sparkie wrote:
Code: Select all
Procedure RemoveTVIcheckbox(tvGadget, item) tvi.TV_ITEM tvi\mask = #TVIF_HANDLE | #TVIF_STATE tvi\hItem = GadgetItemID(tvGadget, item) tvi\state = 0 << 12 tvi\stateMask = #TVIS_STATEIMAGEMASK SendMessage_(GadgetID(1), #TVM_SETITEM, 0, tvi) EndProcedure If OpenWindow(0, 0, 0, 400, 380, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0)) TreeGadget(1, 180, 10, 160, 360, #PB_Tree_CheckBoxes) For a = 0 To 4 AddGadgetItem (1, -1, "Normal Item "+Str(a), 0, 0) AddGadgetItem (1, -1, "Node "+Str(a), 0, 0) AddGadgetItem(1, -1, "Sub-Item 1", 0, 1) AddGadgetItem(1, -1, "Sub-Item 2", 0, 1) AddGadgetItem(1, -1, "Sub-Item 3", 0, 1) AddGadgetItem(1, -1, "Sub-Item 4", 0, 1) AddGadgetItem (1, -1, "File "+Str(a), 0, 0) Next a RemoveTVIcheckbox(1, 1) RemoveTVIcheckbox(1, 6) For i = 8 To 12 RemoveTVIcheckbox(1, i) Next i SetGadgetItemState(1, 8, #PB_Tree_Expanded) Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow EndIf
Code: Select all
SetGadgetItemState(1, 8, #PB_Tree_Expanded)Code: Select all
If OpenWindow(0, 0, 0, 400, 380, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0)) 
  TreeGadget(1, 180, 10, 160, 360, #PB_Tree_CheckBoxes) 
    AddGadgetItem (1, -1, "Normal Item "+Str(a), 0, 0) 
    AddGadgetItem(1, -1, "Sub-Item 1", 0, 1) 
    AddGadgetItem(1, -1, "Sub-Item 2", 0, 1) 
    AddGadgetItem(1, -1, "Sub-Item 3", 0, 1) 
    AddGadgetItem(1, -1, "Sub-Item 4", 0, 1) 
  SetGadgetItemState(1, 0, #PB_Tree_Checked)
  SetGadgetItemState(1, 0, #PB_Tree_Expanded) 
  Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow 
EndIf

Sorry, what i report is not the same.srod wrote:Already reported and Freak has explained that it is not actually a bug, just a misuse of SetGadgetItemState() !
I should have realised. Reckon I should start going to bed earlier!
 So I think that Freak's response already explains this one as PB just resets the imagestate icon in response to SetGadgetItemState(....#PB_Tree_Expanded) etc. i.e. in the absence of #PB_Tree_Checked.
  So I think that Freak's response already explains this one as PB just resets the imagestate icon in response to SetGadgetItemState(....#PB_Tree_Expanded) etc. i.e. in the absence of #PB_Tree_Checked.
may be ok, but sorry: that Freak answer is far to be valid for my report.srod wrote:It actually amounts to the same thing, as Sparkie's code is a bit of a cheat to remove the checkmark box from a treeview which does have the #TVS_CHECKBOXES style after all - which is a slight abuse!So I think that Freak's response already explains this one as PB just resets the imagestate icon in response to SetGadgetItemState(....#PB_Tree_Expanded) etc. i.e. in the absence of #PB_Tree_Checked.