je voulais apprendre à sauvegarder autrement qu'en JSON, alors j'ai eu l'idée de créer un petit tableur tout simple et de sauvegarder les donnes dans un fichier "Tableur.csv".
Code : Tout sélectionner
; Exemple de création d'une interface utilisateur avec une grille et saisie de données
Enumeration fenetres
#Fenetre
EndEnumeration
Enumeration Gadgets
#Grille
#Champ_Nom
#Champ_Prenom
#Champ_Age
#Btn_Charger
#Btn_Ajouter
#Btn_Modifier
#Btn_Supprimer
#Btn_Sauvegarder
EndEnumeration
Enumeration Fichiers
#Fichier
EndEnumeration
Global Evenement
Global.s Fichier.s = "Tableur.csv"
Declare Programme_principal()
Declare Charger()
Declare Ajouter()
Declare Modifier()
Declare Supprimer()
Declare Sauvegarder()
Declare RemplirChamps()
Programme_principal()
Procedure Programme_principal()
If OpenWindow(#Fenetre, 100, 100, 540, 380, UCase("Tableur avec interface par Micoute"), #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
; Création de la grille
ListIconGadget(#Grille, 10, 10, 410, 270, "Nom", 150)
AddGadgetColumn(#Grille, 1, "Prénom", 150)
AddGadgetColumn(#Grille, 2, "Âge", 100)
; Création des champs de saisie
TextGadget(#PB_Any, 10, 290, 100, 20, "Nom :")
StringGadget(#Champ_Nom, 120, 290, 150, 20, "")
TextGadget(#PB_Any, 10, 320, 100, 20, "Prénom :")
StringGadget(#Champ_Prenom, 120, 320, 150, 20, "")
TextGadget(#PB_Any, 10, 350, 100, 20, "Âge :")
StringGadget(#Champ_Age, 120, 350, 150, 20, "")
; Création des boutons
ButtonGadget(#Btn_Charger, 430, 10, 100, 30, "Charger")
ButtonGadget(#Btn_Ajouter, 430, 70, 100, 30, "Ajouter")
ButtonGadget(#Btn_Modifier, 430, 130, 100, 30, "Modifier")
ButtonGadget(#Btn_Supprimer, 430, 190, 100, 30, "Supprimer")
ButtonGadget(#Btn_Sauvegarder, 430, 250, 100, 30, "Sauvegarder")
Repeat
Evenement = WaitWindowEvent()
Select Evenement
Case #PB_Event_Gadget
Select EventGadget()
Case #Btn_Charger
Charger()
Case #Btn_Ajouter
Ajouter()
Case #Btn_Modifier
Modifier()
Case #Btn_Supprimer
Supprimer()
Case #Grille
RemplirChamps()
Case #Btn_Sauvegarder
Sauvegarder()
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Fenetre
CloseWindow(#Fenetre)
End
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
EndProcedure
Procedure Charger()
If ReadFile(#Fichier, Fichier)
ClearGadgetItems(#Grille) ; Efface les anciennes données de la grille
While Eof(#Fichier) = 0
Ligne$ = ReadString(#Fichier)
If Ligne$ <> "" And FindString(Ligne$, "Nom,Prénom,Âge") = 0 ; Ignore la ligne des en-têtes
Elements$ = StringField(Ligne$, 1, ",") + #LF$ + StringField(Ligne$, 2, ",") + #LF$ + StringField(Ligne$, 3, ",")
AddGadgetItem(#Grille, -1, Elements$)
EndIf
Wend
CloseFile(#Fichier)
Else
MessageRequester("Information", "Impossible d'ouvrir le fichier !")
EndIf
EndProcedure
Procedure Ajouter()
Nom$ = GetGadgetText(#Champ_Nom)
Prenom$ = GetGadgetText(#Champ_Prenom)
Age$ = GetGadgetText(#Champ_Age)
AddGadgetItem(#Grille, -1, Nom$ + #LF$ + Prenom$ + #LF$ + Age$)
SetGadgetText(#Champ_Nom, "")
SetGadgetText(#Champ_Prenom, "")
SetGadgetText(#Champ_Age, "")
EndProcedure
Procedure Modifier()
LigneChoisie = GetGadgetState(#Grille)
If LigneChoisie <> -1
SetGadgetItemText(#Grille, LigneChoisie, GetGadgetText(#Champ_Nom), 0)
SetGadgetItemText(#Grille, LigneChoisie, GetGadgetText(#Champ_Prenom), 1)
SetGadgetItemText(#Grille, LigneChoisie, GetGadgetText(#Champ_Age), 2)
SetGadgetText(#Champ_Nom, "")
SetGadgetText(#Champ_Prenom, "")
SetGadgetText(#Champ_Age, "")
EndIf
EndProcedure
Procedure Supprimer()
RemoveGadgetItem(#Grille, GetGadgetState(#Grille))
EndProcedure
Procedure RemplirChamps()
LigneChoisie = GetGadgetState(#Grille)
If LigneChoisie <> -1
SetGadgetText(#Champ_Nom, GetGadgetItemText(#Grille, LigneChoisie, 0))
SetGadgetText(#Champ_Prenom, GetGadgetItemText(#Grille, LigneChoisie, 1))
SetGadgetText(#Champ_Age, GetGadgetItemText(#Grille, LigneChoisie, 2))
EndIf
EndProcedure
Procedure Sauvegarder()
If Fichier
If CreateFile(#Fichier, Fichier)
WriteStringN(#Fichier, "Nom,Prénom,Âge")
For i = 0 To CountGadgetItems(#Grille) - 1
Ligne$ = GetGadgetItemText(#Grille, i, 0) + "," + GetGadgetItemText(#Grille, i, 1) + "," + GetGadgetItemText(#Grille, i, 2)
WriteStringN(0, Ligne$)
Next i
CloseFile(#Fichier)
MessageRequester("Info", "Le fichier a été sauvegardé avec succès.")
Else
MessageRequester("Erreur", "Impossible de sauvegarder le fichier.")
EndIf
EndIf
EndProcedure