Page 1 sur 1

ListIconGadget et SetGadgetState

Publié : mer. 22/juin/2011 12:29
par Thyphoon
Lorsque je sélectionne automatiquement une ligne dans un ListiconGadget via le commande SetGadgetState la couleur de sélection est très très pale ! rien a voir avec la couleur bleu lorsqu'on sélectionne avec un clic. Comment faire pour que la selection via SetGadgetState est la même couleur qu'avec le clic ? et pourquoi cette différence ?

Code : Tout sélectionner

If OpenWindow(0, 100, 100, 300, 200, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   ListIconGadget(0, 5, 5, 290, 90, "Name", 100, #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
   AddGadgetColumn(0, 1, "Address", 250)
   AddGadgetItem(0, -1, "Harry Rannit"+Chr(10)+"12 Parliament Way, Battle Street, By the Bay")
   AddGadgetItem(0, -1, "Ginger Brokeit"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity")
   AddGadgetItem(0, -1, "bidule machin"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity")
   AddGadgetItem(0, -1, "grrrrrrr"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity")
   SetGadgetState(0,1)
   Repeat
     Event = WaitWindowEvent()
   Until Event = #PB_Event_CloseWindow
 EndIf

Re: ListIconGadget et SetGadgetState

Publié : mer. 22/juin/2011 12:46
par Chris
La couleur est claire parce que le gadget n'a plus le focus une fois qu'il est créé.
SetGadgetState() ne donne pas le focus au gadget, il marque seulement un élément comme "Sélectionné".

Ajoute SetActiveGadget(0), il devrait reprendre des couleurs.

Re: ListIconGadget et SetGadgetState

Publié : mer. 22/juin/2011 12:51
par Thyphoon
tu as raison super merci !!! :mrgreen:

Re: ListIconGadget et SetGadgetState

Publié : mer. 22/juin/2011 12:58
par Thyphoon
par contre même avec les setgadgetcolor() on peut pas changer ces 2 couleurs ? (la couleur de sélection sans focus, et la couleur de sélection avec focus)

Re: ListIconGadget et SetGadgetState

Publié : mer. 22/juin/2011 13:13
par Chris
Oui, j'ai remarqué ça aussi.

Tu peux changer la couleur des éléments uniquement si ils ne sont pas sélectionnés. :cry:
Ce serait sympa si on avait cette possibilité.

Re: ListIconGadget et SetGadgetState

Publié : mer. 22/juin/2011 13:28
par falsam
Petite astuce dans la boucle évènementiel pour changer la couleur de sélection quand on quitte le tableau.

Code : Tout sélectionner

If OpenWindow(0, 100, 100, 400, 300, "ListIcon Example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   ListIconGadget(0, 5, 5, 390, 250, "Name", 100, #PB_ListIcon_FullRowSelect)
   StringGadget(1, 5, 270, 100, 20, "")
   AddGadgetColumn(0, 1, "Address", 250)
   
   AddGadgetItem(0, -1, "Harry Rannit"+Chr(10)+"12 Parliament Way, Battle Street, By the Bay")
   AddGadgetItem(0, -1, "Ginger Brokeit"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity")
   AddGadgetItem(0, -1, "bidule machin"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity")
   AddGadgetItem(0, -1, "grrrrrrr"+Chr(10)+"130 PureBasic Road, BigTown, CodeCity")
   SetGadgetState(0,1) : SetActiveGadget(0)
   
   Repeat
     Event = WaitWindowEvent()
     Select event
       Case #PB_Event_Gadget
         Select EventGadget()
           Case 0
             For i=0 To CountGadgetItems(0)
               SetGadgetItemColor(0, i, #PB_Gadget_BackColor, #White)
             Next i
             
           Case 1
             For i=0 To CountGadgetItems(0)
               SetGadgetItemColor(0, i, #PB_Gadget_BackColor, #White)
               SetGadgetItemColor(0, GetGadgetState(0), #PB_Gadget_BackColor, #Yellow)  
             Next i

         EndSelect
         
     EndSelect
         
   Until Event = #PB_Event_CloseWindow
EndIf

Re: ListIconGadget et SetGadgetState

Publié : mer. 22/juin/2011 13:35
par Thyphoon
falsam a écrit :Petite astuce dans la boucle évènementiel pour changer la couleur de sélection quand on quitte le tableau.
très astucieux ! :mrgreen: Un grand merci! l'essayer c'est l’adopter
Chris a écrit :Oui, j'ai remarqué ça aussi.

Tu peux changer la couleur des éléments uniquement si ils ne sont pas sélectionnés. :cry:
Ce serait sympa si on avait cette possibilité.
On peut toujours en parler dans la whishlist sur le forum anglais si ce n'est déjà fait... on ne sait jamais ! :wink: En tout cas merci d'être penché sur mon problème !