Publié : mar. 13/déc./2005 19:27
Je vais voir ce que je peux faire!
Forums PureBasic - Français
https://www.purebasic.fr/french/
Code : Tout sélectionner
Structure TVITEMEX
mask.l
hItem.l
state.l
stateMask.l
pszText.l
cchTextMax.l
iImage.l
iSelectedImage.l
cChildren.l
lParam.l
iIntegral.l
EndStructure
Global himl,himl_origine,himl2,himl_origine2
Procedure Creation_Imagelist_Icon(ID_Gadget.l)
himl=ImageList_Create_(16, 16 , #ILC_COLOR24| #ILC_MASK,0, 0)
himl_origine = SendMessage_(GadgetID(ID_Gadget.l),#TVM_GETIMAGELIST,#TVSIL_NORMAL,0)
SendMessage_(GadgetID(ID_Gadget.l),#TVM_SETIMAGELIST,#TVSIL_NORMAL,himl)
LoadImage(0, "c:\Icon.ico")
LoadImage(1, "c:\Icon2.ico")
LoadImage(2, "c:\Icon3.ico")
For Index=0 To 2
geticoninfo_(UseImage(Index), @ICONINFO.ICONINFO)
ImageList_Add_(himl,ICONINFO\hbmColor,ICONINFO\hbmMask)
FreeImage(Index)
Next
EndProcedure
Procedure Creation_Imagelist_Image(ID_Gadget.l)
himl2=ImageList_Create_(64, 12 , #ILC_COLOR24,0, 0)
himl_origine2 = SendMessage_(GadgetID(ID_Gadget.l),#TVM_GETIMAGELIST,#TVSIL_STATE,0)
SendMessage_(GadgetID(ID_Gadget.l),#TVM_SETIMAGELIST,#TVSIL_STATE,himl2)
For Image=0 To 8
Index=CreateImage(#PB_Any,64,12)
If Index
StartDrawing(ImageOutput())
Box(0,0,64,12,RGB(255,0,0))
Box(0,0,x,12,RGB(0,0,255))
StopDrawing()
EndIf
ImageList_Add_(himl2,UseImage(Index),0)
If Image=0
;cette image ne servira pas
ImageList_Add_(himl2,UseImage(Index),0)
EndIf
FreeImage(Index)
x=x+64/8
Next Image
EndProcedure
Procedure Attach_Icon(ID_Gadget.l,Index_Item.l,Index_Icon.b)
hItem=GadgetItemID(ID_Gadget,Index_Item)
LPTVITEMEX.TVITEMEX
LPTVITEMEX\mask=#TVIF_IMAGE|#TVIF_SELECTEDIMAGE|#TVIF_HANDLE
LPTVITEMEX\hItem=hItem
LPTVITEMEX\iImage=Index_Icon
LPTVITEMEX\iSelectedImage=Index_Icon
lResult = SendMessage_(GadgetID(ID_Gadget),#TVM_SETITEM,0,LPTVITEMEX)
EndProcedure
Procedure Attach_Image(ID_Gadget.l,Index_Item.l,Index_Image.b)
hItem=GadgetItemID(ID_Gadget,Index_Item)
LPTVITEMEX.TVITEMEX
LPTVITEMEX\mask=#TVIF_HANDLE|#TVIF_STATE
LPTVITEMEX\hItem=hItem
LPTVITEMEX\stateMask=#TVIS_STATEIMAGEMASK
LPTVITEMEX\state=Index_Image<<12
lResult = SendMessage_(GadgetID(ID_Gadget),#TVM_SETITEM,0,LPTVITEMEX)
EndProcedure
If OpenWindow(0,0,0,370,180,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"TreeGadget") And CreateGadgetList(WindowID(0))
TreeGadget(0, 10,10,300,160)
AddGadgetItem (0, -1, "Normal Item")
AddGadgetItem (0, -1, "Node")
OpenTreeGadgetNode(0)
AddGadgetItem(0, -1, "Sub-Item 1")
AddGadgetItem(0, -1, "Sub-Item 2")
AddGadgetItem(0, -1, "Sub-Item 3")
AddGadgetItem(0, -1, "Sub-Item 4")
CloseTreeGadgetNode(0)
AddGadgetItem (0, -1, "File")
AddGadgetItem (0, -1, "File")
Creation_Imagelist_Image(0)
;l'index_icon doit commencer à 1
;un 0 signifie qu'il n'y a plus d'image associée
Attach_Image(0,0,4)
Attach_Image(0,1,4)
Attach_Image(0,2,6)
Creation_Imagelist_Icon(0)
;Par défaut tous les items auront l'icone d'index 0
Attach_Icon(0,0,0)
Attach_Icon(0,1,1)
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
ImageList_Destroy_(himl)
ImageList_Destroy_(himl2)
Code : Tout sélectionner
Attach_Image(0,1,4)
Code : Tout sélectionner
Structure TVITEMEX
mask.l
hItem.l
state.l
stateMask.l
pszText.l
cchTextMax.l
iImage.l
iSelectedImage.l
cChildren.l
lParam.l
iIntegral.l
EndStructure
Global himl,himl_origine,himl2,himl_origine2
Procedure Creation_Imagelist_Icon(ID_Gadget.l)
himl=ImageList_Create_(16, 16 , #ILC_COLOR24| #ILC_MASK,0, 0)
himl_origine = SendMessage_(GadgetID(ID_Gadget.l),#TVM_GETIMAGELIST,#TVSIL_NORMAL,0)
SendMessage_(GadgetID(ID_Gadget.l),#TVM_SETIMAGELIST,#TVSIL_NORMAL,himl)
LoadImage(0, "prime0.ico")
LoadImage(1, "prime1.ico")
LoadImage(2, "prime2.ico")
For Index=0 To 2
geticoninfo_(UseImage(Index), @ICONINFO.ICONINFO)
ImageList_Add_(himl,ICONINFO\hbmColor,ICONINFO\hbmMask)
FreeImage(Index)
Next
EndProcedure
Procedure Creation_Imagelist_Image(ID_Gadget.l)
himl2=ImageList_Create_(64, 12 , #ILC_COLOR24,0, 0)
himl_origine2 = SendMessage_(GadgetID(ID_Gadget.l),#TVM_GETIMAGELIST,#TVSIL_STATE,0)
SendMessage_(GadgetID(ID_Gadget.l),#TVM_SETIMAGELIST,#TVSIL_STATE,himl2)
For Image=0 To 10
Index=CreateImage(#PB_Any,64,12)
If Index
StartDrawing(ImageOutput())
Box(0,0,64,12,RGB(255,0,0))
Box(0,0,Image*10,12,RGB(0,0,255))
StopDrawing()
EndIf
ImageList_Add_(himl2,UseImage(Index),0)
If Image=0
;cette image ne servira pas
ImageList_Add_(himl2,UseImage(Index),0)
EndIf
FreeImage(Index)
x=x+64/8
Next Image
EndProcedure
Procedure Attach_Icon(ID_Gadget.l,Index_Item.l,Index_Icon.b)
hItem=GadgetItemID(ID_Gadget,Index_Item)
LPTVITEMEX.TVITEMEX
LPTVITEMEX\mask=#TVIF_IMAGE|#TVIF_SELECTEDIMAGE|#TVIF_HANDLE
LPTVITEMEX\hItem=hItem
LPTVITEMEX\iImage=Index_Icon
LPTVITEMEX\iSelectedImage=Index_Icon
lResult = SendMessage_(GadgetID(ID_Gadget),#TVM_SETITEM,0,LPTVITEMEX)
EndProcedure
Procedure Attach_Image(ID_Gadget.l,Index_Item.l,Index_Image.b)
hItem=GadgetItemID(ID_Gadget,Index_Item)
LPTVITEMEX.TVITEMEX
LPTVITEMEX\mask=#TVIF_HANDLE|#TVIF_STATE
LPTVITEMEX\hItem=hItem
LPTVITEMEX\stateMask=#TVIS_STATEIMAGEMASK
LPTVITEMEX\state=Index_Image<<12
lResult = SendMessage_(GadgetID(ID_Gadget),#TVM_SETITEM,0,LPTVITEMEX)
EndProcedure
If OpenWindow(0,0,0,370,180,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"TreeGadget") And CreateGadgetList(WindowID(0))
TreeGadget(0, 10,10,300,160)
AddGadgetItem (0, -1, "Normal Item")
AddGadgetItem (0, -1, "Node")
OpenTreeGadgetNode(0)
AddGadgetItem(0, -1, "Sub-Item 1")
AddGadgetItem(0, -1, "Sub-Item 2")
AddGadgetItem(0, -1, "Sub-Item 3")
AddGadgetItem(0, -1, "Sub-Item 4")
CloseTreeGadgetNode(0)
AddGadgetItem (0, -1, "File")
AddGadgetItem (0, -1, "File")
Creation_Imagelist_Image(0)
;l'index_Image doit commencer à 1
;un 0 signifie qu'il n'y a plus d'image associée
Attach_Image(0,0,2)
Attach_Image(0,1,4)
Attach_Image(0,2,6)
Creation_Imagelist_Icon(0)
;Par défaut tous les items auront l'icone d'index 0
Attach_Icon(0,0,0)
Attach_Icon(0,1,1)
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
ImageList_Destroy_(himl)
ImageList_Destroy_(himl2)
Code : Tout sélectionner
SendMessage_(GadgetID(ID_Gadget.l),#TVM_SETIMAGELIST,#TVSIL_NORMAL,himl)
Code : Tout sélectionner
SendMessage_(GadgetID(ID_Gadget.l),#TVM_SETIMAGELIST,#TVSIL_STATE,himl2)
Donc si on assigne 5 bits à l'index, 63 icones maisNico a écrit : On peut définir au maximum 15 icones dans cette liste (4 bits servent à déterminer son index d'où le décalage (<<12),