j'essaie de faire un calendrier intelligent, mais je voudrais que quand je ferme l'éditeur que le programme ne se ferme pas complètement.
Je viens donc solliciter votre aide bienveillante et je vous en remercie par anticipation.
Code : Tout sélectionner
;Calendrier intelligent
XIncludeFile "D:\Programmation\Prg Perso\Include\Date2.pbi" ; Changez le chemin pour qu'il fonctionne
;{ Windows
Enumeration Fenetres
#Fenetre_principale
#Fenetre_edition
EndEnumeration
;}
;{ Gadgets
Enumeration Gadgets
#Txt_Mois
#Str_Jour_1
#Str_Jour_2
#Str_Jour_3
#Str_Jour_4
#Str_Jour_5
#Str_Jour_6
#Str_Jour_7
#Str_Jour_8
#Str_Jour_9
#Str_Jour_10
#Str_Jour_11
#Str_Jour_12
#Str_Jour_13
#Str_Jour_14
#Str_Jour_15
#Str_Jour_16
#Str_Jour_17
#Str_Jour_18
#Str_Jour_19
#Str_Jour_20
#Str_Jour_21
#Str_Jour_22
#Str_Jour_23
#Str_Jour_24
#Str_Jour_25
#Str_Jour_26
#Str_Jour_27
#Str_Jour_28
#Str_Jour_29
#Str_Jour_30
#Str_Jour_31
#Txt_Jour_1
#Txt_Jour_2
#Txt_Jour_3
#Txt_Jour_4
#Txt_Jour_5
#Txt_Jour_6
#Txt_Jour_7
#Txt_Jour_8
#Txt_Jour_9
#Txt_Jour_10
#Txt_Jour_11
#Txt_Jour_12
#Txt_Jour_13
#Txt_Jour_14
#Txt_Jour_15
#Txt_Jour_16
#Txt_Jour_17
#Txt_Jour_18
#Txt_Jour_19
#Txt_Jour_20
#Txt_Jour_21
#Txt_Jour_22
#Txt_Jour_23
#Txt_Jour_24
#Txt_Jour_25
#Txt_Jour_26
#Txt_Jour_27
#Txt_Jour_28
#Txt_Jour_29
#Txt_Jour_30
#Txt_Jour_31
#Str_Commentaire
#Btn_Enregistrer
EndEnumeration
Enumeration Polices
#PoliceGras
EndEnumeration
Enumeration Fichiers
#Fichier_cvs
EndEnumeration
LoadFont(#PoliceGras, "Arial", 12, #PB_Font_Bold)
;}
;{ Variables
Global Event
Global Mois = Month(Date())
Global Annee = Year(Date())
Global NbJours = JoursDansMois(Annee, Mois)
Global X, Fichier.s = "rappels.csv"
;}
Procedure SauvegarderRappel(Jour, Mois, Annee, Commentaire.s)
If OpenFile(#Fichier_cvs, Fichier, #PB_File_Append) ; Ouverture en mode ajout
FileSeek(#Fichier_cvs, Lof(#Fichier_cvs))
WriteStringN(#Fichier_cvs, Str(Jour) + "," + Str(Mois) + "," + Str(Annee) + "," + Commentaire)
CloseFile(#Fichier_cvs)
EndIf
EndProcedure
Procedure ChargerRappels()
If OpenFile(#Fichier_cvs, Fichier)
While Not Eof(#Fichier_cvs)
Ligne.s = ReadString(#Fichier_cvs)
Debug "Rappel chargé : " + Ligne ; Tu peux adapter ça pour afficher les rappels dans ton interface
Wend
CloseFile(#Fichier_cvs)
EndIf
EndProcedure
Procedure OuvrirEditeur(Jour)
OpenWindow(#Fenetre_edition, 200, 200, 400, 200, "Éditeur de Rappel", #PB_Window_SystemMenu)
TextGadget(#PB_Any, 10, 10, 380, 30, "Événement pour le : " + Str(Jour) + "/" + Str(Mois) + "/" + Str(Annee), #PB_Text_Center)
StringGadget(#Str_Commentaire, 10, 50, 380, 30, "", #SS_CENTERIMAGE)
ButtonGadget(#Btn_Enregistrer, 150, 100, 100, 30, "Enregistrer")
If IsFile(#Fichier_cvs)
ChargerRappels()
EndIf
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_CloseWindow And EventWindow() = #Fenetre_edition
HideWindow(#Fenetre_edition, #True) ; Cache au lieu de fermer)
EndIf
Until Event = #PB_Event_CloseWindow
EndProcedure
Procedure Programme_principal()
If OpenWindow(#Fenetre_principale, 977, 301, 560, 450, "Calendrier intelligent", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
TextGadget(#Txt_Mois, 10, 10, 540, 20, NomMois(Date(Annee, Mois, 1,0,0,0)) + " " + Str(Annee), #PB_Text_Center|#SS_CENTERIMAGE)
SetGadgetFont(#Txt_Mois, FontID(#PoliceGras))
TextGadget(#Txt_Jour_1, 20, 40, 70, 40, "1", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_2, 95, 40, 70, 40, "2", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_3, 170, 40, 70, 40, "3", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_4, 245, 40, 70, 40, "4", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_5, 320, 40, 70, 40, "5", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_6, 395, 40, 70, 40, "6", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_7, 470, 40, 70, 40, "7", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_8, 20, 120, 70, 40, "8", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_9, 95, 120, 70, 40, "9", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_10, 170, 120, 70, 40, "10", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_11, 245, 120, 70, 40, "11", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_12, 320, 120, 70, 40, "12", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_13, 395, 120, 70, 40, "13", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_14, 470, 120, 70, 40, "14", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_15, 20, 200, 70, 40, "15", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_16, 95, 200, 70, 40, "16", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_17, 170, 200, 70, 40, "17", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_18, 245, 200, 70, 40, "18", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_19, 320, 200, 70, 40, "19", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_20, 395, 200, 70, 40, "20", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_21, 470, 200, 70, 40, "21", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_22, 20, 270, 70, 40, "22", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_23, 95, 270, 70, 40, "23", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_24, 170, 270, 70, 40, "24", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_25, 245, 270, 70, 40, "25", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_26, 320, 270, 70, 40, "26", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_27, 396, 270, 70, 40, "27", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_28, 470, 270, 70, 40, "28", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_29, 20, 350, 70, 40, "29", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_30, 95, 350, 70, 40, "30", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_31, 170, 350, 70, 40, "31", #PB_Text_Center|#SS_CENTERIMAGE)
StringGadget(#Str_Jour_1, 20, 70, 70, 40, "")
StringGadget(#Str_Jour_2, 95, 70, 70, 40, "")
StringGadget(#Str_Jour_3, 170, 70, 70, 40, "")
StringGadget(#Str_Jour_4, 245, 70, 70, 40, "")
StringGadget(#Str_Jour_5, 320, 70, 70, 40, "")
StringGadget(#Str_Jour_6, 395, 70, 70, 40, "")
StringGadget(#Str_Jour_7, 470, 70, 70, 40, "")
StringGadget(#Str_Jour_8, 20, 150, 70, 40, "")
StringGadget(#Str_Jour_9, 95, 150, 70, 40, "")
StringGadget(#Str_Jour_10, 170, 150, 70, 40, "")
StringGadget(#Str_Jour_11, 245, 150, 70, 40, "")
StringGadget(#Str_Jour_12, 320, 150, 70, 40, "")
StringGadget(#Str_Jour_13, 395, 150, 70, 40, "")
StringGadget(#Str_Jour_14, 470, 150, 70, 40, "")
StringGadget(#Str_Jour_15, 20, 230, 70, 40, "")
StringGadget(#Str_Jour_16, 95, 230, 70, 40, "")
StringGadget(#Str_Jour_17, 170, 230, 70, 40, "")
StringGadget(#Str_Jour_18, 245, 230, 70, 40, "")
StringGadget(#Str_Jour_19, 320, 230, 70, 40, "")
StringGadget(#Str_Jour_20, 395, 230, 70, 40, "")
StringGadget(#Str_Jour_21, 470, 230, 70, 40, "")
StringGadget(#Str_Jour_22, 20, 310, 70, 40, "")
StringGadget(#Str_Jour_23, 95, 310, 70, 40, "")
StringGadget(#Str_Jour_24, 170, 310, 70, 40, "")
StringGadget(#Str_Jour_25, 245, 310, 70, 40, "")
StringGadget(#Str_Jour_26, 320, 310, 70, 40, "")
StringGadget(#Str_Jour_27, 395, 310, 70, 40, "")
StringGadget(#Str_Jour_28, 470, 310, 70, 40, "")
StringGadget(#Str_Jour_29, 20, 390, 70, 40, "")
StringGadget(#Str_Jour_30, 95, 390, 70, 40, "")
StringGadget(#Str_Jour_31, 170, 390, 70, 40, "")
For X = #Txt_Jour_1 To #Str_Jour_31
SetGadgetFont(X, FontID(#PoliceGras))
Select GetGadgetText(X)
Case "sam", "dim"
SetGadgetColor(X, #PB_Gadget_FrontColor, $ff)
EndSelect
Next x
Select JoursDansMois(Annee, Mois)
Case 30
HideGadget(#Str_Jour_31, #True)
HideGadget(#Txt_Jour_31, #True)
Case 29
HideGadget(#Str_Jour_30, #True)
HideGadget(#Txt_Jour_30, #True)
HideGadget(#Str_Jour_31, #True)
HideGadget(#Txt_Jour_31, #True)
Case 28
HideGadget(#Str_Jour_29, #True)
HideGadget(#Txt_Jour_29, #True)
HideGadget(#Str_Jour_30, #True)
HideGadget(#Txt_Jour_30, #True)
HideGadget(#Str_Jour_31, #True)
HideGadget(#Txt_Jour_31, #True)
EndSelect
EndIf
EndProcedure
Programme_principal()
;{- Boucle événementielle
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
If EventGadget() = #Btn_Enregistrer
Debug "Commentaire ajouté : " + GetGadgetText(#Str_Commentaire)
SauvegarderRappel(EventWindow(), Mois, Annee, GetGadgetText(#Str_Commentaire))
EndIf
If EventGadget() >= #Str_Jour_1 And EventGadget() <= #Str_Jour_31
If IsWindow(#Fenetre_edition)
HideWindow(#Fenetre_edition, #False) ; Réaffiche la fenêtre sans la recréer
Else
OuvrirEditeur(EventGadget())
EndIf
EndIf
Case #PB_Event_CloseWindow
If EventWindow() = #Fenetre_principale
CloseWindow(#Fenetre_principale)
Break
End
EndIf
EndSelect
Until Event = #PB_Event_CloseWindow
;}