Bonjour
Je n'arrive pas à trouver comment selectionner par le programme une ligne d'une ListeIconGadget
Par exemple Selectionner la 20 ème ligne !
Merci de votre aide je passse complètement à coté là je le sent !
Selection d'une ligne d'un ListeIconGadget ?
Selection d'une ligne d'un ListeIconGadget ?
Denis
Bonne Jounée à tous
Bonne Jounée à tous
Code : Tout sélectionner
SetGadgetState(#ListIconGadget, 20)
SetActiveGadget(#ListIconGadget)
Je me disais aussi te connaissant un peu
je ne sais pas si c'est ce que tu recherches
voici un code qui va dérouler la liste et mettre tout au début de la liste la ligne sélectionnée, sachant que l'indice de la 1ere ligne de la list est 0
Pour la ligne 20 c'est l'indice 19

je ne sais pas si c'est ce que tu recherches
voici un code qui va dérouler la liste et mettre tout au début de la liste la ligne sélectionnée, sachant que l'indice de la 1ere ligne de la list est 0
Pour la ligne 20 c'est l'indice 19
Code : Tout sélectionner
#LVM_GETITEMPOSITION = 4112
#LVM_SCROLL = 4116
Procedure.l SetListPos(Gadget.l, Position.l)
Protected Pos.POINT
SendMessage_(GadgetID(Gadget), #LVM_GETITEMPOSITION, Position - 1, Pos)
SendMessage_(GadgetID(Gadget), #LVM_SCROLL, 0, Pos\y)
EndProcedure
SetListPos(#ListIconGadget, 19)
SetGadgetState(#ListIconGadget, 19)
SetActiveGadget(#ListIconGadget)
Certes
je me suis aperçu que mon code est incomplet, j'avais travaillé la-dessus il y a un moment.
3 cas
La ligne à afficher au début a un indice soit >, soit = soit < à celle qui est affichée
Je force la list à revenir au début car j'ai souvenir que dans certains cas en fonction de l'indice, ça ne fonctionnait pas correctement (je n'ai plus que des souvenirs
)
Fait des tests, voici un code que j'ai repris depuis des codes que j'ai posté ici (lecture des résidents en mars 2005), je n'ai pas fait de tests avec ce code
la procedure à utiliser s'appelle affiche()

je me suis aperçu que mon code est incomplet, j'avais travaillé la-dessus il y a un moment.
3 cas
La ligne à afficher au début a un indice soit >, soit = soit < à celle qui est affichée
Je force la list à revenir au début car j'ai souvenir que dans certains cas en fonction de l'indice, ça ne fonctionnait pas correctement (je n'ai plus que des souvenirs

Fait des tests, voici un code que j'ai repris depuis des codes que j'ai posté ici (lecture des résidents en mars 2005), je n'ai pas fait de tests avec ce code
la procedure à utiliser s'appelle affiche()
Code : Tout sélectionner
Procedure.l GetListPos(Gadget.l)
ProcedureReturn SendMessage_(GadgetID(Gadget), #LVM_GETTOPINDEX, 0, 0)
EndProcedure
Procedure.l SetListPos(Gadget.l, Position.l)
Protected Pos.POINT
SendMessage_(GadgetID(Gadget), #LVM_GETITEMPOSITION, Position - 1, Pos)
SendMessage_(GadgetID(Gadget), #LVM_SCROLL, 0, Pos\y)
EndProcedure
Procedure affiche(Gadget.l, Position.l)
Protected TopIdex
TopIdex = GetListPos(Gadget)
If Position < TopIdex
SetListPos(Gadget, -1)
EndIf
SetListPos(Gadget, Position)
SetGadgetItemState(Gadget, GetListPos(Gadget), #PB_ListIcon_Selected)
SetActiveGadget(Gadget)
EndProcedure