anyone knows how they work?, at msdn in the LVM_INSERTGROUP says you can't insert a group in a empty listview. how are you suposed to work?, insert item, insert group, insert item in group? sounds like crap, any hint?
http://msdn.microsoft.com/library/en-us ... tgroup.asp
Using listview groups?
One year late, but here's some code to get you started. This is my first attempt at ListIconGadget Groups, so there's plenty room for improvement. 
WinXP with Skins enabled is Required.

WinXP with Skins enabled is Required.
Code: Select all
; *****************************************************************
; ************ Requires WinXP with Skins enabled ******************
; *****************************************************************
#LVM_FIRST = $1000
#LVM_SETGROUPMETRICS = #LVM_FIRST + 155
#LVM_ENABLEGROUPVIEW = #LVM_FIRST + 157
#LVM_INSERTGROUP = #LVM_FIRST + 145
#LVGF_HEADER = 1
#LVGF_ALIGN = 8
#LVGF_STATE = 4
#LVGF_GROUPID = $10
#LVGMF_BORDERCOLOR = 2
#LVGMF_BORDERSIZE = 1
#LVGMF_NONE = 0
#LVGMF_TEXTCOLOR = 4
#LVGA_HEADER_CENTER = 2
#LVGA_HEADER_LEFT = 1
#LVGA_HEADER_RIGHT = 4
#LVIF_GROUPID = $100
#LVIF_IMAGE = 2
#LVIF_TEXT = 1
; --> Structure used tp define Group
Structure myLVGROUP
cbSize.l
mask.l
pszHeader.l
cchHeader.l
pszFooter.l
cchFooter.l
iGroupId.l
stateMask.l
state.l
uAlign.l
EndStructure
lvGroup.myLVGROUP
; --> Structure used for placing item into it's Group
Structure myLVITEM
mask.l
iItem.l
iSubItem.l
state.l
stateMask.l
pszText.l
cchTextMax.l
iImage.l
lParam.l
iIndent.l
iGroupId.l
cColumns.l
puColumns.l
EndStructure
lvitemgroup.myLVITEM
; --> Structure used for changing Group colors
Structure myLVGROUPMETRICS
cbSize.l
mask.l
left.l
top.l
right.l
bottom.l
crLeft.l
crTop.l
crRight.l
crBottom.l
crHeader.l
crFooter.l
EndStructure
lvGM.myLVGROUPMETRICS
; --> Create 3 Group images
redImg = CreateImage(0, 16, 16)
StartDrawing(ImageOutput())
Box(0, 0, 16, 16, RGB(255, 0, 0))
StopDrawing()
greenImg = CreateImage(1, 16, 16)
StartDrawing(ImageOutput())
Box(0, 0, 16, 16, RGB(0, 255, 0))
StopDrawing()
blueImg = CreateImage(2, 16, 16)
StartDrawing(ImageOutput())
Box(0, 0, 16, 16, RGB(0, 0, 255))
StopDrawing()
If OpenWindow(0, 0, 0, 500, 300, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "ListIconGadget Groups") And CreateGadgetList(WindowID(0))
ListIconGadget(0, 10, 10, 480, 280, "", 200)
ChangeListIconGadgetDisplay(0, 1)
For i = 0 To 3
item$ = "Item " + Str(i)
AddGadgetItem(0 , i, item$, redImg)
Next i
For i = 4 To 7
item$ = "Item " + Str(i)
AddGadgetItem(0 , i, item$, greenImg)
Next i
For i = 8 To 11
item$ = "Item " + Str(i)
AddGadgetItem(0 , i, item$, blueImg)
Next i
; --> Enable Group view
SendMessage_(GadgetID(0), #LVM_ENABLEGROUPVIEW , #True, 0)
lvGroup\cbSize = SizeOf(myLVGROUP)
lvGroup\mask = #LVGF_HEADER | #LVGF_GROUPID | #LVGF_ALIGN
; --> Create Group 0
group$ = "Red Group"
sLen = MultiByteToWideChar_(#CP_ACP, 0, group$, -1, 0, 0)
GroupName$ = Space(sLen*2)
MultiByteToWideChar_(#CP_ACP, 0, group$, -1, @GroupName$, sLen)
lvGroup\pszHeader = @GroupName$
lvGroup\cchHeader = sLen*2
lvGroup\iGroupId = 0
lvGroup\uAlign = #LVGA_HEADER_LEFT
SendMessage_(GadgetID(0), #LVM_INSERTGROUP, 0, lvGroup)
; --> Create Group 1
group$ = "Green Group"
sLen = MultiByteToWideChar_(#CP_ACP, 0, group$, -1, 0, 0)
GroupName$ = Space(sLen*2)
MultiByteToWideChar_(#CP_ACP, 0, group$, -1, @GroupName$, sLen)
lvGroup\pszHeader = @GroupName$
lvGroup\cchHeader = sLen*2
lvGroup\iGroupId = 1
lvGroup\uAlign = #LVGA_HEADER_LEFT
SendMessage_(GadgetID(0), #LVM_INSERTGROUP, 1, lvGroup)
; --> Create Group 2
group$ = "Blue Group"
sLen = MultiByteToWideChar_(#CP_ACP, 0, group$, -1, 0, 0)
GroupName$ = Space(sLen*2)
MultiByteToWideChar_(#CP_ACP, 0, group$, -1, @GroupName$, sLen)
lvGroup\pszHeader = @GroupName$
lvGroup\cchHeader = sLen*2
lvGroup\iGroupId = 2
lvGroup\uAlign = #LVGA_HEADER_LEFT
SendMessage_(GadgetID(0), #LVM_INSERTGROUP, 2, lvGroup)
; --> Change Group header text color
; --> AFAIK, Group Metrics applies to all Groups
lvGM\cbSize = SizeOf(myLVGROUPMETRICS)
lvGM\mask = #LVGMF_TEXTCOLOR
lvGM\crHeader = RGB(100, 50, 100)
SendMessage_(GadgetID(0), #LVM_SETGROUPMETRICS, 0, lvGM)
; --> Place items 0 - 3 into Group 0
For r = 0 To 3
lvitemgroup\mask = #LVIF_GROUPID
lvitemgroup\iItem = r
lvitemgroup\iGroupId = 0
SendMessage_(GadgetID(0), #LVM_SETITEM, r, lvitemgroup)
Next r
; --> Place items 4 - 7 into Group 1
For g = 4 To 7
lvitemgroup\mask = #LVIF_GROUPID
lvitemgroup\iItem = g
lvitemgroup\iGroupId = 1
SendMessage_(GadgetID(0), #LVM_SETITEM, g, lvitemgroup)
Next g
; --> Place items 8 - 11 into Group 2
For b = 8 To 11
lvitemgroup\mask = #LVIF_GROUPID
lvitemgroup\iItem = b
lvitemgroup\iGroupId = 2
SendMessage_(GadgetID(0), #LVM_SETITEM, b, lvitemgroup)
Next b
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
What goes around comes around.
PB 5.21 LTS (x86) - Windows 8.1
PB 5.21 LTS (x86) - Windows 8.1