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

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
David02
Messages : 46
Inscription : mer. 30/mars/2011 9:50

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

Message 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
Dernière modification par David02 le lun. 04/avr./2011 16:59, modifié 1 fois.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Sauvegarde et calcul d'une liste

Message par falsam »

Resultat = CountGadgetItems(#Liste)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Sauvegarde et calcul d'une liste

Message 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
     
Dernière modification par falsam le lun. 04/avr./2011 12:31, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
David02
Messages : 46
Inscription : mer. 30/mars/2011 9:50

Re: Sauvegarde et calcul d'une liste

Message 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.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Sauvegarde et calcul d'une liste

Message 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)))
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
David02
Messages : 46
Inscription : mer. 30/mars/2011 9:50

Re: Sauvegarde et calcul d'une liste

Message par David02 »

Merci :D
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Sauvegarde et calcul d'une liste

Message 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
     
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
David02
Messages : 46
Inscription : mer. 30/mars/2011 9:50

Re: Sauvegarde et calcul d'une liste

Message par David02 »

Merci pour toute l'aide.

Je vais essayer de tout comprendre pour pouvoir le réutiliser plus tard.
David02
Messages : 46
Inscription : mer. 30/mars/2011 9:50

Re: Sauvegarde et calcul d'une liste

Message 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.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Sauvegarde et calcul d'une liste

Message 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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
David02
Messages : 46
Inscription : mer. 30/mars/2011 9:50

Re: Sauvegarde et calcul d'une liste

Message par David02 »

Merci, ça fonctionne parfaitement.

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