Topic says all. I tried #PB_Tree_CheckBoxes but without success.
Any help is welcome.
Mike
Multiselection in Explorergadget
Multiselection in Explorergadget
Tranquil
As the name allready states, this flag us for the treegadget
There is no support for checkboxes in the explorer gadget.
However, you can easily add it like this:
Here's another example for ExplorerTreeGadget(), which i wrote a while
ago for the german forum:
Timo

There is no support for checkboxes in the explorer gadget.
However, you can easily add it like this:
Code: Select all
#LVM_SETEXTENDEDLISTVIEWSTYLE = #LVM_FIRST + 54
#LVS_EX_CHECKBOXES = 4
#Explorer = 0
#Button = 1
#List = 2
If OpenWindow(0, 0, 0, 600, 600, #PB_Window_Screencentered|#PB_Window_SystemMenu, "")
If CreateGadgetList(WindowID())
ExplorerListGadget(#Explorer, 5, 5, 590, 380, "C:\")
; Enable the checkboxes in the Explorergadget:
SendMessage_(GadgetID(#Explorer), #LVM_SETEXTENDEDLISTVIEWSTYLE, #LVS_EX_CHECKBOXES, #LVS_EX_CHECKBOXES)
; for the test
ButtonGadget(#Button, 5, 390, 80, 20, "Show selected")
ListViewGadget(#List, 5, 415, 590, 180)
Repeat
Event = WaitWindowEvent()
If Event = #PB_EventGadget And EventGadgetID() = #Button
ClearGadgetItemList(#List)
; loop through all displayed items
For i = 0 To CountGadgetItems(#Explorer)-1
; get the checkbox state
state = SendMessage_(GadgetID(#Explorer), #LVM_GETITEMSTATE, i, #LVIS_STATEIMAGEMASK)
If state >> 12 > 1
; checkbox is checked
AddGadgetItem(#List, -1, GetGadgetText(#Explorer)+GetGadgetItemText(#Explorer, i, 0))
EndIf
Next i
EndIf
Until Event = #PB_EventCloseWindow
EndIf
EndIf
End
Here's another example for ExplorerTreeGadget(), which i wrote a while
ago for the german forum:
Code: Select all
#FileTree = 1
#List = 2
#Button = 3
#TVS_CHECKBOXES = $100
; rekursiver scan durch das explorertreegadget:
Procedure ScanTree(hItem)
hItem = SendMessage_(GadgetID(#FileTree), #TVM_GETNEXTITEM, #TVGN_CHILD, hItem)
While hItem
; daten über das item lesen
item.TV_ITEM\mask = #TVIF_CHILDREN|#TVIF_HANDLE|#TVIF_STATE
item\hItem = hItem
item\statemask = #TVIS_STATEIMAGEMASK
SendMessage_(GadgetID(#FileTree), #TVM_GETITEM, 0, @item)
; ist die checkbox gesetzt??
If ((item\state >> 12) -1)
; item selektieren, um per GetGAdgetText(#FileTree) den pfad zu bekommen
SendMessage_(GadgetID(#FileTree), #TVM_SELECTITEM, #TVGN_CARET, hItem)
; Pfad abspeichern
AddGadgetItem(#List, -1, GetGadgetText(#FileTree))
EndIf
; wenn das item childitems hat, suche dort fortsetzen:
If item\cChildren > 0
ScanTree(hItem)
EndIf
; nextes item
hItem = SendMessage_(GadgetID(#FileTree), #TVM_GETNEXTITEM, #TVGN_NEXT, hItem)
Wend
EndProcedure
If OpenWindow(0, 0, 0, 300, 600, #PB_Window_SystemMenu|#PB_Window_Screencentered, "Path Requester")
If CreateGadgetList(WindowID())
ExplorerTreeGadget(#FileTree, 5, 5, 290, 275, "", #PB_Explorer_NoFiles)
; checkboxes aktivieren
styles = GetWindowLong_(GadgetID(#FileTree), #GWL_STYLE)
SetWindowLong_(GadgetID(#FileTree), #GWL_STYLE, styles | #TVS_CHECKBOXES)
ButtonGadget(#Button, 215, 285, 80, 20, "Ok")
ListViewGadget(#List, 5, 310, 290, 285)
Repeat
Event = WaitWindowEvent()
If Event = #PB_EventGadget And EventGadgetID() = #Button
ClearGadgetItemList(#List)
; das selektierte item wird beim scan verändert -> abspeichern
selected = SendMessage_(GadgetID(#FileTree), #TVM_GETNEXTITEM, #TVGN_CARET, 0)
; suche beim root item starten
root = SendMessage_(GadgetID(#FileTree), #TVM_GETNEXTITEM, #TVGN_ROOT, 0)
; rekursiven scan durch alle items und childitems
ScanTree(root)
; selektiertes item zurücksetzen
SendMessage_(GadgetID(#FileTree), #TVM_SELECTITEM, #TVGN_CARET, selected)
EndIf
Until Event = #PB_EventCLoseWindow
EndIf
EndIf
End
Timo
quidquid Latine dictum sit altum videtur
freak wrote:As the name allready states....
Freak, In your second code, are there any option to select all child (and subchild) items when a CheckBox of an object is checked?.
Thank you
PB 6.21 beta, PureVision User