Position de la barre de défilement
Publié : jeu. 29/janv./2004 10:16
Ce code permet de connaître la position de la barre de défilment d'un listicongadget et également de changer la position de cette barre de défilment
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
;- Debut du test
Procedure Remplir()
; On rempli la liste
For n = 0 To 50
AddGadgetItem(1, -1, "Elément " + Str(n))
Next
EndProcedure
If OpenWindow(0, 0, 0, 300, 300, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "Scroll ListIconGadget")
If CreateGadgetList(WindowID())
ListIconGadget(1, 0, 0, 300, 250, "Elements", 275, #PB_ListIcon_FullRowSelect)
ButtonGadget(2, 0, 260, 300, 25, "Actualiser")
Remplir()
Else
End
EndIf
Else
End
EndIf
Repeat
Event = WaitWindowEvent()
If Event = #PB_EventGadget
Select EventGadgetID() ; boutons, zone de texte, ...
Case 2
Pos = GetListPos(1)
Debug "Premier élément visible = " + Str(Pos)
ClearGadgetItemList(1)
Debug "Liste vidée"
remplir()
Debug "Remplissage de la liste"
SetListPos(1, Pos)
Debug "on remet à la position d'origine"
EndSelect
EndIf
Until Event = #PB_EventCloseWindow