ListIcon drag to select multiple rows
Posted: Wed Sep 25, 2013 6:04 pm
ListIconGadget() Drag mouse to select multiple rows, as you can with a ListView?
http://www.purebasic.com
https://www.purebasic.fr/english/
Code: Select all
Procedure ListHandler(hwnd, msg, wparam, lparam)
oldproc = GetProp_(hwnd, "oldproc")
Select msg
Case #WM_NCDESTROY
RemoveProp_(hwnd, "oldproc")
Case #WM_MOUSEMOVE
If GetAsyncKeyState_(#VK_LBUTTON) & $8000
With lvh.LVHITTESTINFO
\pt\x = lparam&$FFFF
\pt\y = lparam>>16
EndWith
SendMessage_(GadgetID(0), #LVM_HITTEST, 0, @lvh)
SetGadgetItemState(GetDlgCtrlID_(hwnd), lvh\iItem, 1)
EndIf
EndSelect
ProcedureReturn CallWindowProc_(oldproc, hwnd, msg, wparam, lparam)
EndProcedure
If OpenWindow(0, 0, 0, 270, 240, "ListIconGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0, 10, 10, 250, 230,"col 0", 100,#PB_ListIcon_FullRowSelect|#PB_ListIcon_MultiSelect)
SetProp_(GadgetID(0), "oldproc", SetWindowLongPtr_(GadgetID(0), #GWL_WNDPROC, @ListHandler()))
AddGadgetColumn(0, 1,"col 1",165)
For a = 1 To 12
AddGadgetItem (0, -1, "Item " + Str(a)+Chr(10)+"More Item "+Str(a)) ; define listview content
Next
SetActiveGadget(0)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Code: Select all
IconGadget(0, 10, 10, 250, 230,"col 0", 100,#PB_ListIcon_FullRowSelect|#PB_ListIcon_MultiSelect|#PB_ListIcon_CheckBoxes)Code: Select all
SetGadgetItemState(GetDlgCtrlID_(hwnd), lvh\iItem, #PB_ListIcon_Checked|#PB_ListIcon_Selected)Code: Select all
Procedure ListHandler(hwnd, msg, wparam, lparam)
oldproc = GetProp_(hwnd, "oldproc")
Select msg
Case #WM_NCDESTROY
RemoveProp_(hwnd, "oldproc")
Case #WM_MOUSEMOVE
If GetAsyncKeyState_(#VK_LBUTTON) & $8000
With lvh.LVHITTESTINFO
\pt\x = lparam&$FFFF
\pt\y = lparam>>16
EndWith
SendMessage_(GadgetID(0), #LVM_HITTEST, 0, @lvh)
If Not lvh\flags & #LVHT_ONITEMSTATEICON
SetGadgetItemState(GetDlgCtrlID_(hwnd), lvh\iItem, #PB_ListIcon_Checked|#PB_ListIcon_Selected)
EndIf
EndIf
EndSelect
ProcedureReturn CallWindowProc_(oldproc, hwnd, msg, wparam, lparam)
EndProcedure
If OpenWindow(0, 0, 0, 270, 240, "ListIconGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIconGadget(0, 10, 10, 250, 230,"col 0", 100,#PB_ListIcon_FullRowSelect|#PB_ListIcon_MultiSelect|#PB_ListIcon_CheckBoxes)
SetProp_(GadgetID(0), "oldproc", SetWindowLongPtr_(GadgetID(0), #GWL_WNDPROC, @ListHandler()))
AddGadgetColumn(0, 1,"col 1",165)
For a = 1 To 12
AddGadgetItem (0, -1, "Item " + Str(a)+Chr(10)+"More Item "+Str(a)) ; define listview content
Next
SetActiveGadget(0)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf