Gestion de rendez-vous en cours
Publié : mar. 04/mars/2025 14:59
Bonjour à tous,
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.
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
;}