Page 1 sur 2
					
				PanelGadget() avec 1 image
				Publié : sam. 12/juin/2004 20:49
				par julien
				salut,
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.... 

 
			
					
				
				Publié : sam. 12/juin/2004 20:57
				par fweil
				Je pense qu'il est permi de créer un imagegadget dont la position correspond à l'onglet ?
			 
			
					
				
				Publié : sam. 12/juin/2004 21:01
				par Anonyme2
				Je ne sais pas si c'est ce que tu souhaite mais voici un code de Freak posté sur le forum anglais
Le message du forum est ici
http://purebasic.myforums.net/viewtopic.php?t=5739
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 
;===============================================================================
 
			
					
				
				Publié : sam. 12/juin/2004 23:16
				par Le Soldat Inconnu
				je le remet corrigé car c'est un code fait sur une vieille version de PB :
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
 
			
					
				
				Publié : dim. 13/juin/2004 6:33
				par Anonyme2
				Merci Régis,  
 
 
j'ai pas essayé, j'ai fait une petite recherche sur le forum anglais avant de couler dans la doc SDK de MS...
 
			
					
				
				Publié : dim. 13/juin/2004 15:01
				par Le Soldat Inconnu
				ben pas de quoi, je l'ai corrigé et traduit pour l'ajouter à ma biblio de code perso 

 
			
					
				
				Publié : dim. 13/juin/2004 16:49
				par julien
				merci  

 
			
					
				
				Publié : mer. 16/juin/2004 11:18
				par Fred
				La suggestion du jour 
 
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 
 
			
					
				
				Publié : mer. 16/juin/2004 11:37
				par nico
				C'est du tout bon ça  

 
			
					
				
				Publié : mer. 16/juin/2004 11:44
				par julien
				...  

  j'avais pas relu l'aide depuis et je pensai que c'était pas prévu à l'origine... merci Fred  

 
			
					
				
				Publié : mer. 16/juin/2004 12:12
				par Anonyme2
				Je l'ai déjà écrit ...
Pourquoi faire simple alors que l'on peut faire compliqué  
 
 
Merci Fred de nous rappeler les fonctions de base que l'on oublie vite
 
			
					
				
				Publié : mer. 16/juin/2004 15:46
				par Le Soldat Inconnu
				et pour changer la taille de l'image avec cette méthode, on fait comment ?
car ça affiche toujours en 16 * 16 alors que l'image du cd fait 32*32
			 
			
					
				
				Publié : mer. 16/juin/2004 17:36
				par julien
				Ah oui pas con... faudra améliorer ceci, merci encore !
			 
			
					
				
				Publié : sam. 06/mai/2006 8:22
				par julien
				je fait remonter le sujet, le code ne fonctionne plus avec la 3.94 et v4 beta 11
C'est cette ligne qui génère une erreur (multiple .data....)
pitem\iImage = ImageList_AddIcon_(hIml, ImageID)
			 
			
					
				
				Publié : sam. 06/mai/2006 11:13
				par Ulix
				Le code que Fred nous proposé est excellent ! 
C'est une possibilité que je ne connaissais pas.
Voilà un exemple d'utilisation qu'il faudrait inclure dans l'aide !
RegisLG  où le Comtois  voyez si c'est possible ? En tout cas je pense qu'une aide la plus démonstrative possible des capacités du PB est un plus et même indispensable pour valorisé le PB. Un tel exemple va dans ce sens.
Merci Fred   
 
    
 
Au faite, Fred : A quand les icones dans les menus du PB, en natif bien sûr ?
Car là aussi c'est une façon de valorisé PB !