N'ayant pas trouvé d'équivalent, et voulant pouvoir checker un a un les elements tout en en selectionant d'autres en même temps, je suis parti d'un code de SPARKIE
http://www.purebasic.fr/english/viewtop ... 829#p83829
Et j'ai commis ça:
Code : Tout sélectionner
Global OnlyOneCheck
Enumeration
#Form0
#ListIcon0
EndEnumeration
Procedure Callback(hWnd, msg, wParam, lParam)
Static ElementChecked, ElementSelected, ElementUnChecked, Lock
Result = #PB_ProcessPureBasicEvents
Select msg
Case #WM_NOTIFY
If OnlyOneCheck And Not Lock
*pnmhdr.NMHDR = lParam
If *pnmhdr\code = #LVN_ITEMCHANGED
*lvChange.NMLISTVIEW = lParam
If *lvChange\uNewState >>12 & $FFFF = 2
ElementSelected = GetGadgetState(#ListIcon0)
ElementChecked = *lvChange\iItem
Lock = #True
For i = 0 To CountGadgetItems(#ListIcon0) - 1
SetGadgetItemState(#ListIcon0, i, #False)
Next
If ElementSelected = ElementChecked
SetGadgetItemState(#ListIcon0, ElementChecked, #PB_ListIcon_Checked|#PB_ListIcon_Selected)
Else
SetGadgetItemState(#ListIcon0, ElementChecked, #PB_ListIcon_Checked)
If ElementSelected <> -1
SetGadgetItemState(#ListIcon0, ElementSelected, #PB_ListIcon_Selected)
EndIf
EndIf
Lock = #False
EndIf
EndIf
EndIf
EndSelect
ProcedureReturn Result
EndProcedure
OpenWindow(#Form0, 679, 120, 180, 214, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
ListIconGadget(#ListIcon0, 10, 10, 160, 187, "Column0", 100, #PB_ListIcon_CheckBoxes)
SetWindowCallback(@Callback())
For i = 1 To 5
AddGadgetItem(#ListIcon0, -1, "Item n° "+ Str(i))
Next
SetGadgetItemState(#ListIcon0, ElementChecked, #PB_ListIcon_Checked) ; Juste pour commencer avec un element checké
OnlyOneCheck = #True ; Commenter cette ligne pour pouvoir checker plusieurs elements en même temps (Fonctionnement normal)
Repeat
Evenement = WaitWindowEvent()
Until Evenement = #PB_Event_CloseWindow
