; Title : Ajout d'images ou d'icônes dans une ListIconGadget()
; Autor : Denis
UseJPEGImageDecoder()
UsePNGImageDecoder()
Enumeration
#FenetrePrincipale
#ListIconGadget1
#Image
EndEnumeration
Enumeration
#MenuImporterTiles
#MenuQuitter
#MenuAProposDe
EndEnumeration
Procedure AddItem(gadget.l, Row.l, Column.l, Text$, ImageIndex.l)
; add an item with an image from the ListImage or a subitem without image
; put -1 to ImageIndex to not display Image
; fill up var to set subitem icon and text
var.LVITEM
var\Mask = #LVIF_IMAGE | #LVIF_TEXT
var\iItem = Row ; row number
var\iSubItem = Column ; subitem
var\pszText = @Text$ ; text to set
var\iImage = ImageIndex ; index of icon in the list
; set text + icon in the listicongadget item/subitem
If Column
SendMessage_(GadgetID(gadget), #LVM_SETITEM, 0, @var)
Else
SendMessage_(GadgetID(gadget), #LVM_INSERTITEM, 0, @var)
EndIf
SetGadgetItemText(#ListIconGadget1, row, text$, 1)
EndProcedure
Procedure Importer()
Static Hwnd_ListSmall
NomFichier$ = OpenFileRequester("Importe Tiles", "", "Fichiers Images|*.BMP;*.PNG;*.JPG" , 0, #PB_Requester_MultiSelection)
If NomFichier$ ; teste si la chaine existe
Repeat
Fichier$ = GetFilePart(NomFichier$) ; récupère seulement le nom de fichier
If LoadImage(1, NomFichier$)
; modif de dernière minute , avant le create image était en dehors de la procedure !
If CountGadgetItems(#ListIconGadget1)= 0
; create an Image List : first And second param are icon size
Hwnd_ListSmall = ImageList_Create_(ImageWidth(1), ImageHeight(1), #ILC_MASK | #ILC_COLOR32, 0, 30)
; assign the image list to the ListIconGadget
SendMessage_(GadgetID(#ListIconGadget1), #LVM_SETIMAGELIST, #LVSIL_SMALL, Hwnd_ListSmall)
EndIf
IndexImage = ImageList_Add_(Hwnd_ListSmall, ImageID(1), 0)
Debug CountGadgetItems(#ListIconGadget1)
Debug IndexImage
AddItem(#ListIconGadget1, CountGadgetItems(#ListIconGadget1), 0, Fichier$, IndexImage)
FreeImage(1)
EndIf
NomFichier$ = NextSelectedFileName()
Until NomFichier$ = ""
EndIf
EndProcedure
; ***************************************************************************
If OpenWindow(#FenetrePrincipale, 0, 0, 420, 300, "", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
If CreateGadgetList(WindowID(#FenetrePrincipale))
ListIconGadget(#ListIconGadget1, 10, 55, 400, 236, "Tiles", 398 / 5 + 70, #PB_ListIcon_FullRowSelect )
AddGadgetColumn(#ListIconGadget1, 1, "Column", 65)
;/ un petit menu
If CreateMenu(0, WindowID(#FenetrePrincipale))
MenuTitle("Fichier")
MenuItem(#MenuImporterTiles, "Importer Tiles...")
MenuItem(#MenuQuitter, "Quitter")
MenuTitle("Aide")
MenuItem(#MenuAProposDe, "A propos de...")
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Menu
Select EventMenu()
;/Partie
Case #MenuQuitter : Quit = 1
Case #MenuImporterTiles
Importer()
EndSelect
EndSelect
Until Quit
EndIf
EndIf
ImageList_Destroy_(Hwnd_ListSmall)
End