;Autor: Stefan 'wayne-c' Christen EnableExplicit Define EventID Define g Define i #LVM_ENABLEGROUPVIEW = #LVM_FIRST + 157 #LVM_MOVEITEMTOGROUP = #LVM_FIRST + 154 #LVM_INSERTGROUP = #LVM_FIRST + 145 #LVIF_GROUPID = $0100 #LVGA_HEADER_LEFT = $1 #LVGA_HEADER_CENTER = $2 #LVGA_HEADER_RIGHT = $4 #LVGS_NORMAL = $0 #LVGS_COLLAPSED = $1 #LVGS_HIDDEN = $2 #LVGF_HEADER = $1 #LVGF_FOOTER = $2 #LVGF_STATE = $4 #LVGF_ALIGN = $8 #LVGF_GROUPID = $10 Procedure StringToUnicode(pbstrptr.l, ucstrptr.l) MultiByteToWideChar_ (#CP_ACP, 0, pbstrptr, Len(PeekS(pbstrptr)), ucstrptr, Len(PeekS(ucstrptr))) PokeL( ucstrptr + Len(PeekS(pbstrptr))*2, 0) EndProcedure Procedure ListIcon_AddGroup(gadget.l, text.s, groupid.l) Protected lvg.LVGROUP Protected text_uc.s lvg.LVGROUP\cbSize = SizeOf(LVGROUP) lvg\mask = #LVGF_GROUPID | #LVGF_ALIGN | #LVGF_HEADER lvg\iGroupId = groupid lvg\uAlign = #LVGA_HEADER_LEFT text_uc.s = Space(260) StringToUnicode(@text, @text_uc) lvg\pszHeader = @text_uc SendMessage_ (GadgetID(gadget), #LVM_INSERTGROUP, -1, @lvg) EndProcedure Procedure ListIcon_EnableGroupView(gadget.l, state.l) SendMessage_ (GadgetID(gadget), #LVM_ENABLEGROUPVIEW, state, 0) EndProcedure Procedure ListIcon_AddItem(gadget.l, text.s, groupid.l) Protected itm.LVITEM itm.LVITEM\mask = #LVIF_TEXT | #LVIF_GROUPID itm\pszText = @text itm\iGroupId = groupid SendMessage_ (GadgetID(gadget), #LVM_INSERTITEM, 0, @itm) EndProcedure If OpenWindow(0,0,0,500,400,"Window",#PB_Window_SystemMenu|#PB_Window_ScreenCentered) ListIconGadget(1,10,10,WindowWidth(0)-20,WindowHeight(0)-20,"Spalte",400,0) ListIcon_EnableGroupView(1, 1) For g=1 To 5 ListIcon_AddGroup(1, "This is group "+Str(g), g) For i=1 To 5 ListIcon_AddItem(1, "Item "+Str((g-1)*5+i)+" belongs to group "+Str(g), g) Next Next Repeat EventID=WaitWindowEvent() If EventID = #PB_Event_CloseWindow End EndIf ForEver EndIf