[SOLVED] Prevent a ListIcon column from being moved before or after another column ?
Posted: Fri Sep 06, 2024 11:54 pm
Hello,
In a ListIcon() with the #PB_ListIcon_HeaderDragDrop flag, I know how to prevent, with a callback and #HDN_BEGINDRAG, a column from being dragged, but is it possible to prevent a column from being dragged before (or after) another column?
E.g. Column 2 can be moved to position 1, but not to position 0.
Here, a part of my code:
Thanks for your help.
In a ListIcon() with the #PB_ListIcon_HeaderDragDrop flag, I know how to prevent, with a callback and #HDN_BEGINDRAG, a column from being dragged, but is it possible to prevent a column from being dragged before (or after) another column?
E.g. Column 2 can be moved to position 1, but not to position 0.
Here, a part of my code:
Code: Select all
Procedure.i Pc_FenPrincipale_Callback(ArgHwnd.i,ArgMsg.i,ArgWParam.i,ArgLParam.i)
Protected.NMHDR *NMHDR
Protected.NMHEADER *NMHEADER
Protected.NM_LISTVIEW *NMLISTVIEW
Select ArgMsg
Case #WM_NOTIFY
*NMHDR=ArgLParam
*NMLISTVIEW=ArgLParam
*NMHEADER=ArgLParam
Select *NMHDR\code
Case #HDN_BEGINDRAG
If *NMLISTVIEW\iItem=0 ; Block column 0 dragging
SetCapture_(0)
ProcedureReturn 1
EndIf
; Something here?
; I can't find the column number where the new position would be.
Case #HDN_ENDDRAG
; Something here?
; I can't find the column number where the new position would be.
Case #HDN_BEGINTRACK ; Block resize columns
If *NMHDR\hwndFrom=SendMessage_(GadgetID(0),#LVM_GETHEADER,0,0)
*NMHEADER=ArgLParam
If *NMHEADER\iItem=0:ProcedureReturn #True:EndIf
ProcedureReturn #False
EndIf
EndSelect
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure