Page 1 sur 1

[Résolu] Comment effacer les données d'une liste

Publié : dim. 06/juin/2021 8:51
par Micoute
Bonjour à tous,

je bute sur un petit problème d'effacement des éléments d'une liste.

Voici ce que je souhaite faire :
j'ai créé une suite dans laquelle on peut trouver l'annuaire de mes praticiens, l'affichage de mes rendez-vous, la gestion des praticiens pour en ajouter ou pour en supprimer, la gestion des patients c'est à dire les membres de la famille, la gestion de prises de rendez-vous et pour finir pour l'instant, la recherche par critères par profession, je verrai par la suite si je peux compléter avec d'autres critères.

j'essaie d'effacer le contenu de ma liste avec ClearGadgetItems que j'ai conditionné, d'habitude ça fonctionne bien.

j'aimerais aussi que la liste s'affiche aussitôt que j'ai cliqué dans le combobox, mais je n'ai pas trouvé alors que dans la liste de courses que je codée pour mon épouse fonctionne très bien.

Je vous remercie beaucoup, car je sais que vous allez m'aider.

Code : Tout sélectionner

Procedure Critere_choisi()
  Protected critere.s = "", Resultat = 0
  Resultat = ListSize(Recherche())
  If Resultat
    ClearGadgetItems(#Lst_Rec_Reponses)
  EndIf  
  Select EventType()
    Case #PB_EventType_LostFocus
      Select EventGadget()
        Case #Cmb_Rec_Profession
          critere =  GetGadgetItemText(#Cmb_Rec_Profession, GetGadgetState(#Cmb_Rec_Profession))
          ;{ remplissage de la liste avec le critère choisi
          ForEach Prise_rdv()
            If Prise_rdv()\Profession = critere
              With Prise_rdv()
                AddElement(Recherche())
                Recherche()\Qui = \Qui
                Recherche()\Quand = \Quand
                Recherche()\Avec = \Avec
                Recherche()\Profession = \Profession
                Recherche()\Heure = \Heure
              EndWith
            EndIf
          Next
          ;}
      EndSelect
  EndSelect
  ;{ remplissage de la liste d'affichage selon les modalités
  i = 0
  ForEach Recherche()
    With Recherche()
      If \Heure
        AddGadgetItem(#Lst_Rec_Reponses, i, \Qui+" "+\Quand+" "+\Avec+" à "+\Heure)
      Else
        AddGadgetItem(#Lst_Rec_Reponses, i, \Qui+" "+\Quand+" "+\Avec)
      EndIf  
      SetGadgetItemData(#Lst_Rec_Reponses, CountGadgetItems(#Lst_Rec_Reponses) - 1, ListIndex(Recherche()))
    EndWith
    i + 1
  Next
  ;}
EndProcedure

Re: Comment effacer les données d'une liste

Publié : dim. 06/juin/2021 9:34
par kernadec
bjr Micoute
a part ces deux commandes je vois pas sinon removegadgetitem

Code : Tout sélectionner

ClearGadgetItems(#Gadget)
; et
For Position = 0  To CountGadgetItems(#Gadget)
RemoveGadgetItem(#Gadget, Position)
next Position
 ;ou
ClearList(Liste()) 


Cordialement

Re: Comment effacer les données d'une liste

Publié : dim. 06/juin/2021 12:54
par Micoute
Merci beaucoup kernadec, ça prouve seulement que j'avais raison, donc je ne comprends pas mieux.

Re: Comment effacer les données d'une liste

Publié : dim. 06/juin/2021 22:18
par Ollivier
Il faut voir l'ensemble du code : comment est appelée ta procédure ?

Personnellement, tous les fonctions EventType() EventGadget() :
- soit elles ne sont enregistrées qu'une fois pour toute à chaque boucle si un WindowEvent() m'indique qu'il y a besoin de les lire.
- soit elles ne sont pas du tout appelées, et c'est BindEvent() et BindGadgetEvent() qui s'en occupe.