
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