[RESOLU]Listicongadget et scrollbar

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

[RESOLU]Listicongadget et scrollbar

Message par Mesa »

Peut-on enlever les scrollbars des listicongadgets sans supprimer le scrolling ?

J'aimerais scroller 3 listicons avec un scrollbar extérieur.

Code : Tout sélectionner

;{- Enumerations / DataSections
;{ Windows
Enumeration
  #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
  #ListIcon_0
  #ListIcon_1
  #ListIcon_2
  #ScrollBar_0
  #Button_0
  
  
EndEnumeration
;}
Define.l Event, EventWindow, EventGadget, EventType, EventMenu
;}
Procedure OpenWindow_Window_0()
  If OpenWindow(#Window_0, 435, 70, 463, 656, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    ListIconGadget(#ListIcon_0, 20, 25, 130, 300, "", 100, #PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_FullRowSelect|#PB_ListIcon_GridLines|#LVS_NOCOLUMNHEADER|#LVS_NOSORTHEADER|#LVS_SORTASCENDING)
    SendMessage_(GadgetID(#ListIcon_0), #LVM_SETCOLUMNWIDTH, 0, #LVSCW_AUTOSIZE_USEHEADER)
    ListIconGadget(#ListIcon_1, 150, 25, 130, 300, "", 100, #PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_FullRowSelect|#PB_ListIcon_GridLines|#LVS_NOCOLUMNHEADER|#LVS_NOSORTHEADER|#LVS_SORTASCENDING |#LVS_NOSCROLL |#WS_VSCROLL)
    SendMessage_(GadgetID(#ListIcon_1), #LVM_SETCOLUMNWIDTH, 0, #LVSCW_AUTOSIZE_USEHEADER)
    ListIconGadget(#ListIcon_2, 280, 25, 130, 300, "", 100, #PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_FullRowSelect|#PB_ListIcon_GridLines|#LVS_NOCOLUMNHEADER|#LVS_NOSORTHEADER|#LVS_SORTASCENDING |#LVS_NOSCROLL |#WS_VSCROLL)
    SendMessage_(GadgetID(#ListIcon_2), #LVM_SETCOLUMNWIDTH, 0, #LVSCW_AUTOSIZE_USEHEADER)
    ScrollBarGadget(#ScrollBar_0, 415, 25, 30, 295, 0, 100, 5, #PB_ScrollBar_Vertical)
    
    ButtonGadget(#Button_0,10,360,50,30,"->Fin")
        
    For i=0 To 50
      AddGadgetItem(#ListIcon_0,-1, "Elément "+Str(i))
      AddGadgetItem(#ListIcon_1,-1, "Elément "+Str(i))
      AddGadgetItem(#ListIcon_2,-1, "Elément "+Str(i))
            Next i
 SetGadgetAttribute(#ScrollBar_0, #PB_ScrollBar_Maximum, 50)
  EndIf
EndProcedure

OpenWindow_Window_0()

;{- Event loop
Repeat
  Event = WaitWindowEvent()
  Select Event
    ; ///////////////////
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      If EventGadget = #ListIcon_0
      ElseIf EventGadget = #ListIcon_1
      ElseIf EventGadget = #ListIcon_2  
      ElseIf EventGadget = #ScrollBar_0
        n=GetGadgetState(#ScrollBar_0)
        Debug n
        SendMessage_(GadgetID(#ListIcon_0), #LVM_ENSUREVISIBLE, n, #True)
        SendMessage_(GadgetID(#ListIcon_1), #LVM_ENSUREVISIBLE, n, #True)
        SendMessage_(GadgetID(#ListIcon_2), #LVM_ENSUREVISIBLE, n, #True)
        
      ElseIf EventGadget = #Button_0
        ;Debug "ok"
        SendMessage_(GadgetID(#ListIcon_0), #LVM_ENSUREVISIBLE, CountGadgetItems(#ListIcon_0)-1, #True)
        SendMessage_(GadgetID(#ListIcon_1), #LVM_ENSUREVISIBLE, CountGadgetItems(#ListIcon_1)-1, #True)
        SendMessage_(GadgetID(#ListIcon_2), #LVM_ENSUREVISIBLE, CountGadgetItems(#ListIcon_2)-1, #True)
      EndIf
    ; ////////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Window_0
        CloseWindow(#Window_0)
        Break
      EndIf
  EndSelect
ForEver
;
;}
Marche pas :(

Mesa.
Dernière modification par Mesa le jeu. 18/oct./2012 7:36, modifié 1 fois.
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Listicongadget et scrollbar

Message par kernadec »

bonjour Mesa
il y a des exemples avec deux Listicons qui fonctionnent...ici:
http://www.purebasic.fr/english/viewtop ... =5&t=49741

Cordialement
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: Listicongadget et scrollbar

Message par kernadec »

Adaptation du code de Rashad pour trois Listicons

Cordialement

Code : Tout sélectionner

; Auteur RASHAD   http://www.purebasic.fr/english/viewtopic.php?f=5&t=49741

OpenWindow(0,0,0,580,330,"void",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)

ContainerGadget(0,5,5,200 - 2 - 17,320)
ListViewGadget(1,0,0,200,315)
CloseGadgetList()
ContainerGadget(4,190,5,200 - 2 - 17,320)
ListViewGadget(2,0,0,200,315)
CloseGadgetList()
ListViewGadget(3,375,5,200,315)


For i=1 To 500
  AddGadgetItem(1,-1,"Gadget Item #" + RSet(Str(i),3,"0"))
  AddGadgetItem(2,-1,"Gadget Item #" + RSet(Str(i),3,"0"))
  AddGadgetItem(3,-1,"Gadget Item #" + RSet(Str(i),3,"0"))
Next


Procedure WindowCallback(hWnd,uMsg,wParam,lParam)
  Select uMsg
    Case #WM_CTLCOLORLISTBOX
      If lParam = GadgetID(3)
        SendMessage_(GadgetID(1),#LB_SETTOPINDEX,GetScrollPos_(GadgetID(2),#SB_VERT),0)
        SendMessage_(GadgetID(2),#LB_SETTOPINDEX,GetScrollPos_(GadgetID(3),#SB_VERT),0)
      EndIf
      
    Case #WM_KEYDOWN ,#WM_MENUSELECT
      If wParam=#VK_UP
        SendMessage_(GadgetID(1),#WM_VSCROLL,#SB_LINEUP,0)
        SendMessage_(GadgetID(2),#WM_VSCROLL,#SB_LINEUP,0)
        SendMessage_(GadgetID(3),#WM_VSCROLL,#SB_LINEUP,0)
      ElseIf wParam=#VK_DOWN
        SendMessage_(GadgetID(1),#WM_VSCROLL,#SB_LINEDOWN,0)
        SendMessage_(GadgetID(2),#WM_VSCROLL,#SB_LINEDOWN,0)
        SendMessage_(GadgetID(3),#WM_VSCROLL,#SB_LINEDOWN,0)
      EndIf 
  EndSelect
  
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

SetWindowCallback(@WindowCallback())

Repeat
  Select WaitWindowEvent()
      
    Case #PB_Event_CloseWindow
      Quit = 1       
      
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1
          SetGadgetState(2, GetGadgetState(1))
          SetGadgetState(3, GetGadgetState(1))
        Case 2
          SetGadgetState(1, GetGadgetState(2))
          SetGadgetState(3, GetGadgetState(2))	
        Case 3
          SetGadgetState(1, GetGadgetState(3))
          SetGadgetState(2, GetGadgetState(3))		
      EndSelect
  EndSelect
Until Quit = 1


Répondre