Listicon header : captured or released
Posted: Tue Oct 12, 2004 7:06 am
Code updated for 5.20+
3 functions :
- listicon header : captured or released
(works with several listicon gadgets in the same window)
- resize correctly the last column
3 functions :
- listicon header : captured or released
(works with several listicon gadgets in the same window)
- resize correctly the last column
Code: Select all
; ----------------------
; resize last column of listicon
; ----------------------
Procedure ListIconLastColumnFixed(gadget)
col.LV_COLUMN\mask = #LVCF_WIDTH
Repeat
a+1:x=SendMessage_(GadgetID(gadget),#LVM_GETCOLUMN,a,@col)
Until x = 0
SendMessage_(GadgetID(gadget),#LVM_SETCOLUMNWIDTH, a-1,#LVSCW_AUTOSIZE_USEHEADER)
EndProcedure
; ----------------------
; return captured header, if not return zero
; ----------------------
Global LastListiconHeaderCaptured
Procedure.b ListIconHeaderCaptured(gadget)
Header = SendMessage_(GadgetID(gadget),$1000+31,0,0)
If GetCapture_()=Header
LastListiconHeaderCaptured=Header
ProcedureReturn LastListiconHeaderCaptured
EndIf
EndProcedure
; ----------------------
; return TRUE if mouse released listicon header
; ----------------------
Procedure.b ListIconHeaderReleased(gadget)
Header = SendMessage_(GadgetID(gadget),$1000+31,0,0)
;if listicon header was captured
If LastListiconHeaderCaptured=Header
;if it has been released
If GetCapture_()<>LastListiconHeaderCaptured
LastListiconHeaderCaptured=0
ProcedureReturn #True
EndIf
Else
ProcedureReturn #False
EndIf
EndProcedure
; ----------------------
; EXAMPLE
; ----------------------
OpenWindow(0,0,0,400,400, "Last Column Fixed",#PB_Window_SystemMenu)
Listbox = ListIconGadget(#PB_Any,10,10, 300, 300, "Test" ,70,#PB_ListIcon_FullRowSelect)
AddGadgetColumn(Listbox,1,"col",50)
AddGadgetColumn(Listbox,2,"col",50)
AddGadgetColumn(Listbox,3,"last col",50)
ListIconLastColumnFixed(Listbox)
AddGadgetItem(Listbox,-1,"cc")
Repeat
EventID = WaitWindowEvent()
;if listicon header is captured
If EventID=#WM_MOUSEMOVE
If ListIconHeaderCaptured(Listbox)
Debug "move header"
EndIf
EndIf
;if release listicon header
If EventID=#WM_LBUTTONUP
If ListIconHeaderReleased(Listbox)
ListIconLastColumnFixed(Listbox)
Debug "** release header **"
Debug "--> resize last column"
EndIf
EndIf
Until EventID = #PB_Event_CloseWindow