Page 1 sur 1

[Résolu] Sauvegarde et calcul d'une liste

Publié : lun. 04/avr./2011 11:21
par David02
Bonjour,

J'aimerais savoir comment faire pour effectuer un enregistrement d'une liste pour pouvoir la réutiliser dans le logiciel.
J'aimerais aussi savoir comment faire pour avoir le nombre d'item dans une liste.

Voici le code:

Code : Tout sélectionner

Enumeration
   #fenetre
   #liste
   #add
   #text
   #save
   #quit
   #nbre
   #liste2
   #add2
   #text2
   #nbre2
EndEnumeration

OpenWindow(#fenetre, 0, 0 , 600, 400, "DVD Collection", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_TitleBar | #PB_Window_MinimizeGadget)
ListViewGadget(#liste, 10, 45, 200, 320)
ButtonGadget(#add, 225, 100, 150, 25, "<<< Ajouter à ma collection")
StringGadget(#text, 225, 70, 150, 20, "Ajouter...")
StringGadget(#nbre, 50, 20, 100, 20, "Total:")
ListViewGadget(#liste2, 390, 45, 200, 320)
ButtonGadget(#add2, 225, 280, 150, 25, "Ajouter à mes envies >>>")
StringGadget(#text2, 225, 250, 150, 20, "Ajouter...")
StringGadget(#nbre2, 440, 20, 100, 20, "Total:")

If CreateMenu(0, WindowID(0))
  MenuTitle("Fichier")
  MenuItem(#save, "Enregistrer")
  MenuItem(#quit, "Quitter")
EndIf

  Repeat
   EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget
      Select EventGadget()
       
       Case #add
         AddGadgetItem(#liste, 0, GetGadgetText(#text), 0)
       Case #add2
         AddGadgetItem(#liste2, 0, GetGadgetText(#text2), 0)
       
      EndSelect
    EndIf
  Until EventID = #PB_Event_CloseWindow
Merci

Re: Sauvegarde et calcul d'une liste

Publié : lun. 04/avr./2011 11:30
par falsam
Resultat = CountGadgetItems(#Liste)

Re: Sauvegarde et calcul d'une liste

Publié : lun. 04/avr./2011 11:51
par falsam
Pour sauvegarder ta liste
ajoute #File dans tes enumeration

Dans la boucle évènementielle (#PB_Event_Menu)

Code : Tout sélectionner

If CreateFile(#File, "liste.txt")
   For i=1 To CountGadgetItems(#Liste)-1
        WriteStringN(#File, GetGadgetItemText(#Liste, i),#PB_Ascii)
   Next
   CloseFile(#File)
EndIf

Code complet

Code : Tout sélectionner

Enumeration
   #fenetre
   #liste
   #add
   #text
   #save
   #quit
   #nbre
   #liste2
   #add2
   #text2
   #nbre2
   
   #File
EndEnumeration

OpenWindow(#fenetre, 0, 0 , 600, 400, "DVD Collection", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_TitleBar | #PB_Window_MinimizeGadget)
ListViewGadget(#liste, 10, 45, 200, 320)
ButtonGadget(#add, 225, 100, 150, 25, "<<< Ajouter à ma collection")
StringGadget(#text, 225, 70, 150, 20, "Ajouter...")
StringGadget(#nbre, 50, 20, 100, 20, "Total:")
ListViewGadget(#liste2, 390, 45, 200, 320)
ButtonGadget(#add2, 225, 280, 150, 25, "Ajouter à mes envies >>>")
StringGadget(#text2, 225, 250, 150, 20, "Ajouter...")
StringGadget(#nbre2, 440, 20, 100, 20, "Total:")

If CreateMenu(0, WindowID(0))
  MenuTitle("Fichier")
  MenuItem(#save, "Enregistrer")
  MenuItem(#quit, "Quitter")
EndIf

Repeat
   EventID = WaitWindowEvent()
   Select EventID
     Case #PB_Event_Menu
       Select EventMenu()
         Case #Save
           If CreateFile(#File, "liste.txt")
             For i=0 To CountGadgetItems(#Liste)-1
               WriteStringN(#File, GetGadgetItemText(#Liste, i),#PB_Ascii)
             Next
             CloseFile(#File)
           EndIf
           
       EndSelect
       
     Case #PB_Event_Gadget
       Select EventGadget()
         Case #add
           AddGadgetItem(#liste, 0, GetGadgetText(#text), 0)
           SetGadgetText(#nbre, Str(CountGadgetItems(#Liste)))

         Case #add2
           AddGadgetItem(#liste2, 0, GetGadgetText(#text2), 0)

       EndSelect
       
     Case #PB_Event_CloseWindow
       End
   EndSelect  
 ForEver
     

Re: Sauvegarde et calcul d'une liste

Publié : lun. 04/avr./2011 12:00
par David02
Après je rajoute SaveFileRequester() ?

Par contre pour CountGadgetItems() j'ai un problème.

J'ai mis ce code là:

Code : Tout sélectionner

StringGadget(#nbre, 50, 20, 100, 20, "Total: " + Str(CountGadgetItems(#liste)))
Mais cela ne fonctionne pas.
Il m'indique 0 dans le stringgadget() mais quand je rajoute, rien ne change et il reste à 0.
J'ai essayé sans Str() mais il m'indique que je ne peux pas.

Re: Sauvegarde et calcul d'une liste

Publié : lun. 04/avr./2011 12:04
par falsam
J'ai corrigé mon code précédent pour te montrer ou placer ton compteur.

Code : Tout sélectionner

SetGadgetText(#nbre, Str(CountGadgetItems(#Liste)))

Re: Sauvegarde et calcul d'une liste

Publié : lun. 04/avr./2011 12:11
par David02
Merci :D

Re: Sauvegarde et calcul d'une liste

Publié : lun. 04/avr./2011 12:34
par falsam
Ajout du chargement d'un fichier de sauvegarde à l'ouverture du programme.
Ce qui est fait pour une liste, tu peux le faire pour la deuxième liste.

Code : Tout sélectionner

Enumeration
   #fenetre
   #liste
   #add
   #text
   #open
   #save
   #quit
   #nbre
   #liste2
   #add2
   #text2
   #nbre2
   
   #File
EndEnumeration

OpenWindow(#fenetre, 0, 0 , 600, 400, "DVD Collection", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_TitleBar | #PB_Window_MinimizeGadget)
ListViewGadget(#liste, 10, 45, 200, 320)
ButtonGadget(#add, 225, 100, 150, 25, "<<< Ajouter à ma collection")
StringGadget(#text, 225, 70, 150, 20, "Ajouter...")
StringGadget(#nbre, 50, 20, 100, 20, "Total:")
ListViewGadget(#liste2, 390, 45, 200, 320)
ButtonGadget(#add2, 225, 280, 150, 25, "Ajouter à mes envies >>>")
StringGadget(#text2, 225, 250, 150, 20, "Ajouter...")
StringGadget(#nbre2, 440, 20, 100, 20, "Total:")

If CreateMenu(0, WindowID(0))
  MenuTitle("Fichier")
  MenuItem(#save, "Enregistrer")
  MenuItem(#quit, "Quitter")
EndIf

If ReadFile(#File, "liste.txt") ; Si le fichier peut être lu , on continue...
    While Eof(#file) = 0 ;Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File') 
      AddGadgetItem(#liste, -1, ReadString(#file)) ; lit et ajoute ligne par ligne le contenu du fichier
    Wend
    SetGadgetText(#nbre, Str(CountGadgetItems(#Liste)))
    CloseFile(#file); Ferme le fichier précédemment ouvert
  Else
    MessageRequester("Information","Impossible d'ouvrir le fichier!")
  EndIf

Repeat
   EventID = WaitWindowEvent()
   Select EventID
     Case #PB_Event_Menu
       Select EventMenu()
         Case #Save
           If CreateFile(#File, "liste.txt")
             For i=0 To CountGadgetItems(#Liste)-1
               WriteStringN(#File, GetGadgetItemText(#Liste, i),#PB_Ascii)
             Next
             CloseFile(#File)
           EndIf
           
       EndSelect
       
     Case #PB_Event_Gadget
       Select EventGadget()
         Case #add
           AddGadgetItem(#liste, 0, GetGadgetText(#text), 0)
           SetGadgetText(#nbre, Str(CountGadgetItems(#Liste)))
         Case #add2
           AddGadgetItem(#liste2, 0, GetGadgetText(#text2), 0)    
       EndSelect
       
     Case #PB_Event_CloseWindow
       End
   EndSelect  
 ForEver
     

Re: Sauvegarde et calcul d'une liste

Publié : lun. 04/avr./2011 13:05
par David02
Merci pour toute l'aide.

Je vais essayer de tout comprendre pour pouvoir le réutiliser plus tard.

Re: Sauvegarde et calcul d'une liste

Publié : lun. 04/avr./2011 14:26
par David02
Je voudrais savoir comment effacer l'item que l'on souhait d'une liste?

Code : Tout sélectionner

Case #supp
         RemoveGadgetItem(#liste, 0)
J'ai effectué un raccourci clavier avec la touche Delete.
Je sais que le 0 ou un autre chiffre indique la position a effacé mais je souhaite plutôt effacé l'item que je souhaite.

Re: Sauvegarde et calcul d'une liste

Publié : lun. 04/avr./2011 15:30
par Ar-S
Probablement comme ça..

Code : Tout sélectionner

 numAvirer=GetGadgetState(#list)
 RemoveGadgetItem(#list, numAvirer)
Extrait de la doc :
AddGadgetItem(): Ajoute un élément
- CountGadgetItems(): Renvoie le nombre de lignes contenues dans le gadget.
- RemoveGadgetItem(): Supprime un élément
- ClearGadgetItems(): Supprime tous les éléments
- GetGadgetItemData(): Renvoie la valeur personnalisée associée à cet élément.
- SetGadgetItemData(): Associe une valeur personnalisée à cet élément.
- GetGadgetItemText(): Renvoie le texte de l'élément spécifié.
- SetGadgetItemText(): Change le texte de l'élément spécifié.
- GetGadgetItemState(): Renvoie 0 si l'élément n'est pas séléctionné, sinon une valeur non-nulle.
- SetGadgetItemState(): Sélectionne ou désélectionne l'élément spécifié.
- GetGadgetState(): Renvoie le numéro de l'élément qui est sélectionné, -1 si il n'y a pas de sélection.
- SetGadgetState(): Change l'état de l'élément spécifié.
- GetGadgetText(): Renvoie le texte de l'élément sélectionné.
- SetGadgetText(): Sélectionne l'élément correspondant au texte indiqué. Le texte doit exactement correspondre.

Re: Sauvegarde et calcul d'une liste

Publié : lun. 04/avr./2011 15:34
par David02
Merci, ça fonctionne parfaitement.

J'avais pas vu dans l'aide pourtant je la regarde tout le temps.