Page 1 sur 1

Saute mouton dans ListIconGadget() Why? mais Ouaï??

Publié : mar. 05/déc./2006 19:46
par Jacobus
Où est l'erreur please? Qu'est-ce que j'ai oublié pour que ça fonctionne comme ça que j'veux??

Dans le code suivant, le but est de supprimer des éléments en les sélectionnant (par exemple de 1 à 5) puis en cliquant sur le bouton prévu.
Seulement le code est très joueur et il n'en fait qu'à sa tête, c'est à dire qu'il remove qu'un item sur deux, Ahah! :?
Si alors on sélectionne un item sur deux, là il est content et les supprime.
Oui mais Pourquoi?? aaarrgh!

Code : Tout sélectionner

;Code PB4.01 à jour
Enumeration
#WIN
#LISTICON
#btnRemove
EndEnumeration 

  ExamineDesktops()
  Largeur$ = Str(DesktopWidth(0))
  Hauteur$ = Str(DesktopHeight(0))
  If Val(Largeur$)>800 And Val(Hauteur$)>600
    FlagWin = #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_TitleBar
  Else 
    FlagWin = #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar
  EndIf 
  
If OpenWindow(#WIN,0,0,400,550,"Test listicon" ,FlagWin)=0 Or CreateGadgetList(WindowID(#WIN))=0 
End 
EndIf 

   ButtonGadget(#btnRemove,10,5,150,20,"Remove Select Items")
   ListIconGadget(#LISTICON, 10,30,380,510, "INDEX", 380 , #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_MultiSelect)
   
   count=0
   For n = 0 To 20
   count=count+1
     AddGadgetItem(#LISTICON, -1 ," + Element n° "+Str(count))
   Next
   
   
Repeat 
  Event = WaitWindowEvent()   
  Select Event
    Case #PB_Event_Gadget 
      Select EventGadget()
      
      Case #btnRemove
        NbItems = CountGadgetItems(#LISTICON):Debug NbItems
            For ni = 0 To NbItems - 1
             Resultat = GetGadgetItemState(#LISTICON, ni)
               If Resultat & #PB_ListIcon_Selected
                 RemoveGadgetItem(#LISTICON, ni)
               EndIf 
            Next
            
            
            
      EndSelect 
  EndSelect 
  
Until Event = #PB_Event_CloseWindow
End 

Publié : mar. 05/déc./2006 20:54
par Lna

Code : Tout sélectionner

;Code PB4.01 à jour 
Enumeration 
#WIN 
#LISTICON 
#btnRemove 
EndEnumeration 

  ExamineDesktops() 
  Largeur$ = Str(DesktopWidth(0)) 
  Hauteur$ = Str(DesktopHeight(0)) 
  If Val(Largeur$)>800 And Val(Hauteur$)>600 
    FlagWin = #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_TitleBar 
  Else 
    FlagWin = #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar 
  EndIf 
  
If OpenWindow(#WIN,0,0,400,550,"Test listicon" ,FlagWin)=0 Or CreateGadgetList(WindowID(#WIN))=0 
End 
EndIf 

   ButtonGadget(#btnRemove,10,5,150,20,"Remove Select Items") 
   ListIconGadget(#LISTICON, 10,30,380,510, "INDEX", 380 , #PB_ListIcon_FullRowSelect|#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_MultiSelect) 
    
   count=0 
   For n = 0 To 20 
   count=count+1 
     AddGadgetItem(#LISTICON, -1 ," + Element n° "+Str(count)) 
   Next 
    
    
Repeat 
  Event = WaitWindowEvent()    
  Select Event 
    Case #PB_Event_Gadget 
      Select EventGadget() 
      
      Case #btnRemove 
        NbItems = CountGadgetItems(#LISTICON):Debug NbItems 
            For ni = NbItems - 1 To 0 Step -1                ; <- Il faut effacer dans l'autre sens  8O 
             Resultat = GetGadgetItemState(#LISTICON, ni) 
               If Resultat & #PB_ListIcon_Selected 
                 RemoveGadgetItem(#LISTICON, ni) 
               EndIf 
            Next 
            
            
            
      EndSelect 
  EndSelect 
  
Until Event = #PB_Event_CloseWindow 
End 
@ peluche

Publié : mar. 05/déc./2006 22:09
par Jacobus
Merci LNA, :D srod vient de m'expliquer exactement la même chose sur le forum anglais.
le pire c'est que j'ai déjà eu le problème :? mais parfois ça ne revient pas...