GetGadgetItemState()

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
dlolo
Messages : 118
Inscription : ven. 18/févr./2005 16:29

GetGadgetItemState()

Message par dlolo »

Salut,

j'ai besoin d'ajouter des éléments sélectionnés d'un ExplorerListGadget dans un ListIconGadget :

Code : Tout sélectionner

ElseIf GadgetID = #ajouter_sel
      ;Debug "GadgetID: #ajouter_sel"
      
      For n = 0 To CountGadgetItems(#explorateur_list) - 1 
        If GetGadgetItemState(#explorateur_list, n) = #PB_Explorer_Selected
            AddGadgetItem(#selection_list,-1,GetGadgetItemText(#explorateur_list,n,0))
        EndIf
      Next n
mais rien ne se passe.

PS : Quand j'ajoute tout les éléments, ça fonctionne : le ListIconGadget se remplit bien :

Code : Tout sélectionner

ElseIf GadgetID = #ajouter_tout
      ;Debug "GadgetID: #ajouter_tout"
      For n = 0 To CountGadgetItems(#explorateur_list) - 1 
        AddGadgetItem(#selection_list,-1,GetGadgetItemText(#explorateur_list,n,0))
      Next n
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

Voilas un code qui marche "a peut pret".. Mais je ne sais sais pas pourquoi il renvoi 2 evenement sur l'explorerlist :?

Code : Tout sélectionner

OpenWindow(0, 0, 0, 400, 300, #Pb_Window_SystemMenu | #PB_Window_ScreenCentered, "GetGadgetItemState()")
  CreateGadgetList(WindowID())
    ExplorerListGadget(0, 0, 0, 200, 300, "C:\")
    ListViewGadget(1, 200, 0, 200, 300)
    
Repeat

  Select WindowEvent()
  
    Case #PB_EventGadget
      Select EventGadgetID()
      
        Case 0
          For n = 0 To CountGadgetItems(0)
            
            ; Enfait GetGadgetItemState() pour une ExplorerList, qd un element est selection, il précise aussi si c'est un fichier
            ; ou un repertoire, donc on doit tester les 2 combinaison.. Le hic c'est qu'il trouve 2 evenement sur l'ExplorerList :s
            If GetGadgetItemState(0, n) = (#PB_Explorer_Selected | #PB_Explorer_File) Or GetGadgetItemState(0, n) = (#PB_Explorer_Selected | #PB_Explorer_Directory)
              AddGadgetItem(1, -1, GetGadgetItemText(0, n, 0))
            EndIf
            
          Next
          
        Case 1
          For n = 0 To CountGadgetItems(1)
          
            If GetGadgetItemState(1, n) = 1
              RemoveGadgetItem(1, n)
            EndIf
          
          Next
      
      EndSelect
  
    Case #WM_Close
      Quit = #True
      
  EndSelect
  
Until Quit = #True
End
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Code : Tout sélectionner

OpenWindow(0, 0, 0, 400, 300, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "GetGadgetItemState()") 
CreateGadgetList(WindowID()) 
ExplorerListGadget(0, 0, 0, 200, 300, "C:\") 
ListViewGadget(1, 200, 0, 200, 300) 
    
Repeat  
  Select WindowEvent()  
    Case #PB_EventGadget 
      Select EventGadgetID()  
        Case 0 
          Select EventType()
            Case #PB_EventType_LeftClick 
              Element = GetGadgetState(0)
              chaine$=  GetGadgetItemText(0, Element, Colonne)
              If GetGadgetItemState(0, Element) & #PB_Explorer_Directory
                Debug "repertoire - " +chaine$
              Else
                Debug "fichier - " +chaine$
              EndIf
  
            Case 1 
               
          EndSelect 
      EndSelect
      
    Case #WM_CLOSE 
      Quit = #True 
      
  EndSelect  
Until Quit = #True 
End 
dlolo
Messages : 118
Inscription : ven. 18/févr./2005 16:29

Message par dlolo »

Ok ca marche, merci pour les réponses.

Alors si j'ai bien compris, le GetGadgetItemState() renvoi, pour l'ExplorerListGadget, 3 valeurs combinées ce qui est indiqué dans l'aide d'ailleur mais l'aide ne dit pas comment s'en servir...
Il faut donc prendre en compte si l'élément est un répertoire ou un fichier.
Répondre