puisque j'ai souvent eus besoin de votre aide bienveillante, je me suis dit que je pouvais aider aussi les autres PBcistes.
Un petit programme simple et utile.
Code : Tout sélectionner
;{Enumération
Enumeration Fichier
#Fichier_CVS
EndEnumeration
Enumeration Fenetres
#Fenetre_principale
EndEnumeration
Enumeration Gadgets
#Txt_Date
#Txt_Heure
#Txt_Desciption
#Txt_Statut
#Dte
#Str_Heure
#Str_Desciption
#Str_Statut
#Btn_Ajouter
#Btn_Sauvegarde
#Btn_Charger
#Btn_Supprimer
#Lst
EndEnumeration
;}
;{ Déclaration des structures et des variables
Structure RendezVous
Date.s
Heure.s
Description.s
Statut.s
EndStructure
Global NewList RendezVousListe.RendezVous()
Global Quitter.b
;}
;{ Déclaration des procédures
Declare AfficherRendezVousListe()
Declare AjouterRendezVous(Date.s, Heure.s, Description.s, Statut.s)
Declare AfficherRendezVousEnCours()
Declare SauvegarderRendezVousCSV(Fichier.s)
Declare RechercherRendezVous(DateDebut.s, DateFin.s)
Declare ChargerRendezVousCSV(Fichier.s)
Declare SupprimerRendezVous(Index.l)
Declare Programme_principal()
;}
Programme_principal()
;{ Ajout des rendez-vous dans le gaggetList
Procedure AfficherRendezVousListe()
ClearGadgetItems(#Lst)
ForEach RendezVousListe()
AddGadgetItem(#Lst, -1, "Date: " + RendezVousListe()\Date + ", Heure: " + RendezVousListe()\Heure + ", Description: " + RendezVousListe()\Description + ", Statut: " + RendezVousListe()\Statut)
Next
EndProcedure
;}
;{ Ajout des rendez-vous
Procedure AjouterRendezVous(Date.s, Heure.s, Description.s, Statut.s)
AddElement(RendezVousListe())
RendezVousListe()\Date = Date
RendezVousListe()\Heure = Heure
RendezVousListe()\Description = Description
RendezVousListe()\Statut = Statut
EndProcedure
;}
;{ Affichage des rendez-vous en cours
Procedure AfficherRendezVousEnCours()
ForEach RendezVousListe()
If RendezVousListe()\Statut = "En cours"
Debug "Date : " + RendezVousListe()\Date + ", Heure : " + RendezVousListe()\Heure + ", Description : " + RendezVousListe()\Description
EndIf
Next
EndProcedure
;}
;{ Sauvegarde des rendez-vous dans un fichier CVS
Procedure SauvegarderRendezVousCSV(Fichier.s)
If CreateFile(0, Fichier)
WriteStringN(0, "Date,Heure,Description,Statut") ; En-tête du fichier CSV
ForEach RendezVousListe()
WriteStringN(0, RendezVousListe()\Date + "," + RendezVousListe()\Heure + "," + RendezVousListe()\Description + "," + RendezVousListe()\Statut)
Next
CloseFile(0)
EndIf
EndProcedure
;{ Recherche des rendez-vous par critères
Procedure RechercherRendezVous(DateDebut.s, DateFin.s)
ForEach RendezVousListe()
If RendezVousListe()\Statut = "Passé" And RendezVousListe()\Date >= DateDebut And RendezVousListe()\Date <= DateFin
Debug "Date : " + RendezVousListe()\Date + ", Heure : " + RendezVousListe()\Heure + ", Description : " + RendezVousListe()\Description
EndIf
Next
EndProcedure
;}
;{ Chargement des rendez-vous
Procedure ChargerRendezVousCSV(Fichier.s)
If ReadFile(#Fichier_CVS, Fichier)
ClearList(RendezVousListe())
While Not Eof(#Fichier_CVS)
Ligne.s = ReadString(#Fichier_CVS)
If Ligne <> "Date,Heure,Description,Statut" ; Ignorer l'en-tête
Donnees.s = StringField(Ligne, 1, ",")
Date.s = StringField(Ligne, 1, ",")
Heure.s = StringField(Ligne, 2, ",")
Description.s = StringField(Ligne, 3, ",")
Statut.s = StringField(Ligne, 4, ",")
AjouterRendezVous(Date, Heure, Description, Statut)
EndIf
Wend
CloseFile(#Fichier_CVS)
EndIf
EndProcedure
;}
;{ Supprimer un rendez-vous
Procedure SupprimerRendezVous(Index.l)
If Index >= 0 And Index < CountGadgetItems(#Lst)
SelectElement(RendezVousListe(), Index)
DeleteElement(RendezVousListe())
AfficherRendezVousListe()
EndIf
EndProcedure
;}
;{ Programme principal
Procedure Programme_principal()
If OpenWindow(#Fenetre_principale, 100, 100, 600, 400, "Gestion des Rendez-vous", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget(#Txt_Date, 20, 20, 130, 20, "Date (JJ/MM/AAAA):")
DateGadget(#Dte, 160, 20, 100, 20, "%dd/%mm/%yyyy")
TextGadget(#Txt_Heure, 20, 60, 130, 20, "Heure (HH:MM):")
StringGadget(#Str_Heure, 160, 60, 100, 20, "")
TextGadget(#Txt_Desciption, 20, 100, 130, 20, "Description:")
StringGadget(#Str_Desciption, 160, 100, 200, 20, "")
TextGadget(#Txt_Statut, 20, 140, 130, 20, "Statut (En cours/Passé):")
StringGadget(#Str_Statut, 160, 140, 100, 20, "")
ButtonGadget(#Btn_Ajouter, 20, 180, 120, 30, "Ajouter Rendez-vous")
ButtonGadget(#Btn_Sauvegarde, 150, 180, 100+20, 30, "Sauvegarder CSV")
ButtonGadget(#Btn_Charger, 280, 180, 100, 30, "Charger CSV")
ButtonGadget(#Btn_Supprimer, 400, 180, 100, 30, "Supprimer RDV")
ListViewGadget(#Lst, 20, 220, 560, 160)
; Boucle d'événements
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #Btn_Ajouter
; Ajouter le rendez-vous à la liste
AjouterRendezVous(GetGadgetText(#Dte), GetGadgetText(#Str_Heure), GetGadgetText(#Str_Desciption), GetGadgetText(#Str_Statut))
AfficherRendezVousListe()
Case #Btn_Sauvegarde
; Sauvegarder les rendez-vous dans un fichier CSV
SauvegarderRendezVousCSV("rendezvous.csv")
Case #Btn_Charger
; Charger les rendez-vous à partir d'un fichier CSV
ChargerRendezVousCSV("rendezvous.csv")
AfficherRendezVousListe()
Case #Btn_Supprimer
SupprimerRendezVous(GetGadgetState(#Lst))
EndSelect
Case #PB_Event_CloseWindow
Quitter = 1
EndSelect
Until Quitter = 1
EndIf
EndProcedure
;}