ListIconGadget mit GruppenBild

Für allgemeine Fragen zur Programmierung mit PureBasic.
canrap
Beiträge: 14
Registriert: 08.08.2011 15:30

ListIconGadget mit GruppenBild

Beitrag von canrap »

Hey Leute :)

Ich versuch jetz schon seit längerer Zeit meine Gruppen mit Bildern auszustatten, aber es will mal wieder einfach nicht klappen :(
Es scheitert schon, wenn ich versuche meinem ListIconGadget eine LVSIL_GROUPHEADER Imagelist unterzuschieben, mit allen anderen Konstanten funktionierts, nur eben nicht mit dieser.

Hier mal ein Beispiel:

Code: Alles auswählen

If OpenWindow(0,0,0,270,140,"ListViewGadget",#PB_Window_SystemMenu)
  ListIconGadget(0,10,10,250,120,"",100)
  LoadImage(0,#PB_Compiler_Home + "Examples\Sources\Data\CdPlayer.ico")
  hImageList = ImageList_Create_(16,16,#ILC_COLOR32 | #ILC_MASK,0,1)
  Icon = ImageList_AddIcon_(hImageList,ImageID(0))
  Test = SendMessage_(GadgetID(0),#LVM_SETIMAGELIST,2,hImageList);Mit der 3 für LVSIL_Groupheader funktionierts garnicht
  MessageRequester("",Str(Test))
  Test = SendMessage_(GadgetID(0),#LVM_SETIMAGELIST,2,hImageList)
  MessageRequester("",Str(Test))
  
  For a=1 To 12
    AddGadgetItem (0,-1,"Item "+Str(a)+" of the Listview")
  Next
  
  Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
Wobei mir hier direkt auffällt das ich aufeinmal zweimal Sendmessage aufrufen muss, bis die ImageList hinzugefügt wird :freak:

Hättet ihr vielleicht irgendwelche Ideen?

Danke schonmal :) und nen schönen Abend
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: ListIconGadget mit GruppenBild

Beitrag von RSBasic »

Sorry, ich weiß grad nicht, was du möchtest. Möchtest du GroupView-Ansicht hinzufügen + Icon?
Also etwa so?

Code: Alles auswählen

EnableExplicit

Define EventID
Define g
Define i
Define hImageList
Define Icon

#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)
  
  LoadImage(0,#PB_Compiler_Home + "Examples\Sources\Data\CdPlayer.ico")
  hImageList = ImageList_Create_(16,16,#ILC_COLOR32 | #ILC_MASK,0,1)
  Icon = ImageList_AddIcon_(hImageList,ImageID(0))
  
  SendMessage_(GadgetID(1), #LVM_SETIMAGELIST, #LVSIL_SMALL, hImageList)
  
  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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
canrap
Beiträge: 14
Registriert: 08.08.2011 15:30

Re: ListIconGadget mit GruppenBild

Beitrag von canrap »

Das wars fast, aber aufeinmal scheint das Problem von allein verschwunden zu sein :?

Ich danke dir :)
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: ListIconGadget mit GruppenBild

Beitrag von RSBasic »

@canrap
Ich weiß zwar nicht, ob du dein Problem bereits behoben hast (mit dem Group-Icon), aber ich kann dir nur ein paar Hinweise geben.
Die von PB bereitgestellte Struktur "LVGROUP" ist unvollständig: http://msdn.microsoft.com/en-us/library ... 85%29.aspx
Erstell am besten eine neue Struktur, z.B. mit dem Namen "LVGROUPEX".
Auf der MSDN-Seite wird auch ein Eintrag aufgeführt namens "iTitleImage". Das ist glaube ich das, was du suchst. Es ist aber erst ab Vista verfügbar.
Außerdem habe ich auch ein Beispielcode gefunden und zwar: http://pages.videotron.com/lyra/PowerBA ... iew02.html
Vielleicht hilft dir das bei der Umsetzung. Viel Erfolg. ;)
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Antworten