Page 1 sur 1

coloration de ListIcon alternée

Publié : dim. 02/juil./2006 9:53
par Jacobus
Est-ce que l'un d'entre-vous a déjà procédé au coloriage d'un ListIcongadget() en alternant la couleur des lignes?

Code : Tout sélectionner

For NbElement = 0 To CountGadgetItems(#ListIcon)
  SetGadgetItemColor(#ListIcon,  NbElement, #PB_Gadget_BackColor,  RGB(238, 204, 128), -1)
 Next
de cette façon, la couleur s'applique à toutes les lignes au fur et à mesure du remplissage du ListIcon, mais je voudrais que la couleur ne s'applique qu'à une ligne sur deux. Une idée?

Re: coloration de ListIcon alternée

Publié : dim. 02/juil./2006 10:10
par Flype

Code : Tout sélectionner

For NbElement = 0 To CountGadgetItems(#ListIcon) - 1 Step 2
  SetGadgetItemColor(#ListIcon,  NbElement, #PB_Gadget_BackColor,  RGB(238, 204, 128), -1)
 Next
[...] Step 2 ?

je le fais souvent. il y a plein de facons...

Code : Tout sélectionner

nbLignes = CountGadgetItems(#ListIcon) - 1
For NbElement = 0 To nbLignes
  If NbElement & 1
    SetGadgetItemColor(#ListIcon, NbElement, #PB_Gadget_BackColor, RGB(238, 204, 128), -1)
  EndIf
Next

Publié : dim. 02/juil./2006 10:24
par Jacobus
Merci Flype, c'est au poil! :D
Step 2 ?
Il faut que j'arrive à l'enregistrer celui-là et à y penser automatiquement...

Ainsi on peut alterner les couleurs :

Code : Tout sélectionner

For NbElement = 0 To CountGadgetItems(#ListIcon) - 1 Step 2 
  SetGadgetItemColor(#ListIcon,  NbElement, #PB_Gadget_BackColor,  RGB(238, 204, 128), -1) 
 Next
For NbElement = 1 To CountGadgetItems(#ListIcon) - 1 Step 2 
  SetGadgetItemColor(#ListIcon,  NbElement, #PB_Gadget_BackColor,  RGB(219, 224, 171), -1) 
 Next

Publié : dim. 02/juil./2006 11:18
par Flype
juste un truc.

quand on écrit dans une boucle :

Code : Tout sélectionner

For NbElement = 0 To CountGadgetItems(#ListIcon) - 1 Step 2
  [...]
Next
CountGadgetItems(#ListIcon) va être appelé autant de fois qu'il y a d'itération.
Pour une toute petite liste çà va, mais s'il y a bcp d'éléments, il est plus propre d'écrire :

Code : Tout sélectionner

nbLignes = CountGadgetItems(#ListIcon) - 1
For NbElement = 0 To nbLignes Step 2
  [...]
Next
petite démonstration avec un compteur d'appel.

Code : Tout sélectionner

Procedure.l CountGadgetItemsEx(a.l)
  Shared compteur
  compteur + 1
  Debug compteur
  ProcedureReturn CountGadgetItems(a)
EndProcedure

Macro CountGadgetItems(a)
  CountGadgetItemsEx(a)
EndMacro

#ListIcon = 0

OpenWindow(0, 100, 100, 300, 300, "")
CreateGadgetList(WindowID(0))
ListIconGadget(#ListIcon, 0, 0, 300, 300, "",200)

For i = 0 To 1000
  AddGadgetItem(#ListIcon, -1, Str(i))
Next

;nbLignes = CountGadgetItems(#ListIcon) - 1

For NbElement = 0 To CountGadgetItems(#ListIcon) - 1 Step 2
  SetGadgetItemColor(#ListIcon, NbElement, #PB_Gadget_BackColor, RGB(238, 204, 128), -1)
Next

Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow

Publié : lun. 03/juil./2006 14:43
par gnozal
ou encore *PUB* :

- alterner les lignes :
PureCOLOR_SetGadgetColorEx(MonListIconGadget, CouleurTexte, CouleurFondPaire, CouleurFondImpaire, #PureCOLOR_LV_AlternateColors)
- alterner les colonnes :
PureCOLOR_SetGadgetColorEx(MonListIconGadget, CouleurTexte, CouleurFondPaire, CouleurFondImpaire, #PureCOLOR_LV_AlternateColors2)

:D