
Changer l'image d'un ListIcon
Changer l'image d'un ListIcon
Tout est dans le titre, il me semblai que j'avais lu qq chose dessus, mais impossible de retrouver ! 

-
- Messages : 1500
- Inscription : jeu. 25/mars/2004 11:23
- Localisation : Sophia Antipolis (Nice)
- Contact :
On dirait que c'est pas possible
Ou sinon c'est qu ela doc est incomplete !!!
Ou sinon c'est qu ela doc est incomplete !!!
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Participez à son extension: ajouter vos programmes et partagez vos codes !
Soit tu passes par les API, cela necessite de savoir si ton image est déjà dans la ListImage assignée à la Listicon et si oui, tu utilises l'index de l'image dans la liste pour remplir la Structure LVITEM et tu utilises le message #LVM_SETITEM, soit elle n'est pas dans la liste et il faut l'ajouter puis pratiquer de même.
Une autre méthode un plus bourrin mais parfaitement fonctionnelle (et tellement plus simple) consiste à mémoriser dans des variables texte ou dans une liste chaînée le texte de chaque élément de la ligne puis d'effacer la ligne et ensuite d'insérer une ligne avec le texte sauvée juste avant en mettant la nouvelle image en paramètre
Si la ligne a des styles particuliers (comme le style 'Cut' etc) il faut rechercher le style de la ligne effacée puis appliquer ce style à la nouvelle ligne inséreée.
voici un code
Une autre méthode un plus bourrin mais parfaitement fonctionnelle (et tellement plus simple) consiste à mémoriser dans des variables texte ou dans une liste chaînée le texte de chaque élément de la ligne puis d'effacer la ligne et ensuite d'insérer une ligne avec le texte sauvée juste avant en mettant la nouvelle image en paramètre
Si la ligne a des styles particuliers (comme le style 'Cut' etc) il faut rechercher le style de la ligne effacée puis appliquer ce style à la nouvelle ligne inséreée.
voici un code
Code : Tout sélectionner
Enumeration
#MainWindow
#ListIconGadget1
#ButtonGadget
#ButtonGadget2
#Font
EndEnumeration
; ;========================================================================================
; ;========================================================================================
If OpenWindow(#MainWindow, 0, 0, 360, 300, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "")
If CreateGadgetList(WindowID()) And ListIconGadget(#ListIconGadget1, 5, 50, 350, 240, "Colonne 1", 320 / 3, #PB_ListIcon_MultiSelect)
AddGadgetColumn(#ListIconGadget1, 1, "Colonne 2", 300 / 3)
ButtonGadget(#ButtonGadget, 15, 10, 335, 35, "Changer l'image ligne 3")
CreateImage(600, 16,16) ; image affichée pour toutes les lignes
If StartDrawing(ImageOutput())
Box(4, 4, 8, 8 , #Blue)
StopDrawing()
EndIf
CreateImage(601,16,16) ; image qui sera affichée ligne 3
If StartDrawing(ImageOutput())
Box(4, 4, 8, 8 , #Red)
StopDrawing()
EndIf
For i.b = 1 To 15
If i <> 3
AddGadgetItem(#ListIconGadget1, -1, "111" + Chr(10) + "222" , UseImage(600))
Else
AddGadgetItem(#ListIconGadget1, -1, "Ligne 3 col 1" + Chr(10) + "Ligne 3 col 2" , UseImage(600))
EndIf
Next i
Repeat
Select WaitWindowEvent()
Case #PB_EventGadget
event = EventGadgetID()
If event = #ButtonGadget
; item est le numéro de ligne
Item = 2 ; ligne 3
Text1.s = GetGadgetItemText(#ListIconGadget1, Item, 0) ; colonne 0
Text2.s = GetGadgetItemText(#ListIconGadget1, Item, 1) ; colonne 1, etc
RemoveGadgetItem(#ListIconGadget1, Item)
AddGadgetItem(#ListIconGadget1, Item, Text1+Chr(10)+Text2.s, UseImage(601))
EndIf
Case #PB_EventCloseWindow
Quit + 1
EndSelect
Until Quit
EndIf
EndIf
End