Comment récupérer la position des ascenseurs dans une ListIconGadget ?
Je ne connais pas de solution.
Merci à l'avance de votre réponse.
Ascenseurs d'une ListIconGadget
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Ascenseurs d'une ListIconGadget
Ma réponse se base sur une api Window, ce qui n'est pas compatible avec une solution cross-platform.
L'api est GetScrollPos_
Inutile de la déclarer, c'est inclus dans Purebasic et s'emploie suivant la syntaxe suivante:
GetScrollPos_(GadgetID(Gadget.i), SbValue.i)
Gadget.i : Ton ListIconGadget
SbValue : #SB_VERT ou #SB_HORZ (Scroller Vertical ou Horizontal)
je ne sais pas si c'est la meilleurs solution mais le scroller n'étant pas gérer par la boucle évènementielle, tu devras détourner les évènements reçu par ta fenêtre à un CallBack. Cette procédure devra ensuite renvoyer les évènements à la boucle évènementielle.
L'api est GetScrollPos_
Inutile de la déclarer, c'est inclus dans Purebasic et s'emploie suivant la syntaxe suivante:
GetScrollPos_(GadgetID(Gadget.i), SbValue.i)
Gadget.i : Ton ListIconGadget
SbValue : #SB_VERT ou #SB_HORZ (Scroller Vertical ou Horizontal)
je ne sais pas si c'est la meilleurs solution mais le scroller n'étant pas gérer par la boucle évènementielle, tu devras détourner les évènements reçu par ta fenêtre à un CallBack. Cette procédure devra ensuite renvoyer les évènements à la boucle évènementielle.
Code : Tout sélectionner
Enumeration
#Mainform
#List
#SBScrollPos
EndEnumeration
Procedure CallBack(hWnd, Msg, wParam, lParam)
SetGadgetText(#SBScrollPos, "Scroll. Pos : "+Str(GetScrollPos_(GadgetID(#List), #SB_VERT)))
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
OpenWindow(#Mainform,100,100,300,500,"ListIcon Beispiel",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
TextGadget(#SBScrollPos, 5, 10, 100, 20, "")
ListIconGadget(#List, 5, 50, 290,400,"Item",150,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
;Utilisation du callback
SetWindowCallback(@Callback())
For i=1 To 100
AddGadgetItem(#List, -1, "Item "+Str(i))
Next i
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Case #PB_Event_CloseWindow
SetWindowCallback(0) ;Annulation du callback
End
EndSelect
ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Ascenseurs d'une ListIconGadget
Au cas ou tu voudrais maintenant forcer le scroller à une position, tu trouveras un exemple qui utilise l'API SetScrollPos_
Code : Tout sélectionner
Enumeration
#Mainform
#List
#SBScrollPos
EndEnumeration
Procedure CallBack(hWnd, Msg, wParam, lParam)
SetGadgetText(#SBScrollPos, "Scroll. Pos : "+Str(GetScrollPos_(GadgetID(#List), #SB_VERT)))
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
OpenWindow(#Mainform,100,100,300,500,"ListIcon Beispiel",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
TextGadget(#SBScrollPos, 5, 10, 100, 20, "")
ListIconGadget(#List, 5, 50, 290,400,"Item",150,#PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection)
SetWindowCallback(@Callback())
For i=1 To 100
AddGadgetItem(#List, -1, "Item "+Str(i))
Next i
;Utilisation de l'api SetScrollPos_
For i=1 To 50
SetScrollPos_(GadgetID(#List), #SB_VERT, i, #True)
SendMessage_(GadgetID(#List), #WM_VSCROLL, #SB_LINEDOWN,0)
Delay(10)
Next
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Case #PB_Event_CloseWindow
SetWindowCallback(0) ;Annulation du callback
End
EndSelect
ForEver
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
-
- Messages : 4312
- Inscription : mer. 28/janv./2004 20:58
- Localisation : Clermont ferrand OU Olsztyn
- Contact :
Re: Ascenseurs d'une ListIconGadget
Exemple ici :
http://www.purebasic.fr/french/viewtopi ... stpos#p169
http://www.purebasic.fr/french/viewtopi ... stpos#p169
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]