Voici déjà le programme principal, il est en deux parties à recoller bout à bout.
Code : Tout sélectionner
;Calculatrice Micoutesoft (Calculs de Date et Heure)
XIncludeFile "Fonctions DateF.pbi"
XIncludeFile "Conversion d'un entier en chiffres romains.pb"
Enumeration
#Fenetre_Principale
EndEnumeration
Enumeration
#Img_0
#Paneau_DH_principal
;1 date
#Txt_JDA_1D
#Btn_1D_Vider
#Btn_1D_Date
#Spn_J_1D
#Spn_M_1D
#Spn_A_1D
#Txt_Date_JDS_JJ_MM_AAAA_1D
#Txt_SDA_1D
#Txt_JDM_1D
#Txt_AB_1D
#Txt_AR_1D
#Str_JDA_1D
#Str_SDA_1D
#Str_JDM_1D
#Str_AB_1D
#Str_AR_1D
;2 dates
#Btn_2D_Vider
#Txt_DD_2D
#Txt_DF_2D
#Btn_JED_2D
#Frame_Diff_2D
#Txt_Nb_annees_2D
#Txt_Nb_mois_2D
#Txt_Nb_jours_2D
#Spn_J_DD_2D
#Spn_M_DD_2D
#Spn_A_DD_2D
#Spn_J_DF_2D
#Spn_M_DF_2D
#Spn_A_DF_2D
#Str_JED_2D
;heures
#Btn_H_Vider
#Btn_H_Valider
#Txt_HD_H
#Txt_HF_H
#Frame_Diff_H
#Spn_S_HD
#Spn_M_HD
#Spn_H_HD
#Spn_S_HF
#Spn_M_HF
#Spn_H_HF
#Txt_Nb_heures_H
#Txt_Nb_Minutes_H
#Txt_Nb_Secondes_H
#Txt_Signature
;Panneau_Conv_Temps
#Ctn_0
#Ctn_1
#Txt_Annee_0
#Txt_Mois_0
#Txt_Semaine_0
#Txt_Jour_0
#Txt_Heure_0
#Txt_Minute_0
#Txt_Seconde_0
#Spn_Annee_0
#Spn_Mois_0
#Spn_Semaine_0
#Spn_Jour_0
#Spn_Heure_0
#Spn_Minute_0
#Spn_Seconde_0
#Txt_Annee_1
#Txt_Mois_1
#Txt_Semaine_1
#Txt_Jour_1
#Txt_Heure_1
#Txt_Minute_1
#Txt_Seconde_1
#Str_Annee_1
#Str_Mois_1
#Str_Semaine_1
#Str_Jour_1
#Str_Heure_1
#Str_Minute_1
#Str_Seconde_1
#Timer
#Btn_Annee_0
#Btn_Mois_0
#Btn_Semaine_0
#Btn_Jour_0
#Btn_Heure_0
#Btn_Minute_0
#Btn_Seconde_0
;Panneau_JDS_WE
#Ctn_1_JDS
#Txt_de_JDS
#Txt_a_JDS
#Txt_de2_JDS
#Txt_a2_JDS
#Str_de2_JDS
#Str_a2_JDS
#Spn_J_de_JDS
#Spn_M_de_JDS
#Spn_A_de_JDS
#Spn_J_a_JDS
#Spn_M_a_JDS
#Spn_A_a_JDS
#Ctn_2_JDS
#Frm_JDS_JDS
#Txt_Lundi_JDS
#Txt_Mardi_JDS
#Txt_Mercredi_JDS
#Txt_Jeudi_JDS
#Txt_Vendredi_JDS
#Txt_Samedi_JDS
#Txt_Dimanche_JDS
#Str_Lundi_JDS
#Str_Mardi_JDS
#Str_Mercredi_JDS
#Str_Jeudi_JDS
#Str_Vendredi_JDS
#Str_Samedi_JDS
#Str_Dimanche_JDS
#Txt_Semaines_JDS
#Date_Semaines_JDS
#Txt_WE_JDS
#Date_WE_JDS
#Btn_Valider_JDS
EndEnumeration
Enumeration
#Id_Img
EndEnumeration
Enumeration
#Police_1
#Police_2
EndEnumeration
Structure sSemaine
Lundi.q
Mardi.q
Mercredi.q
Jeudi.q
Vendredi.q
Samedi.q
Dimanche.q
EndStructure
LoadFont(#Police_1, "Arial", 8, #PB_Font_HighQuality)
LoadFont(#Police_2, "Arial", 12, #PB_Font_Bold)
#UniteTemps = "an|s,mois,jour|s,heure|s,minute|s,seconde|s"
Structure sTemps
Annee.f
Mois.f
Semaine.f
Jour.f
Heure.f
Minute.f
Seconde.f
EndStructure
Declare Calcul()
Declare _Annee_()
Declare _Mois_()
Declare _Semaine_()
Declare _Jour_()
Declare _Heure_()
Declare _Minute_()
Declare _Seconde_()
UsePNGImageDecoder()
Global Evenement, MaDiff.DiffTemps, Date1.q, Date2.q
Global.q Jour1_2D, Mois1_2D, Annee1_2D, Jour2_2D, Mois2_2D, Annee2_2D, DateAvant_2D, DateApres_2D
Global.s Date1_2D, Date2_2D, Txt_Total_Jours, Txt_An, Txt_Mois, Txt_Jour
Global.sTemps Temps
Global Evenement, JDSdate1$, JDSdate2$, JDSDate1.q, JDSDate2.q, JDSdateAvant.q, JDSdateApres.q, JDSannee1.q, JDSmois1.q, JDSjour1.q, JDSannee2.q, JDSmois2.q, JDSjour2.q, ResultatWE = 0
Global MaDiff.DiffTemps, NewList Jat.sSemaine()
Global Dim JS.s(6), Dim NomMois.s(11)
JS(0) = "dimanche" : JS(1) = "lundi" : JS(2) = "mardi" : JS(3) = "mercredi" : JS(4) = "jeudi" : JS(5) = "vendredi" : JS(6) = "samedi"
NomMois(0) = "janvier" : NomMois(1) = "février" : NomMois(2) = "mars" : NomMois(3) = "avril" : NomMois(4) = "mai" : NomMois(5) = "juin"
NomMois(6) = "juillet" : NomMois(7) = "août" : NomMois(8) = "septembre" : NomMois(9) = "octobre" : NomMois(10) = "novembre" : NomMois(11) = "décembre"
Declare Jours_de_semaine()
Declare Minimum(a, b, c) ;
Declare CalculerNbJDS()
Declare Calculer_Jours_JDS()
Declare Calculer_Mois_JDS()
Temps\Annee = 1
Temps\Mois = 12
Temps\Semaine = 52.17857142857
Temps\Jour = 365.25
Temps\Heure = 8766
Temps\Minute = 525960
Temps\Seconde = 31557600
Procedure Calculer_Heures()
;Heure Début
If GetGadgetState(#Spn_H_HD) > 23
SetGadgetState(#Spn_H_HD,0)
ElseIf GetGadgetState(#Spn_H_HD) < 0
SetGadgetState(#Spn_H_HD,23)
EndIf
;Heure Fin
If GetGadgetState(#Spn_H_HF) > 23
SetGadgetState(#Spn_H_HF,0)
ElseIf GetGadgetState(#Spn_H_HF) < 0
SetGadgetState(#Spn_H_HF,23)
EndIf
EndProcedure
Procedure Calculer_Minutes()
;Minute Début
If GetGadgetState(#Spn_M_HD) > 59
SetGadgetState(#Spn_M_HD,0)
ElseIf GetGadgetState(#Spn_M_HD) < 0
SetGadgetState(#Spn_M_HD,59)
EndIf
;Minute Fin
If GetGadgetState(#Spn_M_HF) > 59
SetGadgetState(#Spn_M_HF,0)
ElseIf GetGadgetState(#Spn_M_HF) < 0
SetGadgetState(#Spn_M_HF,59)
EndIf
EndProcedure
Procedure Calculer_Secondes()
;Seconde Début
If GetGadgetState(#Spn_S_HD) > 59
SetGadgetState(#Spn_S_HD,0)
ElseIf GetGadgetState(#Spn_S_HD) < 0
SetGadgetState(#Spn_S_HD,59)
EndIf
;Seconde Fin
If GetGadgetState(#Spn_S_HF) > 59
SetGadgetState(#Spn_S_HF,0)
ElseIf GetGadgetState(#Spn_S_HF) < 0
SetGadgetState(#Spn_S_HF,59)
EndIf
EndProcedure
Procedure Calculer_Jours()
;Jour une date
If GetGadgetState(#Spn_M_1D)
Jm = JoursDansMoisF(GetGadgetState(#Spn_A_1D),GetGadgetState(#Spn_M_1D))
If GetGadgetState(#Spn_J_1D) > Jm
SetGadgetState(#Spn_J_1D,1)
ElseIf GetGadgetState(#Spn_J_1D) < 1
SetGadgetState(#Spn_J_1D,Jm)
EndIf
EndIf
;jour 2 dates
If GetGadgetState(#Spn_M_DD_2D)
Jm = JoursDansMoisF(GetGadgetState(#Spn_A_DD_2D),GetGadgetState(#Spn_M_DD_2D))
If GetGadgetState(#Spn_J_DD_2D) > Jm
SetGadgetState(#Spn_J_DD_2D,1)
ElseIf GetGadgetState(#Spn_J_DD_2D) < 1
SetGadgetState(#Spn_J_DD_2D,Jm)
EndIf
EndIf
If GetGadgetState(#Spn_M_DF_2D)
Jm = JoursDansMoisF(GetGadgetState(#Spn_A_DF_2D),GetGadgetState(#Spn_M_DF_2D))
If GetGadgetState(#Spn_J_DF_2D) > Jm
SetGadgetState(#Spn_J_DF_2D,1)
ElseIf GetGadgetState(#Spn_J_DF_2D) < 1
SetGadgetState(#Spn_J_DF_2D,Jm)
EndIf
EndIf
EndProcedure
Procedure Calculer_Mois()
;Mois une date
If GetGadgetState(#Spn_M_1D) > 12
SetGadgetState(#Spn_M_1D,1)
ElseIf GetGadgetState(#Spn_M_1D) < 1
SetGadgetState(#Spn_M_1D,12)
EndIf
;Mois 2 dates
If GetGadgetState(#Spn_M_DD_2D) > 12
SetGadgetState(#Spn_M_DD_2D,1)
ElseIf GetGadgetState(#Spn_M_DD_2D) < 1
SetGadgetState(#Spn_M_DD_2D,12)
EndIf
If GetGadgetState(#Spn_M_DF_2D) > 12
SetGadgetState(#Spn_M_DF_2D,1)
ElseIf GetGadgetState(#Spn_M_DF_2D) < 1
SetGadgetState(#Spn_M_DF_2D,12)
EndIf
EndProcedure
Procedure.s AjouterUniteTemps(nombre.q, unite.q)
Protected Resultat.s, uniteSeconde.s
If nombre = 0 : ProcedureReturn "" : EndIf
If nombre < 0 : nombre * -1 : EndIf
uniteSeconde = StringField(#UniteTemps, unite, ",")
If nombre > 1
uniteSeconde = RemoveString(uniteSeconde, "|")
Else
uniteSeconde = StringField(uniteSeconde, 1, "|")
EndIf
Resultat + Space(1) + Str(nombre) + Space(1) + uniteSeconde
ProcedureReturn Resultat
EndProcedure
Procedure.s sDiffTemps(Secondes.q)
Protected Resultat.s
Protected annees.q, mois.q, semaines.q, jours.q, heures.q, minutes.q
annees = Secondes / 31557600 : Secondes = Secondes % 31557600
mois = Secondes / 2629800 : Secondes = Secondes % 2629800
jours = Secondes / 86400 : Secondes = Secondes % 86400
heures = Secondes / 3600 : Secondes = Secondes % 3600
minutes = Secondes / 60 : Secondes = Secondes % 60
MaDiff\Annees = annees
MaDiff\Mois = mois
MaDiff\JoursRestants = jours
MaDiff\Heures = heures
MaDiff\Minutes = minutes
MaDiff\Secondes = Secondes
MaDiff\TotalJours = annees*365.25 + mois*30.44 + jours
Resultat = AjouterUniteTemps(annees, 1) + AjouterUniteTemps(mois, 2) + AjouterUniteTemps(jours,3)
ProcedureReturn Resultat
EndProcedure
Procedure OpenWindow_Fenetre_Principale()
If OpenWindow(#Fenetre_Principale, 0, 0, 570, 525, "Calculs de Date/Heure", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
SetGadgetFont(#PB_Default, FontID(#Police_1))
TextGadget(#Txt_Signature, 0, 495, 570, 30, "Calcul de Date/Heure par Micoutesoft", #PB_Text_Center|#SS_CENTERIMAGE)
PanelGadget(#Paneau_DH_principal, 0, 0, 570, 495)
;- Une Date
AddGadgetItem(#Paneau_DH_principal, -1, "Une Date")
TextGadget(#Txt_JDA_1D, 10, 170, 320, 50, "Jour de l'année", #PB_Text_Right|#SS_CENTERIMAGE)
ButtonGadget(#Btn_1D_Vider, 10, 10, 320, 40, "Vider")
ButtonGadget(#Btn_1D_Date, 10, 80, 320, 40, "Valider")
SpinGadget(#Spn_J_1D, 340, 90, 60, 25, 0, 32, #PB_Spin_Numeric)
SpinGadget(#Spn_M_1D, 400, 90, 60, 25, 0, 13, #PB_Spin_Numeric)
SpinGadget(#Spn_A_1D, 460, 90, 90, 25, 1601, 9999, #PB_Spin_Numeric)
SetGadgetState(#Spn_J_1D, JourF(DateF()))
SetGadgetState(#Spn_M_1D, MoisF(DateF()))
SetGadgetState(#Spn_A_1D, AnneeF(DateF()))
TextGadget(#Txt_Date_JDS_JJ_MM_AAAA_1D, 10, 130, 550, 50, "", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_SDA_1D, 10, 240, 320, 50, "Semaine de l'année", #PB_Text_Right|#SS_CENTERIMAGE)
TextGadget(#Txt_JDM_1D, 10, 295, 320, 50, "Jours dans le mois", #PB_Text_Right|#SS_CENTERIMAGE)
TextGadget(#Txt_AB_1D, 10, 350, 320, 50, "Année bissextile", #PB_Text_Right|#SS_CENTERIMAGE)
TextGadget(#Txt_AR_1D, 10, 405, 320, 50, "Année en romain", #PB_Text_Right|#SS_CENTERIMAGE)
StringGadget(#Str_JDA_1D, 340, 180, 220, 50, "", #PB_String_ReadOnly|#PB_Text_Center)
StringGadget(#Str_SDA_1D, 340, 240, 220, 50, "", #PB_String_ReadOnly|#PB_Text_Center)
StringGadget(#Str_JDM_1D, 340, 295, 220, 50, "", #PB_String_ReadOnly|#PB_Text_Center)
StringGadget(#Str_AB_1D, 340, 350, 220, 50, "", #PB_String_ReadOnly|#PB_Text_Center)
StringGadget(#Str_AR_1D, 340, 405, 220, 50, "", #PB_String_ReadOnly|#PB_Text_Center)
SetGadgetFont(#Txt_Date_JDS_JJ_MM_AAAA_1D, FontID(#Police_2))
SetGadgetFont(#Str_JDA_1D, FontID(#Police_2))
SetGadgetFont(#Str_SDA_1D, FontID(#Police_2))
SetGadgetFont(#Str_JDM_1D, FontID(#Police_2))
SetGadgetFont(#Str_AB_1D, FontID(#Police_2))
SetGadgetFont(#Str_AR_1D, FontID(#Police_2))
SetGadgetFont(#Spn_J_1D, FontID(#Police_2))
SetGadgetFont(#Spn_M_1D, FontID(#Police_2))
SetGadgetFont(#Spn_A_1D, FontID(#Police_2))
SetGadgetFont(#Btn_1D_Vider, FontID(#Police_2))
SetGadgetFont(#Btn_1D_Date, FontID(#Police_2))
SetGadgetFont(#Txt_Signature, FontID(#Police_2))
;- Deux Dates
AddGadgetItem(#Paneau_DH_principal, -1, "Différence de Dates")
ButtonGadget(#Btn_2D_Vider, 10, 10, 320, 40, "Vider")
TextGadget(#Txt_DD_2D, 10, 80, 320, 40, "Date de début", #PB_Text_Right|#SS_CENTERIMAGE)
TextGadget(#Txt_DF_2D, 10, 110, 320, 40, "Date de fin", #PB_Text_Right|#SS_CENTERIMAGE)
ButtonGadget(#Btn_JED_2D, 10, 180, 320, 40, "Jours entre les dates choisies")
SpinGadget(#Spn_J_DD_2D, 340, 90, 60, 25, 0, 32, #PB_Spin_Numeric)
SpinGadget(#Spn_M_DD_2D, 400, 90, 60, 25, 0, 13, #PB_Spin_Numeric)
SpinGadget(#Spn_A_DD_2D, 460, 90, 90, 25, 1601, 9999, #PB_Spin_Numeric)
SetGadgetState(#Spn_J_DD_2D, JourF(DateF()))
SetGadgetState(#Spn_M_DD_2D, MoisF(DateF()))
SetGadgetState(#Spn_A_DD_2D, AnneeF(DateF()))
SpinGadget(#Spn_J_DF_2D, 340, 120, 60, 25, 0, 32, #PB_Spin_Numeric)
SpinGadget(#Spn_M_DF_2D, 400, 120, 60, 25, 0, 13, #PB_Spin_Numeric)
SpinGadget(#Spn_A_DF_2D, 460, 120, 90, 25, 1601, 9999, #PB_Spin_Numeric)
SetGadgetState(#Spn_J_DF_2D, JourF(DateF()))
SetGadgetState(#Spn_M_DF_2D, MoisF(DateF()))
SetGadgetState(#Spn_A_DF_2D, AnneeF(DateF()))
StringGadget(#Str_JED_2D, 340, 180, 220, 40, "", #PB_String_ReadOnly)
FrameGadget(#Frame_Diff_2D, 10, 220, 320, 210, "Temps entre les deux dates")
TextGadget(#Txt_Nb_annees_2D, 20, 240, 300, 50, "", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Nb_mois_2D, 20, 295, 300, 50, "", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Nb_jours_2D, 20, 350, 300, 50, "", #PB_Text_Center|#SS_CENTERIMAGE)
SetGadgetFont(#Btn_2D_Vider, FontID(#Police_2))
SetGadgetFont(#Btn_JED_2D, FontID(#Police_2))
i = #Txt_Nb_annees_2D
While i <= #Str_JED_2D
SetGadgetFont(i, FontID(#Police_2))
i + 1
Wend
;- Jours de semaine & Week-ends
AddGadgetItem(#Paneau_DH_principal, -1, "Nbre JDS et WE")
SetGadgetFont(#PB_Default, FontID(#Police_1))
ContainerGadget(#Ctn_1_JDS, 135, 10, 300, 80, #PB_Container_Raised)
TextGadget(#Txt_de_JDS, 0, 10, 60, 20, "Du : ", #PB_Text_Right|#SS_CENTERIMAGE)
TextGadget(#Txt_a_JDS, 0, 40, 60, 20, "au : ", #PB_Text_Right|#SS_CENTERIMAGE)
SpinGadget(#Spn_J_de_JDS, 60, 10, 60, 20, 0, 32, #PB_Spin_Numeric)
SpinGadget(#Spn_M_de_JDS, 120, 10, 60, 20, 0, 13, #PB_Spin_Numeric)
SpinGadget(#Spn_A_de_JDS, 180, 10, 90, 20, 1601, 9999, #PB_Spin_Numeric)
SpinGadget(#Spn_J_a_JDS, 60, 40, 60, 20, 0, 32, #PB_Spin_Numeric)
SpinGadget(#Spn_M_a_JDS, 120, 40, 60, 20, 0, 13, #PB_Spin_Numeric)
SpinGadget(#Spn_A_a_JDS, 180, 40, 90, 20, 1601, 9999, #PB_Spin_Numeric)
CloseGadgetList()
ContainerGadget(#Ctn_2_JDS, 0, 120, 570, 330, #PB_Container_Raised)
TextGadget(#Txt_de2_JDS, 0, 30, 150, 20, "Date de début : ", #PB_Text_Right|#SS_CENTERIMAGE)
TextGadget(#Txt_a2_JDS, 0, 60, 150, 20, "Date de fin : ", #PB_Text_Right|#SS_CENTERIMAGE)
StringGadget(#Str_de2_JDS, 160, 30, 250, 20, "", #ES_CENTER)
StringGadget(#Str_a2_JDS, 160, 60, 250, 20, "", #ES_CENTER)
TextGadget(#Txt_Semaines_JDS, 0, 90, 150, 20, "Nombre de jours de semaine :", #PB_Text_Right|#SS_CENTERIMAGE)
TextGadget(#Txt_WE_JDS, 0, 120, 150, 20, "Nombre de WeekEnds :", #PB_Text_Right|#SS_CENTERIMAGE)
StringGadget(#Date_Semaines_JDS, 160, 90, 250, 20, "", #ES_CENTER)
StringGadget(#Date_WE_JDS, 160, 120, 250, 20, "", #ES_CENTER)
ButtonGadget(#Btn_Valider_JDS, 200, 280, 170, 30, "Valider")
FrameGadget(#Frm_JDS_JDS, 35, 160, 500, 110, "Jours")
TextGadget(#Txt_Lundi_JDS, 40, 180, 50, 20, "Lundi", #PB_Text_Right|#SS_CENTERIMAGE)
TextGadget(#Txt_Mardi_JDS, 190, 180, 50, 20, "Mardi", #PB_Text_Right|#SS_CENTERIMAGE)
TextGadget(#Txt_Mercredi_JDS, 370, 180, 50, 20, "Mercredi", #PB_Text_Right|#SS_CENTERIMAGE)
TextGadget(#Txt_Jeudi_JDS, 40, 210, 50, 20, "Jeudi", #PB_Text_Right|#SS_CENTERIMAGE)
TextGadget(#Txt_Vendredi_JDS, 190, 210, 50, 20, "Vendredi", #PB_Text_Right|#SS_CENTERIMAGE)
TextGadget(#Txt_Samedi_JDS, 370, 210, 50, 20, "Samedi", #PB_Text_Right|#SS_CENTERIMAGE)
TextGadget(#Txt_Dimanche_JDS, 40, 240, 50, 20, "Dimanche", #PB_Text_Right|#SS_CENTERIMAGE)
StringGadget(#Str_Lundi_JDS, 100, 180, 90, 20, "")
StringGadget(#Str_Mardi_JDS, 250, 180, 90, 20, "")
StringGadget(#Str_Mercredi_JDS, 430, 180, 90, 20, "")
StringGadget(#Str_Jeudi_JDS, 100, 210, 90, 20, "")
StringGadget(#Str_Vendredi_JDS, 250, 210, 90, 20, "")
StringGadget(#Str_Samedi_JDS, 430, 210, 90, 20, "")
StringGadget(#Str_Dimanche_JDS, 100, 240, 90, 20, "")
CloseGadgetList()
SetGadgetState(#Spn_J_de_JDS, JourF(DateF()))
SetGadgetState(#Spn_M_de_JDS, MoisF(DateF()))
SetGadgetState(#Spn_A_de_JDS, AnneeF(DateF()))
SetGadgetState(#Spn_J_a_JDS, JourF(DateF()))
SetGadgetState(#Spn_M_a_JDS, MoisF(DateF()))
SetGadgetState(#Spn_A_a_JDS, AnneeF(DateF()))
SetGadgetColor(#Ctn_1_JDS, #PB_Gadget_BackColor, $FFFFFF)
SetGadgetColor(#Txt_de_JDS, #PB_Gadget_BackColor, GetGadgetColor(#Ctn_1_JDS, #PB_Gadget_BackColor))
SetGadgetColor(#Txt_a_JDS, #PB_Gadget_BackColor, GetGadgetColor(#Ctn_1_JDS, #PB_Gadget_BackColor))
SetGadgetColor(#Ctn_2_JDS, #PB_Gadget_BackColor, $FFFFFF)
i = #Txt_Lundi_JDS
While i <= #Txt_Dimanche_JDS
SetGadgetColor(i, #PB_Gadget_BackColor, GetGadgetColor(#Ctn_2_JDS, #PB_Gadget_BackColor))
i + 1
Wend
SetGadgetColor(#Txt_de2_JDS, #PB_Gadget_BackColor, GetGadgetColor(#Ctn_2_JDS, #PB_Gadget_BackColor))
SetGadgetColor(#Txt_a2_JDS, #PB_Gadget_BackColor, GetGadgetColor(#Ctn_2_JDS, #PB_Gadget_BackColor))
SetGadgetColor(#Txt_Semaines_JDS, #PB_Gadget_BackColor, GetGadgetColor(#Ctn_2_JDS, #PB_Gadget_BackColor))
SetGadgetColor(#Txt_WE_JDS, #PB_Gadget_BackColor, GetGadgetColor(#Ctn_2_JDS, #PB_Gadget_BackColor))
SetGadgetFont(#Spn_J_de_JDS, FontID(#Police_2))
SetGadgetFont(#Spn_M_de_JDS, FontID(#Police_2))
SetGadgetFont(#Spn_A_de_JDS, FontID(#Police_2))
SetGadgetFont(#Spn_J_a_JDS, FontID(#Police_2))
SetGadgetFont(#Spn_M_a_JDS, FontID(#Police_2))
SetGadgetFont(#Spn_A_a_JDS, FontID(#Police_2))
SetGadgetFont(#Str_de2_JDS, FontID(#Police_2))
SetGadgetFont(#Str_a2_JDS, FontID(#Police_2))
SetGadgetFont(#Date_Semaines_JDS, FontID(#Police_2))
SetGadgetFont(#Date_WE_JDS, FontID(#Police_2))
i = #Str_Lundi_JDS
While i <= #Str_Dimanche_JDS
SetGadgetFont(i, FontID(#Police_2))
i + 1
Wend
i = #Txt_Lundi_JDS
While i <= #Txt_Dimanche_JDS
SetGadgetFont(i, FontID(#Police_2))
i + 1
Wend
SetGadgetFont(#Btn_Valider_JDS, FontID(#Police_2))
SetGadgetFont(#Txt_a2_JDS, FontID(#Police_1))
SetGadgetFont(#Txt_a_JDS, FontID(#Police_1))
SetGadgetFont(#Txt_de2_JDS, FontID(#Police_1))
SetGadgetFont(#Txt_de_JDS, FontID(#Police_1))
SetGadgetFont(#Txt_Lundi_JDS, FontID(#Police_1))
SetGadgetFont(#Txt_Mardi_JDS, FontID(#Police_1))
SetGadgetFont(#Txt_Mercredi_JDS, FontID(#Police_1))
SetGadgetFont(#Txt_Jeudi_JDS, FontID(#Police_1))
SetGadgetFont(#Txt_Vendredi_JDS, FontID(#Police_1))
SetGadgetFont(#Txt_Samedi_JDS, FontID(#Police_1))
SetGadgetFont(#Txt_Dimanche_JDS, FontID(#Police_1))
HideGadget(#Btn_Valider_JDS, 1)
;- Heures
AddGadgetItem(#Paneau_DH_principal, -1, "Différence d'heures")
ButtonGadget(#Btn_H_Vider, 10, 10, 320, 40, "Vider")
TextGadget(#Txt_HD_H, 10, 70, 320, 40, "Heure de début", #PB_Text_Right|#SS_CENTERIMAGE)
TextGadget(#Txt_HF_H, 10, 115, 320, 40, "Heure de fin", #PB_Text_Right|#SS_CENTERIMAGE)
ButtonGadget(#Btn_H_Valider, 10, 160, 320, 40, "Valider")
SpinGadget(#Spn_H_HD, 340, 70, 60, 25, -1, 24, #PB_Spin_Numeric)
SpinGadget(#Spn_M_HD, 400, 70, 60, 25, -1, 60, #PB_Spin_Numeric)
SpinGadget(#Spn_S_HD, 460, 70, 60, 25, -1, 60, #PB_Spin_Numeric)
SetGadgetState(#Spn_H_HD, HeureF(DateF()))
SetGadgetState(#Spn_M_HD, MinuteF(DateF()))
SetGadgetState(#Spn_S_HD, SecondeF(DateF()))
SpinGadget(#Spn_H_HF, 340, 115, 60, 25, -1, 24, #PB_Spin_Numeric)
SpinGadget(#Spn_M_HF, 400, 115, 60, 25, -1, 60, #PB_Spin_Numeric)
SpinGadget(#Spn_S_HF, 460, 115, 60, 25, -1, 60, #PB_Spin_Numeric)
SetGadgetState(#Spn_H_HF, HeureF(DateF()))
SetGadgetState(#Spn_M_HF, MinuteF(DateF()))
SetGadgetState(#Spn_S_HF, SecondeF(DateF()))
FrameGadget(#Frame_Diff_H, 10, 210, 320, 210, "Différence entre les deux heures")
TextGadget(#Txt_Nb_heures_H, 20, 240, 300, 50, "")
TextGadget(#Txt_Nb_Minutes_H, 20, 295, 300, 50, "")
TextGadget(#Txt_Nb_Secondes_H, 20, 350, 300, 50, "")
i = #Spn_S_HD
While i <= #Spn_H_HF
SetGadgetFont(i, FontID(#Police_2))
i + 1
Wend
SetGadgetFont(#Btn_H_Vider, FontID(#Police_2))
SetGadgetFont(#Btn_H_Valider, FontID(#Police_2))
i = #Txt_Nb_heures_H
While i <= #Txt_Nb_Secondes_H
SetGadgetFont(i, FontID(#Police_2))
i + 1
Wend
;- Convertisseurs de temps
AddGadgetItem(#Paneau_DH_principal, -1, "Convertisseur de temps")
ContainerGadget(#Ctn_0, 10, 0, 545, 220, #PB_Container_Raised)
CatchImage(#Img_0, ?Image)
ResizeImage(#Img_0, 25, 25)
TextGadget(#Txt_Annee_0, 0, 10, 80, 30, "Année(s)", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Mois_0, 290, 10, 80, 30, "Mois", #PB_Text_Center|#SS_CENTERIMAGE)
SpinGadget(#Spn_Annee_0, 100, 10, 125, 30, 0, 999, #PB_Spin_Numeric)
SpinGadget(#Spn_Mois_0, 380, 10, 125, 30, 0, 999, #PB_Spin_Numeric)
ButtonImageGadget(#Btn_Annee_0, 225, 10, 30, 30, ImageID(#Id_Img))
ButtonImageGadget(#Btn_Mois_0, 505, 10, 30, 30, ImageID(#Id_Img))
TextGadget(#Txt_Semaine_0, 0, 60, 90, 30, "Semaine(s)", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Jour_0, 290, 60, 80, 30, "Jour(s)", #PB_Text_Center|#SS_CENTERIMAGE)
SpinGadget(#Spn_Semaine_0, 100, 60, 125, 30, 0, 999, #PB_Spin_Numeric)
SpinGadget(#Spn_Jour_0, 380, 60, 125, 30, 0, 99999, #PB_Spin_Numeric)
ButtonImageGadget(#Btn_Semaine_0, 225, 60, 30, 30, ImageID(#Id_Img))
ButtonImageGadget(#Btn_Jour_0, 505, 60, 30, 30, ImageID(#Id_Img))
TextGadget(#Txt_Heure_0, 0, 120, 80, 30, "Heure(s)", #PB_Text_Center|#SS_CENTERIMAGE)
TextGadget(#Txt_Minute_0, 290, 120, 90, 30, "Minute(s)", #PB_Text_Center|#SS_CENTERIMAGE)
SpinGadget(#Spn_Heure_0, 100, 120, 125, 30, 0, 99999, #PB_Spin_Numeric)
SpinGadget(#Spn_Minute_0, 380, 120, 125, 30, 0, 9999999, #PB_Spin_Numeric)
ButtonImageGadget(#Btn_Heure_0, 225, 120, 30, 30, ImageID(#Id_Img))
ButtonImageGadget(#Btn_Minute_0, 505, 120, 30, 30, ImageID(#Id_Img))
TextGadget(#Txt_Seconde_0, 0, 180, 90, 30, "Seconde(s)", #PB_Text_Center|#SS_CENTERIMAGE)
SpinGadget(#Spn_Seconde_0, 100, 180, 125, 30, 0, 999999999, #PB_Spin_Numeric)
ButtonImageGadget(#Btn_Seconde_0, 225, 180, 30, 30, ImageID(#Id_Img))
CloseGadgetList()
ContainerGadget(#Ctn_1, 10, 225, 545, 220, #PB_Container_Raised)
TextGadget(#Txt_Annee_1, 0, 10, 80, 30, "Année(s)", #PB_Text_Center|#SS_CENTERIMAGE)
StringGadget(#Str_Annee_1, 100, 10, 155, 30, "", #PB_Text_Right)
TextGadget(#Txt_Mois_1, 290, 10, 80, 30, "Mois", #PB_Text_Center|#SS_CENTERIMAGE)
StringGadget(#Str_Mois_1, 380, 10, 155, 30, "", #PB_Text_Right)
TextGadget(#Txt_Semaine_1, 0, 60, 90, 30, "Semaine(s)", #PB_Text_Center|#SS_CENTERIMAGE)
StringGadget(#Str_Semaine_1, 100, 60, 155, 30, "", #PB_Text_Right)
TextGadget(#Txt_Jour_1, 290, 60, 80, 30, "Jour(s)", #PB_Text_Center|#SS_CENTERIMAGE)
StringGadget(#Str_Jour_1, 380, 60, 155, 30, "", #PB_Text_Right)
TextGadget(#Txt_Heure_1, 0, 120, 80, 30, "Heure(s)", #PB_Text_Center|#SS_CENTERIMAGE)
StringGadget(#Str_Heure_1, 100, 120, 155, 30, "", #PB_Text_Right)
TextGadget(#Txt_Minute_1, 290, 120, 90, 30, "Minute(s)", #PB_Text_Center|#SS_CENTERIMAGE)
StringGadget(#Str_Minute_1, 380, 120, 155, 30, "", #PB_Text_Right)
TextGadget(#Txt_Seconde_1, 0, 180, 90, 30, "Seconde(s)", #PB_Text_Center|#SS_CENTERIMAGE)
StringGadget(#Str_Seconde_1, 100, 180, 155, 30, "", #PB_Text_Right)
CloseGadgetList()
i = #Spn_Annee_0
While i <= #Spn_Seconde_0
SetGadgetText(i, "0")
SetGadgetFont(i, FontID(#Police_2))
i + 1
Wend
i = #Str_Annee_1
While i <= #Str_Seconde_1
SetGadgetFont(i, FontID(#Police_2))
i + 1
Wend
BindGadgetEvent(#Spn_Annee_0, @_Annee_())
BindGadgetEvent(#Spn_Mois_0, @_Mois_())
BindGadgetEvent(#Spn_Semaine_0, @_Semaine_())
BindGadgetEvent(#Spn_Jour_0, @_Jour_())
BindGadgetEvent(#Spn_Heure_0, @_Heure_())
BindGadgetEvent(#Spn_Minute_0, @_Minute_())
BindGadgetEvent(#Spn_Seconde_0, @_Seconde_())
AddWindowTimer(#Fenetre_principale, #Timer, 100)
; EndIf
;EndProcedure
CloseGadgetList()
ModeDateF(#Date_Seconde)
EndIf
EndProcedure
OpenWindow_Fenetre_Principale()
;- Boucle evenementielle
Repeat
Evenement = WaitWindowEvent()
Select Evenement
Case #PB_Event_Timer
If EventTimer() = #Timer
Calcul()
EndIf
Case #PB_Event_Gadget
Select EventGadget()
Case #Spn_J_1D To #Spn_A_1D, #Spn_J_DD_2D To #Spn_A_DD_2D, #Spn_J_DF_2D To #Spn_A_DF_2D
Calculer_Jours()
Calculer_Mois()
Case #Spn_S_HD To #Spn_H_HD, #Spn_S_HF To #Spn_H_HF
Calculer_Heures()
Calculer_Minutes()
Calculer_Secondes()
;- boucle : Une date
Case #Btn_1D_Vider
i = #Str_JDA_1D
While i <= #Str_AR_1D
SetGadgetText(i, "")
i + 1
Wend
SetGadgetText(#Txt_Date_JDS_JJ_MM_AAAA_1D, "")
Case #Btn_1D_Date
Global JDS$ = FormatDateF("%jour %jj %mois %aaaa", DateF(GetGadgetState(#Spn_A_1D),GetGadgetState(#Spn_M_1D),GetGadgetState(#Spn_J_1D)))
Global AJDS$ = Right(JDS$, 4) ;Année
Global MJDS$ = Mid(Jds$, 8, 3);Mois abrégé
Global MMJDS$ ;Mois
Global JJDM$ = Mid(JDS$, 5, 2);Jour du mois
Global JJDS$ ; Jour de semaine
Select MJDS$
Case "Jan"
MMJDS$ = "Janvier"
Case "Fev"
MMJDS$ = "Février"
Case "Mar"
MMJDS$ = "Mars"
Case "Avr"
MMJDS$ = "Avril"
Case "Mai"
MMJDS$ = "Mai"
Case "Jun"
MMJDS$ = "Juin"
Case "Jul"
MMJDS$ = "Juillet"
Case "Aou"
MMJDS$ = "Août"
Case "Sep"
MMJDS$ = "Septembre"
Case "Oct"
MMJDS$ = "Octobre"
Case "Nov"
MMJDS$ = "Novembre"
Case "Dec"
MMJDS$ = "Décembre"
EndSelect
Select Left(JDS$, 3)
Case "Lun"
JJDS$ = "Lundi"
Case "Mar"
JJDS$ = "Mardi"
Case "Mer"
JJDS$ = "Mercredi"
Case "Jeu"
JJDS$ = "Jeudi"
Case "Ven"
JJDS$ = "Vendredi"
Case "Sam"
JJDS$ = "Samedi"
Case "Dim"
JJDS$ = "Dimanche"
EndSelect
SetGadgetText(#Txt_Date_JDS_JJ_MM_AAAA_1D, JJDS$+" "+JJDM$+" "+MMJDS$+" "+AJDS$)
Global JDA$ = Str(JourDAnneeF(DateF(GetGadgetState(#Spn_A_1D),GetGadgetState(#Spn_M_1D),GetGadgetState(#Spn_J_1D))))
SetGadgetText(#Str_JDA_1D, JDA$)
Global SDA$ = Str(SemaineDAnneeF(DateF(GetGadgetState(#Spn_A_1D),GetGadgetState(#Spn_M_1D),GetGadgetState(#Spn_J_1D))))
SetGadgetText(#Str_SDA_1D, SDA$)
Global JDM$ = Str(JoursDansMoisF(GetGadgetState(#Spn_A_1D),GetGadgetState(#Spn_M_1D)))
SetGadgetText(#Str_JDM_1D, JDM$)
If EstBissextileF(GetGadgetState(#Spn_A_1D))
SetGadgetText(#Str_AB_1D, "Oui")
Else
SetGadgetText(#Str_AB_1D, "Non")
EndIf
Global AnneeRomaine$ = RomVal(GetGadgetState(#Spn_A_1D))
SetGadgetText(#Str_AR_1D, AnneeRomaine$)
;- boucle : Deux dates
Case #Btn_2D_Vider
SetGadgetText(#Str_JED_2D, "")
SetGadgetText(#Txt_Nb_annees_2D, "")
SetGadgetText(#Txt_Nb_mois_2D, "")
SetGadgetText(#Txt_Nb_jours_2D, "")
Case #Btn_JED_2D
Date1 = DateF(GetGadgetState(#Spn_A_DD_2D),
GetGadgetState(#Spn_M_DD_2D),
GetGadgetState(#Spn_J_DD_2D), 0, 0, 0)
Date2 = DateF(GetGadgetState(#Spn_A_DF_2D),
GetGadgetState(#Spn_M_DF_2D),
GetGadgetState(#Spn_J_DF_2D), 0, 0, 0)
Jour1_2D.q = Val(RSet(GetGadgetText(#Spn_J_DD_2D), 2, "0"))
Mois1_2D.q = Val(RSet(GetGadgetText(#Spn_M_DD_2D), 2, "0"))
Annee1_2D.q = Val(RSet(GetGadgetText(#Spn_A_DD_2D), 4, "0"))
Jour2_2D.q = Val(RSet(GetGadgetText(#Spn_J_DF_2D), 2, "0"))
Mois2_2D.q = Val(RSet(GetGadgetText(#Spn_M_DF_2D), 2, "0"))
Annee2_2D.q = Val(RSet(GetGadgetText(#Spn_A_DF_2D), 4, "0"))
Date1_2D.s = RSet(Str(Jour1_2D) , 2, "0")+"/"+
RSet(Str(Mois1_2D) , 2, "0")+"/"+
RSet(Str(Annee1_2D), 4, "0")
Date2_2D.s = RSet(Str(Jour2_2D) , 2, "0")+"/"+
RSet(Str(Mois2_2D) , 2, "0")+"/"+
RSet(Str(Annee2_2D), 4, "0")
DateAvant_2D.q = AnalyserDate(Date1_2D)
DateApres_2D.q = AnalyserDate(date2_2D)
sDiffTemps(DateApres_2D - DateAvant_2D)
If MaDiff\TotalJours > 1
Txt_Total_Jours = " jours "
Else
Txt_Total_Jours = " jour "
EndIf
SetGadgetText(#Str_JED_2D, Str(MaDiff\TotalJours) + Txt_Total_Jours)
If MaDiff\Annees > 1
Txt_An = " ans "
Else
Txt_An = " an "
EndIf
SetGadgetText(#Txt_Nb_annees_2D, Str(MaDiff\Annees) + Txt_An)
Txt_Mois.s = " mois"
SetGadgetText(#Txt_Nb_mois_2D, Str(MaDiff\Mois) + Txt_Mois)
If MaDiff\JoursRestants > 1
Txt_Jour = " jours "
Else
Txt_Jour = " jour "
EndIf
SetGadgetText(#Txt_Nb_jours_2D, Str(MaDiff\JoursRestants) + Txt_Jour)
;- boucle : Différence d'heures
Case #Btn_H_Vider
SetGadgetText(#Txt_Nb_heures_H, "")
SetGadgetText(#Txt_Nb_Minutes_H, "")
SetGadgetText(#Txt_Nb_Secondes_H, "")
Case #Btn_H_Valider
Date1 = DateF(AnneeF(DateF()),
MoisF(DateF()),
JourF(DateF()),
GetGadgetState(#Spn_H_HD),
GetGadgetState(#Spn_M_HD),
GetGadgetState(#Spn_S_HD))
Date2 = DateF(AnneeF(DateF()),
MoisF(DateF()),
JourF(DateF()),
GetGadgetState(#Spn_H_HF),
GetGadgetState(#Spn_M_HF),
GetGadgetState(#Spn_S_HF))
DateDiff(Date1,Date2,@MaDiff)
Global TexteH$ = ""
If MaDiff\Heures < 2
TexteH$ = " heure"
Else
TexteH$ = " heures"
EndIf
If MaDiff\Heures
SetGadgetText(#Txt_Nb_heures_H, ""+MaDiff\Heures+TexteH$)
Else
SetGadgetText(#Txt_Nb_heures_H, "")
EndIf
Global texteMi$ = ""
If MaDiff\Minutes < 2
texteMi$ = " minute"
Else
texteMi$ = " minutes"
EndIf
If MaDiff\Minutes
SetGadgetText(#Txt_Nb_Minutes_H, ""+MaDiff\Minutes+texteMi$)
Else
SetGadgetText(#Txt_Nb_Minutes_H, "")
EndIf
Global texteS$ = ""
If MaDiff\Secondes < 2
texteS$ = " seconde"
Else
texteS$ = " secondes"
EndIf
If MaDiff\Secondes
SetGadgetText(#Txt_Nb_Secondes_H, ""+MaDiff\Secondes+texteS$)
Else
SetGadgetText(#Txt_Nb_Secondes_H, "")
EndIf
;- boucle : Convertisseur de temps
Case #Btn_Annee_0
SetGadgetState(#Spn_Annee_0, 0)
Case #Btn_Mois_0
SetGadgetState(#Spn_Mois_0, 0)
Case #Btn_Semaine_0
SetGadgetState(#Spn_Semaine_0, 0)
Case #Btn_Jour_0
SetGadgetState(#Spn_Jour_0, 0)
Case #Btn_Heure_0
SetGadgetState(#Spn_Heure_0, 0)
Case #Btn_Minute_0
SetGadgetState(#Spn_Minute_0, 0)
Case #Btn_Seconde_0
SetGadgetState(#Spn_Seconde_0,0)
;- boucle : Jours de semaine & Week-ends
Case #spn_J_de_JDS To #Spn_A_a_JDS
HideGadget(#Btn_Valider_JDS, 0)
Calculer_Jours()
Calculer_Mois()
Case #Btn_Valider_JDS
HideGadget(#Btn_Valider_JDS, 1)
JDSDate1 = DateF(GetGadgetState(#Spn_A_de_JDS),
GetGadgetState(#Spn_M_de_JDS),
GetGadgetState(#Spn_J_de_JDS), 0, 0, 0)
JDSdate2 = DateF(GetGadgetState(#Spn_A_a_JDS),
GetGadgetState(#Spn_M_a_JDS),
GetGadgetState(#Spn_J_a_JDS), 0, 0, 0)
JDSdate1$ = RSet(GetGadgetText(#Spn_J_de_JDS), 2, "0") + "/" +
RSet(GetGadgetText(#Spn_M_de_JDS), 2, "0") + "/" +
RSet(GetGadgetText(#Spn_A_de_JDS), 4, "0")
JDSdate2$ = RSet(GetGadgetText(#Spn_J_a_JDS), 2, "0") + "/" +
RSet(GetGadgetText(#Spn_M_a_JDS), 2, "0") + "/" +
RSet(GetGadgetText(#Spn_A_a_JDS), 4, "0")
JDSannee1 = Val(RSet(GetGadgetText(#Spn_A_de_JDS), 4, "0"))
JDSmois1 = Val(RSet(GetGadgetText(#Spn_M_de_JDS), 2, "0"))
JDSjour1 = Val(RSet(GetGadgetText(#Spn_J_de_JDS), 2, "0"))
JDSannee2 = Val(RSet(GetGadgetText(#Spn_A_a_JDS), 4, "0"))
JDSmois2 = Val(RSet(GetGadgetText(#Spn_M_a_JDS), 2, "0"))
JDSjour2 = Val(RSet(GetGadgetText(#Spn_J_a_JDS), 2, "0"))
JDSdateAvant = AnalyserDate(JDSdate1$)
JDSdateApres = AnalyserDate(JDSdate2$)
DateDiff(JDSdateAvant,JDSdateApres,@MaDiff)
CalculerNbJDS()
SetGadgetText(#Str_Dimanche_JDS, Str(Jat()\Dimanche))
SetGadgetText(#Str_Lundi_JDS, Str(Jat()\Lundi))
SetGadgetText(#Str_Mardi_JDS, Str(Jat()\Mardi))
SetGadgetText(#Str_Mercredi_JDS, Str(Jat()\Mercredi))
SetGadgetText(#Str_Jeudi_JDS, Str(Jat()\Jeudi))
SetGadgetText(#Str_Vendredi_JDS, Str(Jat()\Vendredi))
SetGadgetText(#Str_Samedi_JDS, Str(Jat()\Samedi))
ResultatWE = Minimum(Val(GetGadgetText(#Str_Vendredi_JDS)), Val(GetGadgetText(#Str_Samedi_JDS)), Val(GetGadgetText(#Str_Dimanche_JDS)))
SetGadgetText(#Date_Semaines_JDS, Str(MaDiff\TotalJours - ResultatWE))
SetGadgetText(#Date_WE_JDS, Str(ResultatWE))
SetGadgetText(#Str_de2_JDS, JS((JourDeSemaineF(JDSdateAvant))) + " " + JourF(JDSdateAvant) + " " + NomMois(MoisF(JDSdateAvant) - 1) + " " + AnneeF(JDSdateAvant))
SetGadgetText(#Str_a2_JDS, JS((JourDeSemaineF(JDSdateApres))) + " " + JourF(JDSdateApres) + " " + NomMois(MoisF(JDSdateApres) - 1) + " " + AnneeF(JDSdateApres))
EndSelect ;- dernier endselect
;Fenêtre
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Fenetre_Principale
CloseWindow(#Fenetre_Principale)
Break
EndSelect
EndSelect
ForEver
EndDataSection