vielleicht kann mir jemand helfen: Das Beispiel von RSBasic's Seite funktioniert nicht. EnableGroupView geht, aber beim Erstellen von Gruppen oder einfügen von Items liefert sendmessage immer -1, also Fehler. Ich kann aber nirgendwo einen Fehler finden.
Code: Alles auswählen
;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