Thanks guys, glad to hear it works for you.
As for using x's in place of checkmarks, this seems to work ok. I'm not very good with 2DDrawing so I'm sure this can be optimized. If nothing else, it gives you a start in the right direction
Code: Select all
If OpenWindow(0, 0, 0, 270, 150, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "ListIconGadget") And CreateGadgetList(WindowID(0))
ListIconGadget(0, 10, 10, 250, 125, "Testing", 200, #PB_ListIcon_CheckBoxes)
For a = 0 To 12
addtext$ = "Item index #" + Str(a) + " in the ListIconGadget"
AddGadgetItem(0, -1, addtext$)
Next
; --> Create our checked checkbox image with red x
itemChecked = CreateImage(0, 16, 16)
StartDrawing(ImageOutput())
Box(0, 0, 16, 16, RGB(255, 255, 255))
Box(1, 1, 14, 14, RGB(0, 0, 0))
Box(3, 3, 10, 10, RGB(255, 255, 255))
; --> red line top left to bottom right
LineXY(4, 4, 11, 11, RGB(255, 0, 0))
LineXY(5, 4, 11, 10, RGB(255, 0, 0))
LineXY(4, 5, 10, 11, RGB(255, 0, 0))
; --> red line bottom left to top right
LineXY(4, 11, 11, 4, RGB(255, 0, 0))
LineXY(4, 10, 10, 4, RGB(255, 0, 0))
LineXY(5, 11, 11, 5, RGB(255, 0, 0))
StopDrawing()
; --> Create our un-checked checkbox image with no red x
itemUnchecked = CreateImage(1, 16, 16)
StartDrawing(ImageOutput())
Box(0, 0, 16, 16, RGB(255, 255, 255))
Box(1, 1, 14, 14, RGB(0, 0, 0))
Box(3, 3, 10, 10, RGB(255, 255, 255))
StopDrawing()
; --> Create our new state imagelist for ListIconGadget
stateImageList= ImageList_Create_(16, 16, #ILC_COLOR32, 0, 2)
ImageList_Add_(stateImageList, itemUnchecked, 0)
ImageList_Add_(stateImageList, itemChecked, 0)
SendMessage_(GadgetID(0), #LVM_SETIMAGELIST, #LVSIL_STATE, stateImageList)
; --> Remove checkboxes for items 2, 3, 4
For i = 2 To 4
lv.LV_ITEM\mask = #LVIF_STATE
lv\iItem = i
lv\state = 0 << 12
lv\stateMask = #LVIS_STATEIMAGEMASK
SendMessage_(GadgetID(0), #LVM_SETITEMSTATE, i, lv)
Next
Repeat
event = WaitWindowEvent()
Select event
Case #PB_EventGadget
Select EventGadgetID()
Case 0
; --> Remove checkboxes for items 2, 3, 4
For i = 2 To 4
SendMessage_(GadgetID(0), #LVM_SETITEMSTATE, i, lv)
Next
EndSelect
EndSelect
Until event =# PB_Event_CloseWindow
EndIf
End