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