
L'un,le 1, est rempli, L'autre, le 2, vide.
Le un est rempli de manière à ce qu'il y ait une barre de défilement.
Maintenant, je remplis le 2 avec le 1.
Comment puis je placer la barre de défilement exactement à l'endriot où elle était sur l'autre ?
Code : Tout sélectionner
position = Getscrollpos_(hwnd, type); on récupère la positon de la barre de défilement
;hwnd est le handle du treegadget ou l'on récupère la positon de la barre de défilement
; type est soit #SB_HORZ pour une barre de défilement horizontale, soit #SB_VERT pour une barre de défilement verticale, ce qui je pense est le cas ici
Setscrollpos_(hwnd, type, position, 15); on positionne la barre de tache à la position voulue
;hwnd est le handle du treegadget à modifier
;type est soit #SB_HORZ, soit #SB_VERT
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
Code : Tout sélectionner
Setgadgetstate(#tree1, getgadgetstate(#tree2))
OpenWindow (0, 0, 0, 500, 500, #PB_Window_SystemMenu | #PB_Window_ScreenCentered , "fenetre" ) ; ouvre la fenêtre
CreateGadgetList ( WindowID ()) ; crée une liste de gadget
z.l = TreeGadget (0, 50, 50, 150, 400) ; ajoute le premier treegadget
ButtonGadget (1, 0,0, 50, 50, "ok" ) ; ajoute un bouton pour créer le second treegadget
OpenLibrary (0, "user32.dll" ) ; j'ai que la démo alors on fait avec les moyens du bords
For x = 0 To 50
AddGadgetItem (0, - 1, Str (x)) ; ajoute les éléments au treegadget
Next
Repeat
event = WaitWindowEvent () ; attend un évenement
If event = #PB_Event_Gadget ; si c'est un évenement sur un gadget
If EventGadgetID () = 1 ; et que ce gadget est le bouton
CreateGadgetList ( WindowID ()) ; on crée une liste de gadget
y.l = TreeGadget (2, 300, 50, 150, 400) ; on ajoute le second treegadget
For x = 0 To 50
AddGadgetItem (2, -1, Str (x)) ; on le remplit
Next
pos.l = CallFunction (0, "GetScrollPos" , z, 1) ; on récupere la position sur le premier treegadget
CallFunction (0, "SetScrollPos" , y, 1, pos, 1) ; on l'applique sur le second treegadget
EndIf
EndIf
Until event = #PB_Event_CloseWindow ; quitte quand on clique sur la croix