Est ce que qq sait comment ajouter une image à une tab du gadget PanelGadget ?
Por ceux qui connaissent l'interface de Kaspersky 5, j'aurai voulu faire une interface de ce type....


Code : Tout sélectionner
;=============================================================================== 
; Enable Images for a Panel Gadget 
; It can be enabled for as many PanelGadgets as needed 
; MaxItems is the maximum number of Items your PanelGadget will have. 
; If this returns 0, no Images can be added to the Panel 
Procedure EnablePanelImages(Gadget.l, MaxItems.l) 
  Protected hIml.l 
  hIml = ImageList_Create_(16, 16, #ILC_COLOR32|#ILC_MASK, MaxItems, MaxItems) 
  If hIml 
    SendMessage_(GadgetID(Gadget), #TCM_SETIMAGELIST, 0, hIml) 
    ProcedureReturn #TRUE 
  Else 
    ProcedureReturn #FALSE 
  EndIf 
EndProcedure 
; Add an Image to a Panel Item 
; You can call this Function again for the same Item, to set a new Image. 
Procedure SetPanelImage(Gadget.l, Position.l, ImageID.l) 
  Protected hIml.l, pitem.TC_ITEM 
  hIml = SendMessage_(GadgetID(Gadget), #TCM_GETIMAGELIST, 0,0) 
  pitem\imask = #TCIF_IMAGE 
  SendMessage_(GadgetID(Gadget), #TCM_GETITEM, Position, @pitem) 
  If pitem\iImage = 0 
    pitem\iImage = ImageList_AddIcon_(hIml, ImageID) 
  Else 
    pitem\iImage = ImageList_ReplaceIcon_(hIml, pitem\iImage, ImageID) 
  EndIf 
  SendMessage_(GadgetID(Gadget), #TCM_SETITEM, Position, @pitem) 
EndProcedure 
;=============================================================================== 
;- Code Example 
;=============================================================================== 
; Load needed Icons (change the Path for your PB dir) 
LoadImage(0, "C:\Program Files\PureBasic\Examples\Sources\Data\CdPlayer.ico") 
LoadImage(1, "C:\Program Files\PureBasic\Examples\Sources\Data\NewProject.ico") 
LoadImage(2, "C:\Program Files\PureBasic\Examples\Sources\Data\SaveProject.ico") 
#Panel = 1 
; Create Window 
OpenWindow(0,0,0,300,300,#PB_Window_SystemMenu|#PB_Window_Screencentered, "Panel Images") 
CreateGadgetList(WindowID()) 
; Create Panel 
PanelGadget(#Panel, 20, 20, 260, 260) 
  AddGadgetItem(#Panel, 0, "Item0") 
  AddGadgetItem(#Panel, 1, "Item1") 
  AddGadgetItem(#Panel, 2, "Item2")    
ClosePanelGadget() 
; Enable Images for this Panel (only 3 Items) 
If EnablePanelImages(#Panel, 3) 
  ; Add the loaded Icons to the Panel Items 
  SetPanelImage(#Panel, 0, UseImage(0)) 
  SetPanelImage(#Panel, 1, UseImage(1)) 
  SetPanelImage(#Panel, 2, UseImage(2))  
  
EndIf 
; Wait for Quit 
Repeat 
Until WaitWindowEvent() = #PB_EventCloseWindow 
End 
;===============================================================================Code : Tout sélectionner
Procedure EnablePanelImages(Gadget.l, MaxItems.l, Size.l)
  ; Active la possibilité de mettre une image dans un PanelGadget
  ; Gadget : Numéro du PanelGadget
  ; MaxItems : Nombre d'onglet du PanelGadget
  ; Size : Taille des images ou icones que l'on souhaite insérer dans le PanelGadget
  Protected hIml.l
  hIml = ImageList_Create_(Size, Size, #ILC_COLOR32 | #ILC_MASK, MaxItems, MaxItems)
  If hIml
    SendMessage_(GadgetID(Gadget), #TCM_SETIMAGELIST, 0, hIml)
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
EndProcedure
Procedure SetPanelImage(Gadget.l, Position.l, ImageID.l)
  ; Associer une image à un onglet du PanelGadget
  ; Gadget : Numéro du PanelGadget
  ; Position : Numéro de l'onglet (commence à 0)
  ; ImageID : Handle de l'image
  
  Protected hIml.l, pitem.TC_ITEM
  hIml = SendMessage_(GadgetID(Gadget), #TCM_GETIMAGELIST, 0, 0)
  pitem\mask = #TCIF_IMAGE
  SendMessage_(GadgetID(Gadget), #TCM_GETITEM, Position, @pitem)
  If pitem\iImage = 0
    pitem\iImage = ImageList_AddIcon_(hIml, ImageID)
  Else
    pitem\iImage = ImageList_ReplaceIcon_(hIml, pitem\iImage, ImageID)
  EndIf
  SendMessage_(GadgetID(Gadget), #TCM_SETITEM, Position, @pitem)
EndProcedure
;- Exemple
; Chargement des images
LoadImage(0, "C:\Program Files\PureBasic\Examples\Sources\Data\CdPlayer.ico")
LoadImage(1, "C:\Program Files\PureBasic\Examples\Sources\Data\NewProject.ico")
LoadImage(2, "C:\Program Files\PureBasic\Examples\Sources\Data\SaveProject.ico")
#Panel = 1
OpenWindow(0, 0, 0, 300, 300, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Panel Images")
CreateGadgetList(WindowID())
; Création du PanelGadget
PanelGadget(#Panel, 20, 20, 260, 260)
  AddGadgetItem(#Panel, 0, "Item0")
  AddGadgetItem(#Panel, 1, "Item1")
  AddGadgetItem(#Panel, 2, "Item2")
CloseGadgetList()
; On active le support des images pour le PanelGadget
If EnablePanelImages(#Panel, 3, 20)
  ; On met les images sur les onglets du PanelGadget
  SetPanelImage(#Panel, 0, UseImage(0))
  SetPanelImage(#Panel, 1, UseImage(1))
  SetPanelImage(#Panel, 2, UseImage(2))
EndIf
Repeat
  Event = WaitWindowEvent()
  
Until Event = #PB_EventCloseWindow

Code : Tout sélectionner
;- Exemple 
; Chargement des images 
LoadImage(0, "C:\Program Files\PureBasic\Examples\Sources\Data\CdPlayer.ico") 
LoadImage(1, "C:\Program Files\PureBasic\Examples\Sources\Data\NewProject.ico") 
LoadImage(2, "C:\Program Files\PureBasic\Examples\Sources\Data\SaveProject.ico") 
#Panel = 1 
OpenWindow(0, 0, 0, 300, 300, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Panel Images") 
CreateGadgetList(WindowID()) 
; Création du PanelGadget 
PanelGadget(#Panel, 20, 20, 260, 260) 
  AddGadgetItem(#Panel, 0, "Item0", UseImage(0)) 
  AddGadgetItem(#Panel, 1, "Item1", UseImage(1)) 
  AddGadgetItem(#Panel, 2, "Item2", UseImage(2)) 
CloseGadgetList() 
Repeat 
  Event = WaitWindowEvent() 
  
Until Event = #PB_EventCloseWindow 
 
   