Page 1 sur 1
Selection d'une ligne d'un ListeIconGadget ?
Publié : mar. 17/oct./2006 15:30
par brossden
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 !
Publié : mar. 17/oct./2006 17:24
par Anonyme2
Code : Tout sélectionner
SetGadgetState(#ListIconGadget, 20)
SetActiveGadget(#ListIconGadget)
Publié : mer. 18/oct./2006 10:20
par brossden
Merci Denis, mais j'ai dû mal m'exprimer je voudrait que la selection soit visible à l'affichage, ligne selectionnée en inverse vidéo et visible dans la listIconGadget !!
Publié : mer. 18/oct./2006 13:09
par Anonyme2
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
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)
Publié : mer. 18/oct./2006 13:47
par brossden
Denis tu es le meilleur !
(comme tous les Denis d'ailleurs !)
Merci encore !
Publié : mer. 18/oct./2006 15:11
par Anonyme2
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()
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