Page 1 sur 1

comment faire pour suuprimer un elements d'une liste ????

Publié : ven. 10/sept./2004 15:35
par jbernard13
bonjour
je voudrais savoir

comment faire pour suuprimer un elements d'une liste
creer avec listicongadgets ( j'ai mis l'option chexbox)

que je veux faire c'est pouvoir cocher la case et ensuite dire au programme de la supprimer .


merci

Jbernard

Publié : ven. 10/sept./2004 16:43
par Chris
Comme ça, par exemple:

Code : Tout sélectionner

Enumeration 
  #MainWindow 
  #List 
  #Button
EndEnumeration 

; Procedure de suppression
; Utilisation de la récursivité
Procedure RemoveGadget()
  i = 0
  Repeat
    If GetGadgetItemState(#List, i) & #PB_ListIcon_Checked ; Si l'item est marqué
      RemoveGadgetItem(#List,i); on le retire
      ProcedureReturn RemoveGadget(); on rappelle la procedure
    Else
      i+1
    EndIf
  Until i >= CountGadgetItems(#List) Or CountGadgetItems(#List) = 0
EndProcedure

;- Crée la fenêtre et la GadgetList
If OpenWindow(#MainWindow, 0, 0, 320, 300, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, "") 
  If CreateGadgetList(WindowID())
    ListIconGadget(#List, 10, 10, 300, 240, "Colonne 1", 280, #PB_ListIcon_MultiSelect|#PB_ListIcon_CheckBoxes) 
    ButtonGadget(#Button, WindowWidth()/2 -80, 270, 160, 20, "Dégage moi tout ça !") 
    
    ;- Rempli la liste
    For i.b = 1 To 12 
      AddGadgetItem(#List, -1, "Item "+Str(i)) 
    Next i 
    
    Repeat 
      Select WaitWindowEvent() 
        Case #PB_EventGadget 
          Select EventGadgetID() 
            Case #Button ; Appel de la procédure de suppression
              RemoveGadget()
          EndSelect
          
        Case #PB_EventCloseWindow : Quit = #True
      EndSelect 
    Until Quit 
    
  EndIf 
EndIf 
End 

Publié : ven. 10/sept./2004 16:53
par jbernard13
merci
j'ai resolu sans mettre la checkbox


merci

et comment marche les raccourci de menu ?


merci chris

Publié : ven. 10/sept./2004 16:54
par Chris
Dans la procedure, mets

Code : Tout sélectionner

If i < CountGadgetItems(#List)
   ProcedureReturn RemoveGadget(); on rappelle la procedure
EndIf
au lieu de

Code : Tout sélectionner

ProcedureReturn RemoveGadget(); on rappelle la procedure
Pour éviter le plantage au cas ou la liste n'aurait plus d'éléments.

Publié : ven. 10/sept./2004 17:07
par nico
Dans ce cas, autant faire simple Chris:

Code : Tout sélectionner

For Element = 0 To CountGadgetItems(#ListIconGadget)-1 
  If GetGadgetItemState(#ListIconGadget,Element)=#PB_ListIcon_Checked
    RemoveGadgetItem(#ListIconGadget, Element) 
    Element=Element-1 
  EndIf 
Next
:)

Publié : ven. 10/sept./2004 17:11
par Chris
Pourquoi faire simple quand on peut faire compliqué! (Proverbe Shaddok) :lol: