Calendrier défilant
Calendrier défilant
Voici un calendrier que j'ai codé et je voudrais en faire profiter les autres, vous trouverez les source à l'adresse suivante :
http://dl.free.fr/fOFxxQhsa
si un modérateur peut supprimer les posts suivants, je le remercie, sinon pouvez-vous m'expliquer comment faire
http://dl.free.fr/fOFxxQhsa
si un modérateur peut supprimer les posts suivants, je le remercie, sinon pouvez-vous m'expliquer comment faire
Dernière modification par Micoute le dim. 02/sept./2012 12:42, modifié 5 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Calendrier défilant
Voici une autre partie
Fêtes mobiles et fixes.pb
Fêtes mobiles et fixes.pb
Code : Tout sélectionner
Enumeration
#NouvelAn
#Mardi_Gras
#Cendres
#feteDesGrandMeres
#Passion
#Rameaux
#Jeudi_Saint
#Vendredi_Saint
#Paques
#PaquesLundi
#FeteDuTravail
#Victoire1945
#Ascension
#Pentecote
#PentecoteLundi
#FeteDesMeres
#Trinite
#FetesDesPeres
#FeteNationale
#Assomption
#FeteDesGrandPeres
#Toussaint
#Armistice
#Noel
#Saint_Sylvestre
#Heure_d_ete
#Heure_d_hiver
EndEnumeration
Declare.l Paques(annee.l = -1)
;- Fêtes religieuses
Procedure.l Paques_(annee.l) ; interne
;/ http://www.chez.com/cosmos2000/Vendredi13/DelambreAlgorithme.html
Protected a, b, c, d, e
a = ( Mod(annee , 19) ) ; n
b = ( annee / 100 ) ; c
c = ( Mod(annee , 100) )
d = Mod( ( 19 * a + b - ( b / 4 ) - ( ( b - ( ( b + 8 ) / 25 ) + 1 ) / 3 ) + 15 ) , 30 )
e = Mod( ( 32 + 2 * Mod( b , 4 ) + 2 * ( c / 4 ) - d - Mod( c , 4 ) ) , 7 )
ProcedureReturn ( 22 + d + e - 7 * ( ( a + 11 * d + 22 * e ) / 451 ) )
EndProcedure
Procedure Mardi_Gras(annee.l = -1)
ProcedureReturn AddDate(Paques(annee), #PB_Date_Day, -47)
EndProcedure
Procedure Cendres(annee.l = -1)
ProcedureReturn AddDate(Paques(annee), #PB_Date_Day, -46)
EndProcedure
Procedure Passion(annee.l = -1)
ProcedureReturn AddDate(Paques(annee), #PB_Date_Day, -14)
EndProcedure
Procedure Rameaux(annee.l = -1)
ProcedureReturn AddDate(Paques(annee), #PB_Date_Day, -7)
EndProcedure
Procedure Jeudi_Saint(annee.l = -1)
ProcedureReturn AddDate(Paques(annee), #PB_Date_Day, -3)
EndProcedure
Procedure Vendredi_Saint(annee.l = -1)
ProcedureReturn AddDate(Paques(annee), #PB_Date_Day, -2)
EndProcedure
Procedure.l Paques(annee.l = -1)
Protected jour, mois = 3
If annee = -1
annee = Year( Date ())
EndIf
jour = Paques_(annee)
If jour
If jour > 31
jour - 31 : mois + 1
EndIf
ProcedureReturn Date (annee, mois, jour, 0, 0, 0)
EndIf
EndProcedure
Procedure.l PaquesLundi(annee.l = -1)
ProcedureReturn AddDate (Paques(annee), #PB_Date_Day , 1)
EndProcedure
Procedure.l Ascension(annee.l = -1)
ProcedureReturn AddDate (Paques(annee), #PB_Date_Day , 39)
EndProcedure
Procedure.l Pentecote(annee.l = -1)
ProcedureReturn AddDate (Paques(annee), #PB_Date_Week , 7) ;#PB_Date_Day,49)
EndProcedure
Procedure.l PentecoteLundi(annee.l = -1)
ProcedureReturn AddDate (Paques(annee), #PB_Date_Day , 50)
EndProcedure
Procedure.l Trinite(annee.l = -1)
ProcedureReturn AddDate(Paques(annee), #PB_Date_Day, 56)
EndProcedure
;-
;- Fêtes immobiles
Procedure.l NouvelAn(annee.l = -1)
If annee = -1
annee = Year( Date ())
EndIf
ProcedureReturn Date (annee, 1, 1, 0, 0, 0)
EndProcedure
Procedure.l FeteDuTravail(annee.l = -1)
If annee = -1
annee = Year( Date ())
EndIf
ProcedureReturn Date (annee, 5, 1, 0, 0, 0)
EndProcedure
Procedure.l Victoire1945(annee.l = -1)
If annee = -1
annee = Year( Date ())
EndIf
ProcedureReturn Date (annee, 5, 8, 0, 0, 0)
EndProcedure
Procedure.l FeteNationale(annee.l = -1)
If annee = -1
annee = Year( Date ())
EndIf
ProcedureReturn Date (annee, 7, 14, 0, 0, 0)
EndProcedure
Procedure.l Assomption(annee.l = -1)
If annee = -1
annee = Year( Date ())
EndIf
ProcedureReturn Date (annee, 8, 15, 0, 0, 0)
EndProcedure
Procedure.l Toussaint(annee.l = -1)
If annee = -1
annee = Year( Date ())
EndIf
ProcedureReturn Date (annee, 11, 1, 0, 0, 0)
EndProcedure
Procedure.l Armistice(annee.l = -1)
If annee = -1
annee = Year( Date ())
EndIf
ProcedureReturn Date (annee, 11, 11, 0, 0, 0)
EndProcedure
Procedure.l Noel(annee.l = -1)
If annee = -1
annee = Year( Date ())
EndIf
ProcedureReturn Date (annee, 12, 25, 0, 0, 0)
EndProcedure
Procedure.l Saint_Sylvestre(annee.l = -1)
If annee = -1
annee = Year( Date ())
EndIf
ProcedureReturn Date (annee, 12, 31, 0, 0, 0)
EndProcedure
;-
;-Fêtes familliales
Procedure Fete_des_grand_meres(annee = -1)
If DayOfWeek(Date(annee,3,1,0,0,0)) = 0 ; dimanche
Fete_des_grand_meres = DayOfYear(Date(annee,3,1,0,0,0))
ElseIf DayOfWeek(Date(annee,3,1,0,0,0)) = 1 ; lundi
Fete_des_grand_meres = DayOfYear(Date(annee,3,7,0,0,0))
ElseIf DayOfWeek(Date(annee,3,1,0,0,0)) = 2
Fete_des_grand_meres = DayOfYear(Date(annee,3,6,0,0,0))
ElseIf DayOfWeek(Date(annee,3,1,0,0,0)) = 3
Fete_des_grand_meres = DayOfYear(Date(annee,3,5,0,0,0))
ElseIf DayOfWeek(Date(annee,3,1,0,0,0)) = 4
Fete_des_grand_meres = DayOfYear(Date(annee,3,4,0,0,0))
ElseIf DayOfWeek(Date(annee,3,1,0,0,0)) = 5
Fete_des_grand_meres = DayOfYear(Date(annee,3,3,0,0,0))
ElseIf DayOfWeek(Date(annee,3,1,0,0,0)) = 6
Fete_des_grand_meres = DayOfYear(Date(annee,3,2,0,0,0))
EndIf
ProcedureReturn AddDate (NouvelAn(annee)-1, #PB_Date_Day , Fete_des_grand_meres)
EndProcedure
; Ajouté le 22 mai 2011
Procedure.l FeteDesMeres(annee.l = -1)
If DayOfWeek(Date(annee,5,31,0,0,0)) = 0
Fete_des_meres = DayOfYear(Date(annee,5,31,0,0,0))
ElseIf DayOfWeek(Date(annee,5,31,0,0,0)) = 1
Fete_des_meres = DayOfYear(Date(annee,5,30,0,0,0))
ElseIf DayOfWeek(Date(annee,5,31,0,0,0)) = 2
Fete_des_meres = DayOfYear(Date(annee,5,29,0,0,0))
ElseIf DayOfWeek(Date(annee,5,31,0,0,0)) = 3
Fete_des_meres = DayOfYear(Date(annee,5,28,0,0,0))
ElseIf DayOfWeek(Date(annee,5,31,0,0,0)) = 4
Fete_des_meres = DayOfYear(Date(annee,5,27,0,0,0))
ElseIf DayOfWeek(Date(annee,5,31,0,0,0)) = 5
Fete_des_meres = DayOfYear(Date(annee,5,26,0,0,0))
ElseIf DayOfWeek(Date(annee,5,31,0,0,0)) = 6
Fete_des_meres = DayOfYear(Date(annee,5,25,0,0,0))
EndIf
If AddDate (Paques(annee), #PB_Date_Week , 7) = AddDate (NouvelAn(annee), #PB_Date_Day , Fete_des_meres-1)
Fete_des_meres + 7
EndIf
ProcedureReturn AddDate (NouvelAn(annee)-1, #PB_Date_Day , Fete_des_meres) ; -1 parce que janvier commence le 1
EndProcedure
Procedure Fete_des_peres(annee = -1)
If DayOfWeek(Date(annee,6,21,0,0,0)) = 0
Fete_des_peres = DayOfYear(Date(annee,6,21,0,0,0))
ElseIf DayOfWeek(Date(annee,6,21,0,0,0)) = 1
Fete_des_peres = DayOfYear(Date(annee,6,20,0,0,0))
ElseIf DayOfWeek(Date(annee,6,21,0,0,0)) = 2
Fete_des_peres = DayOfYear(Date(annee,6,19,0,0,0))
ElseIf DayOfWeek(Date(annee,6,21,0,0,0)) = 3
Fete_des_peres = DayOfYear(Date(annee,6,18,0,0,0))
ElseIf DayOfWeek(Date(annee,6,21,0,0,0)) = 4
Fete_des_peres = DayOfYear(Date(Annee,6,17,0,0,0))
ElseIf DayOfWeek(Date(Annee,6,21,0,0,0)) = 5
Fete_des_peres = DayOfYear(Date(Annee,6,16,0,0,0))
ElseIf DayOfWeek(Date(Annee,6,21,0,0,0)) = 6
Fete_des_peres = DayOfYear(Date(Annee,6,15,0,0,0))
EndIf
ProcedureReturn AddDate (NouvelAn(annee)-1, #PB_Date_Day , Fete_des_peres) ; -1 parce que janvier commence le 1
EndProcedure
Procedure Fete_des_grand_peres(annee= -1)
If DayOfWeek(Date(Annee,10,1,0,0,0)) = 0 ; dimanche
Fete_des_grand_peres = DayOfYear(Date(Annee,10,1,0,0,0))
ElseIf DayOfWeek(Date(Annee,10,1,0,0,0)) = 1 ; lundi
Fete_des_grand_peres = DayOfYear(Date(Annee,10,7,0,0,0))
ElseIf DayOfWeek(Date(Annee,10,1,0,0,0)) = 2
Fete_des_grand_peres = DayOfYear(Date(Annee,10,6,0,0,0))
ElseIf DayOfWeek(Date(Annee,10,1,0,0,0)) = 3
Fete_des_grand_peres = DayOfYear(Date(Annee,10,5,0,0,0))
ElseIf DayOfWeek(Date(Annee,10,1,0,0,0)) = 4
Fete_des_grand_peres = DayOfYear(Date(Annee,10,4,0,0,0))
ElseIf DayOfWeek(Date(Annee,10,1,0,0,0)) = 5
Fete_des_grand_peres = DayOfYear(Date(Annee,10,3,0,0,0))
ElseIf DayOfWeek(Date(Annee,10,1,0,0,0)) = 6
Fete_des_grand_peres = DayOfYear(Date(Annee,10,2,0,0,0))
EndIf
ProcedureReturn AddDate (NouvelAn(annee)-1, #PB_Date_Day , Fete_des_grand_peres)
EndProcedure
;-
;- changements d'heure
Procedure Heure_d_ete(annee = -1)
If DayOfWeek(Date(annee,3,31,0,0,0)) = 0 ; dimanche
Heure_d_ete = DayOfYear(Date(annee,3,31,0,0,0))
ElseIf DayOfWeek(Date(annee,3,31,0,0,0)) = 1 ; lundi
Heure_d_ete = DayOfYear(Date(annee,3,30,0,0,0))
ElseIf DayOfWeek(Date(annee,3,31,0,0,0)) = 2
Heure_d_ete = DayOfYear(Date(annee,3,29,0,0,0))
ElseIf DayOfWeek(Date(annee,3,31,0,0,0)) = 3
Heure_d_ete = DayOfYear(Date(annee,3,28,0,0,0))
ElseIf DayOfWeek(Date(annee,3,31,0,0,0)) = 4
Heure_d_ete = DayOfYear(Date(annee,3,27,0,0,0))
ElseIf DayOfWeek(Date(annee,3,31,0,0,0)) = 5
Heure_d_ete = DayOfYear(Date(annee,3,26,0,0,0))
ElseIf DayOfWeek(Date(annee,3,31,0,0,0)) = 6
Heure_d_ete = DayOfYear(Date(annee,3,25,0,0,0))
EndIf
ProcedureReturn AddDate (NouvelAn(annee)-1, #PB_Date_Day , Heure_d_ete)
EndProcedure
Procedure Heure_d_hiver(annee = -1)
If DayOfWeek(Date(annee,10,31,0,0,0)) = 0 ; dimanche
Heure_d_hiver = DayOfYear(Date(annee,10,31,0,0,0))
ElseIf DayOfWeek(Date(annee,10,31,0,0,0)) = 1 ; lundi
Heure_d_hiver = DayOfYear(Date(annee,10,30,0,0,0))
ElseIf DayOfWeek(Date(annee,10,31,0,0,0)) = 2
Heure_d_hiver = DayOfYear(Date(annee,10,29,0,0,0))
ElseIf DayOfWeek(Date(annee,10,31,0,0,0)) = 3
Heure_d_hiver = DayOfYear(Date(annee,10,28,0,0,0))
ElseIf DayOfWeek(Date(annee,10,31,0,0,0)) = 4
Heure_d_hiver = DayOfYear(Date(annee,10,27,0,0,0))
ElseIf DayOfWeek(Date(annee,10,31,0,0,0)) = 5
Heure_d_hiver = DayOfYear(Date(annee,10,26,0,0,0))
ElseIf DayOfWeek(Date(annee,10,31,0,0,0)) = 6
Heure_d_hiver = DayOfYear(Date(annee,10,25,0,0,0))
EndIf
ProcedureReturn AddDate (NouvelAn(annee)-1, #PB_Date_Day , Heure_d_hiver)
EndProcedure
Dernière modification par Micoute le sam. 01/sept./2012 16:26, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Calendrier défilant
Fonctions_Date.pbi
Code : Tout sélectionner
;- déclarations diverses
Global annee.w
Global NumSem.b, NbJMR.b, date, NumJS
Global JourCourant.s, MoisCourant.s, DateCourante.s
Global Semaine.b
Global Masque.s = "%dddd %dd %mmm %yyyy"
Global NomJours.s = "dimanche|lundi|mardi|mercredi|jeudi|vendredi|samedi"
Global NomJoursAbr.s = "dim|lun|mar|mer|jeu|ven|sam"
Global NomMois.s = "janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre"
Global NomMoisAbr.s = "jan.|fév.|mars|avr.|mai|juin|juil.|août|sept.|oct.|nov.|déc."
DeclareDLL.b SiBissextile(annee=-1)
ProcedureDLL.s ChaineDate(Masque.s, date.l)
Masque = ReplaceString (Masque, "%dddd" , StringField ( NomJours , DayOfWeek (date) + 1, "|" ))
Masque = ReplaceString (Masque, "%ddd" , StringField ( NomJoursAbr , DayOfWeek (date) + 1, "|" ))
Masque = ReplaceString (Masque, "%mmmm" , StringField ( NomMois , Month (date), "|" ))
Masque = ReplaceString (Masque, "%mmm" , StringField ( NomMoisAbr , Month (date), "|" ))
ProcedureReturn FormatDate (Masque, date)
EndProcedure
ProcedureDLL.b Jours_dans_le_mois(annee=-1, mois=-1)
; Retourne le nombre de jours dans le mois donné (28 .. 31)
; Si l'année est absente, l'année en cours est utilisée
; Si l'année est présente mais le mois est absent, février est utilisé
; Si l'année et le mois sont tous deux absents, le mois courant de l'année en cours est utilisé
Protected Jours
If annee<=0
annee = Year(Date())
If mois<=0: mois = Month(Date()): EndIf
Else
If mois<=0: mois = 2: EndIf
EndIf
If mois=2
Jours = 28+SiBissextile(annee);
Else
jours = 31-$A55>>mois&1
EndIf
ProcedureReturn jours
EndProcedure
;; Exemple pour l'année 2008 (une année bissextile)
; Define mois, annee$=""
; For mois=1 To 12
; annee$ + Str(Jours_dans_le_mois(2008, mois))+" "
; Next mois
; Debug annee$ ; 31 29 31 30 31 30 31 31 30 31 30 31
ProcedureDLL.s DDA(annee=-1)
If annee < 0
DateCourante = ChaineDate(Masque,Date(Year(Date()),1,1,0,0,0))
Else
DateCourante = ChaineDate(Masque,Date(annee,1,1,0,0,0))
EndIf
ProcedureReturn DateCourante
EndProcedure
; Debug DDA()
ProcedureDLL.s FDA(annee=-1)
If annee < 0
DateCourante = ChaineDate(Masque,Date(Year(Date()),12,31,0,0,0))
Else
DateCourante = ChaineDate(Masque,Date(annee,12,31,0,0,0))
EndIf
ProcedureReturn DateCourante
EndProcedure
;Debug fda()
ProcedureDLL.s DDM(annee=-1,Mois=-1)
If annee < 0 Or mois < 0
DateCourante = ChaineDate(Masque,Date(Year(Date()),Month(Date()),1,0,0,0))
Else
DateCourante = ChaineDate(Masque,Date(annee,Mois,1,0,0,0))
EndIf
ProcedureReturn DateCourante
EndProcedure
;Debug ddm()
ProcedureDLL.s FDM(annee=-1, Mois=-1)
If annee < 0 Or mois < 0
ProcedureReturn ChaineDate(Masque,Date(Year(Date()),Month(Date()),Jours_dans_le_mois(),0,0,0))
Else
ProcedureReturn ChaineDate(Masque,Date(annee,Mois,Jours_dans_le_mois(),0,0,0))
EndIf
EndProcedure
;Debug fdm()
ProcedureDLL.w JDA(annee=-1)
If annee < 0
ProcedureReturn DayOfYear(Date())
Else
ProcedureReturn DayOfYear(annee)
EndIf
EndProcedure
;Debug jda()
ProcedureDLL.w JourRestantAnnee()
Protected reste = 365 + SiBissextile(annee)
ProcedureReturn reste-Int(DayOfYear(Date()))
EndProcedure
;Debug JourRestantAnnee()
ProcedureDLL.b DonneSemaine(PAnnee.w,PMois.b,PJour.b)
PAnnee=Int(Year(Date()))
PMois=Int(Month(Date()))
PJour=Int(Day(Date()))
Protected Semaine4J.b = DayOfWeek(Date(PAnnee.w,1,4,0,0,0))
If Semaine4J.b = 0 : Semaine4J.b = 7 : EndIf
Protected MoSemaine1.b = 4-Semaine4J.b
Protected SemaineGD.b = DayOfWeek(Date(PAnnee.w,PMois.b,PJour.b,0,0,0))
; Lundi = 1 Dimanche = 7.
If SemaineGD.b = 0 : SemaineGD.b = 7 : EndIf
Protected MoGD.w = DayOfYear(Date(PAnnee.w,PMois.b,PJour.b,0,0,0))-SemaineGD.b
Semaine.b = Int((MoGD.w-MoSemaine1.b)/7)+1
If PMois.b = 12
Protected NumWeek1Q.w = DayOfYear(Date(PAnnee.w,PMois.b,PJour.b,0,0,0))
Protected Semaine4JNY.b = DayOfWeek(Date(PAnnee.w+1,1,4,0,0,0))
; Lundi = 1 Dimanche = 7.
If Semaine4JNY.b = 0 : Semaine4JNY.b = 7 : EndIf
Protected LastYDay.w = DayOfYear(Date(PAnnee.w,12,31,0,0,0))
If LastYDay.w - NumWeek1Q.w < Semaine4JNY.b -4
Semaine.b = 1
EndIf
EndIf
If PMois.b = 1 And PJour.b < 4
If Semaine4J.b < SemaineGD.b
Semaine.b = DonneSemaine(PAnnee.w-1,12,31)
EndIf
EndIf
ProcedureReturn Semaine
EndProcedure
;Debug DonneSemaine(Year(Date()),Month(Date()),Day(Date()))
ProcedureDLL.b NumSemaine()
Protected date.b, NumSem.i
NumSem=DonneSemaine(Year(date),Month(date),Day(date))
ProcedureReturn NumSem
EndProcedure
;Debug NumSemaine()
ProcedureDLL NumeroSemaine(Date.l) ; Retourne le numéro de semaine de l'année
Protected Semaine.i = 0
Protected Compteur=Date(Year(Date),1,1,0,0,1) ;/ jour du nouvel an
;/ Aller au premier lundi
Repeat
If DayOfWeek(Compteur)=1 : Break : EndIf
Compteur=AddDate(Compteur,#PB_Date_Day,1)
ForEver
;/ Ajouter 1 semaine / Teste si la date est atteinte
Repeat
If Compteur>Date : Break : EndIf
Compteur=AddDate(Compteur,#PB_Date_Week,1)
Semaine+1
ForEver
ProcedureReturn Semaine
EndProcedure
;Debug NumeroSemaine(Date())
ProcedureDLL.b NbSemRestant()
ProcedureReturn 52 - NumSemaine()
EndProcedure
;Debug NbSemRestant()
ProcedureDLL.s JDS()
NumJS = DayOfWeek(Date())+1
JourCourant = StringField(NomJours,NumJS,"|")
ProcedureReturn JourCourant
EndProcedure
;Debug JDS()
ProcedureDLL.b Jour()
ProcedureReturn Day(Date())
EndProcedure
; Debug Jour()
ProcedureDLL.s Mois()
MoisCourant = StringField(NomMois,Month(Date()),"|")
ProcedureReturn MoisCourant
EndProcedure
;Debug Mois()
ProcedureDLL.w JourRestantMois()
NbJMR = Jours_dans_le_mois(annee,Month(Date)) - Jour()
ProcedureReturn NbJMR
EndProcedure
; Debug NbJMR
ProcedureDLL.b SiBissextile(Annee=-1)
; Retourne Vrai si l'année est une année bissextile (366 jours)
; S'il n'y a aucun argument, l'année en cours est utilisée
; Dans le calendrier grégorien, l'année bissextile est
; toute année divisible par 4, sauf
; année du centenaire non divisible par 400
; L'année équinoxe de printemps est d'environ 365.242374 jours longs (et croissants)
; Le calendrier iranien est basée sur 8 jours bissextiles tous les 33 ans (365,242424 jours)
If Annee<=0: Annee = Year(Date()): EndIf ; Cette année
If (Mod(Annee,4)=0 And Mod(Annee,100)<>0) Or (Mod(Annee,400)=0)
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Calendrier défilant
Phases de la lune.pb d'après un programme de Huit bits
Il est évident que ce programme peut être amélioré et optimisé, ceux qui veulent s'y atteler sont les bienvenus.
C'est grâce à vous que j'ai pu aligner ces lignes, alors c'est un peu un tribut que je vous doit !
Code : Tout sélectionner
Structure Structure_PhaseLune
Phase.b
Date.l
An.l
Mois.b
Jour.b
Heure.b
Minute.b
EndStructure
Global NewList PhaseLune.Structure_PhaseLune()
Procedure Calculer_PhaseLune(Annee_, Mois_)
Static Calculer_PhaseLune_Annee.l, Calculer_PhaseLune_Mois.b
Protected.l Date, i, ii, Heure, Minute, Mois, An, Jour, JJ
Protected.d K, T, T2, T3, J, M, MP, F
If Annee_ <> Calculer_PhaseLune_Annee Or Mois_ <> Calculer_PhaseLune_Mois
Calculer_PhaseLune_Annee = Annee_
Calculer_PhaseLune_Mois = Mois_
ClearList(PhaseLune())
Repeat
GetSystemTime_(DateUTC.SYSTEMTIME)
GetLocalTime_(DateLocale.SYSTEMTIME)
Until DateUTC\wSecond = DateLocale\wSecond ; Garantit que la lecture de la date s'est effectuée sur la même seconde
DateUTC_Seconde.q = Date(DateUTC\wYear, DateUTC\wMonth, DateUTC\wDay, DateUTC\wHour, DateUTC\wMinute, DateUTC\wSecond)
DateLocale_Seconde.q = Date(DateLocale\wYear, DateLocale\wMonth, DateLocale\wDay, DateLocale\wHour, DateLocale\wMinute, DateLocale\wSecond)
DecalageHoraire_Seconde.q = DateLocale_Seconde - DateUTC_Seconde
Date = Date(Annee_, Mois_, 1, 0, 0, 0)
Date = AddDate(Date, #PB_Date_Month, -1)
K.d = Year(Date)
Select Month(Date)
Case 1
K + 0.041
Case 2
K + 0.126
Case 3
K + 0.203
Case 4
K + 0.288
Case 5
K + 0.370
Case 6
K + 0.455
Case 7
K + 0.537
Case 8
K + 0.622
Case 9
K + 0.707
Case 10
K + 0.789
Case 11
K + 0.874
Case 12
K + 0.956
EndSelect
K = (K - 1900) * 12.3685
K = Int(K) - 0.25
If K < 0
K - 1
EndIf
For ii = 0 To 11
K + 0.25
T.d = K / 1236.85
T2.d = T * T
T3.d = T * T2
J.d = 2415020.75933 + 29.5305888531 * K + 0.0001337 * T2 - 0.000000150 * T3 + 0.00033 * Sin((166.56 + 132.87 * T - 0.009 * T2) * #PI / 180)
M.d = (359.2242 + 29.10535608 * K - 0.0000333 * T2 - 0.00000347 * T3) * #PI / 180
M = M - Int(M / (2 * #PI)) * (2 * #PI)
MP.d = (306.0253 + 385.81691806 * K + 0.0107306 * T2 + 0.00001236 * T3) * #PI / 180
MP = MP - Int(MP / (2 * #PI)) * (2 * #PI)
F.d = (21.2964 + 390.67050646 * K - 0.0016528 * T2 - 0.00000239 * T3) * #PI / 180
F = F - Int(F / (2 * #PI)) * (2 * #PI)
i = ii % 4
If i = 0 Or i = 2
J + (0.1734 - 0.000393 * T) * Sin(M)
J + 0.0021 * Sin(2 * M) - 0.4068 * Sin(MP)
J + 0.0161 * Sin(2 * MP) - 0.0004 * Sin(3 * MP)
J + 0.0104 * Sin(2 * F) - 0.0051 * Sin(M + MP)
J - 0.0074 * Sin(M - MP) + 0.0004 * Sin(2 * F + M)
J - 0.0004 * Sin(2 * F - M) - 0.0006 * Sin(2 * F + MP)
J + 0.001 * Sin(2 * F - MP) + 0.0005 * Sin(M + 2 * MP)
Else
J + (0.1721 - 0.0004 * T) * Sin(M)
J + 0.0021 * Sin(2 * M) - 0.6280 * Sin(MP)
J + 0.0089 * Sin(2 * MP) - 0.0004 * Sin(3 * MP)
J + 0.0079 * Sin(2 * F) - 0.0119 * Sin(M + MP)
J - 0.0047 * Sin(M - MP) + 0.0003 * Sin(2 * F + M)
J - 0.0004 * Sin(2 * F - M) - 0.0006 * Sin(2 * F + MP)
J + 0.0021 * Sin(2 * F - MP) + 0.0003 * Sin(M + 2 * MP)
J + 0.0004 * Sin(M - 2 * MP) - 0.0003 * Sin(2 * M + MP)
If i = 1
J + 0.0028 - 0.0004 * Cos(M)
J + 0.0003 * Cos(MP)
Else
J - 0.0028 + 0.0004 * Cos(M)
J - 0.0003 * Cos(MP)
EndIf
EndIf
J + 0.5
JJ = Int(j-1)
If JJ >= 2299160.5
Alpha.d = Int((JJ - 1867216.25) / 36524.25)
JJ = JJ + 1 + Alpha - Int(Alpha / 4)
EndIf
JJ + 1524
Calcul_An = Int((JJ - 122.1) / 365.25)
Calcul_Jour = Int(Calcul_An * 365.25)
Calcul_Mois = Int((JJ - Calcul_Jour) / 30.6001)
Jour = Int(JJ - Calcul_Jour - Int(Calcul_Mois * 30.6001))
If Calcul_Mois < 13.5
Mois = Int(Calcul_Mois - 1)
Else
Mois = Int(Calcul_Mois - 13)
EndIf
If Mois >= 3
An = Int(Calcul_An - 4716)
Else
An = Int(Calcul_An - 4715)
EndIf
J - Int(j-1)
Heure = Int(J * 24)
Minute = Int((J - Heure / 24) * 1440)
AddElement(PhaseLune())
PhaseLune()\Phase = i
PhaseLune()\Date = Date(An, Mois, Jour, 0, 0, 0) + (Heure * 3600 + Minute * 60) + DecalageHoraire_Seconde
PhaseLune()\An = Year(PhaseLune()\Date)
PhaseLune()\Mois = Month(PhaseLune()\Date)
PhaseLune()\Jour = Day(PhaseLune()\Date)
PhaseLune()\Heure = Hour(PhaseLune()\Date)
PhaseLune()\Minute = Minute(PhaseLune()\Date)
Next
EndIf
EndProcedure
Procedure ObtenirPhaseLune(Annee_, Mois_, Jour_) ; Obtenir la phase de la lune
Calculer_PhaseLune(Annee_, Mois_)
Phase = -1
ForEach PhaseLune()
If Annee_ = PhaseLune()\An And Mois_ = PhaseLune()\Mois And Jour_ = PhaseLune()\Jour
Phase = PhaseLune()\Phase
Break
EndIf
Next
ProcedureReturn Phase
EndProcedure
Procedure ObtenirHeurePhaseLune(Annee_, Mois_, Jour_) ; Obtenir l'heure de la phase de la lune
Calculer_PhaseLune(Annee_, Mois_)
Heure = -1
ForEach PhaseLune()
If Annee_ = PhaseLune()\An And Mois_ = PhaseLune()\Mois And Jour_ = PhaseLune()\Jour
Heure = PhaseLune()\Heure
Break
EndIf
Next
ProcedureReturn Heure
EndProcedure
Procedure ObtenirMinutePhaseLune(Annee_, Mois_, Jour_) ; Obtenir la minute de la phase de la lune
Calculer_PhaseLune(Annee_, Mois_)
Minute = -1
ForEach PhaseLune()
If Annee_ = PhaseLune()\An And Mois_ = PhaseLune()\Mois And Jour_ = PhaseLune()\Jour
Minute = PhaseLune()\Minute
Break
EndIf
Next
ProcedureReturn Minute
EndProcedure
C'est grâce à vous que j'ai pu aligner ces lignes, alors c'est un peu un tribut que je vous doit !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
- microdevweb
- Messages : 1802
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: Calendrier défilant
Bonjour ça à l'aire pas mal et à du représenter beaucoup de travaille. Mais comme il y à pas mal de code, cela aurait peut'être plus facile si avais mis un fichier Zip plutôt que de mettre tous le code sur poste.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Work at Centre Spatial de Liège
Re: Calendrier défilant
J'aurais bien voulu mettre juste un Zip, mais je ne sais pas comment on fait ! 

Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Calendrier défilant
Si tu n'as encore pas 7-zip
- Tu l'installes
- Ensuite tu mets en surbrillance tes x fichiers et tu fais un clique droit => 7-zip => Ajouter au fichier xxxx.7z
Pour l’hébergement
- Tu vas sur http://dl.free.fr/ et tu upload ton fichier.
Tu édites ensuite ton 1er post et tu ajoutes le lien avec le .7z
- Tu l'installes
- Ensuite tu mets en surbrillance tes x fichiers et tu fais un clique droit => 7-zip => Ajouter au fichier xxxx.7z
Pour l’hébergement
- Tu vas sur http://dl.free.fr/ et tu upload ton fichier.
Tu édites ensuite ton 1er post et tu ajoutes le lien avec le .7z
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Calendrier défilant
C'est corrigé !
Merci !
Rdv au premier post
Merci !
Rdv au premier post
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Calendrier défilant
@Micoute
Bonjours de ton voisin de la région de St Malo.
Pour avoir travaillé assez longuement sut les calendriers, je me permet de mettre en doute l'algo
que tu utilise pour la date de Paque. J'ai eu ce problème a l'époque et comme toi j'ai regardé sur le net. On trouves différrent calculs plus ou moins simple, j'était tomber sur une université (je ne sait plus l'aquelle) qui avait démontré que le seul calcul valable pour toutes les années a venir est celui ci- dessous.
Personnelement je ne suis pas partisant d'un zipage des codes mis sur le forum. C'est a mon avis le meilleur moyen pour que personne ne le lise. un produit finis en EXE oui.
Je rappel que chaque message peut contenir 60 000 caractères alors
Regarde sur le fofo US , il y a parfois des codes longs et personne ne dit rien.
Bonjours de ton voisin de la région de St Malo.
Pour avoir travaillé assez longuement sut les calendriers, je me permet de mettre en doute l'algo
que tu utilise pour la date de Paque. J'ai eu ce problème a l'époque et comme toi j'ai regardé sur le net. On trouves différrent calculs plus ou moins simple, j'était tomber sur une université (je ne sait plus l'aquelle) qui avait démontré que le seul calcul valable pour toutes les années a venir est celui ci- dessous.
Code : Tout sélectionner
Procedure calulftrelig(jr,mr,y);jr = jour, mr = mois, Y année
;dimanche de paque
c.w = y / 100
n.w = (y % 19)
k.w = (c - 17) / 25
b.w = c /4
e.w = (c - k) / 3
f.w = c - b - e + (19 * n) + 15
h.w = (f % 30)
p.w = h / 28
q.w = 29 / (h + 1)
r.w = (21 - n) / 11
i.w = h - (p * (1 - (p * q * r)))
s.w = y / 4
t.w = c / 4
u.w = y + s + i + 2 - c + t
j.w = (u % 7)
w.w = (i - j + 40) / 44
m.w = 3 + w
x.w = m / 4
d.w = i - j + 28 - (31 * x)
Dimanchepaque$ = FormatDate("%dd%mm%yyyy",Date(y,m,d,0,0,0))
lundipaque$ = FormatDate("%dd%mm%yyyy",AddDate(Date(y,m,d,0,0,0),#PB_Date_Day,1))
EndProcedure
Je rappel que chaque message peut contenir 60 000 caractères alors

Regarde sur le fofo US , il y a parfois des codes longs et personne ne dit rien.

Re: Calendrier défilant
Merci beaucoup pour cette contribution, j’apprécie et j'adopte.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Calendrier défilant
D'accord avec toi, sans parler des milliers de liens qui sont rompus au fil du tempsPersonnelement je ne suis pas partisant d'un zipage des codes mis sur le forum. C'est a mon avis le meilleur moyen pour que personne ne le lise

Et que tout le monde cours après le fichier qui était derrière en demandant si quelqu'un a eu la chance de le télécharger auparavant et surtout de le garder

Re: Calendrier défilant
Pourquoi l'un ou l'autre ?
Rien n'empêche de proposer un code et une archive si besoin.
Rien n'empêche de proposer un code et une archive si besoin.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Calendrier défilant
Dans ce cas il va manquer le fichier principal Calendrier défilant.pb, le voici :
J'ai encore bien des choses à apprendre, mais je sais que vous allez m'aider, alors je reste tranquille.
Code : Tout sélectionner
IncludeFile #PB_Compiler_FilePath+"Fonctions_Date.pbi"
IncludeFile #PB_Compiler_FilePath+"Phases de la lune.pb"
IncludeFile #PB_Compiler_FilePath+"Fêtes mobiles et fixes.pb"
;
InitSprite()
InitKeyboard()
InitMouse()
;
Enumeration
;
; fenetre
;
#Fenetre_principale
;
; gadgets
;
#Bouton_Quitter
#Police
#Police2
#Police_Bouton_Quitter
;
; actions
;
#f_sortie
#f_aucune
;
; images
;
;
EndEnumeration
;
#Faux = 0
#Vrai = 1
If LoadFont(#Police, "Calibri", 12, #PB_Font_Bold)
Global Calibri_12.i = FontID(#Police)
EndIf
If LoadFont(#Police_Bouton_Quitter, "Calibri", 12, #PB_Font_Bold)
Global IdPolice_Bouton_Quitter.i = FontID(#Police_Bouton_Quitter)
EndIf
Global Dim Mois$(12)
Global Phase.i
Declare Affiche(Annee)
;-
Global Quitter.b = #Faux, Fete_des_meres.i, Fete_des_peres.i, Fete_des_grand_meres.i, Fete_des_grand_peres.i, Heure_d_ete.i, Heure_d_hiver.i
Global.i CoulFond = $C0FFFF, CoulTexte, MoisEnCours = Month(Date()), Annee = Year(Date())
Global.s Masque = "%dddd %dd", Masque2 = "%dddd %dd %mmmm %yyyy"
Global.i X = 2 , Y = 60, i, Num_Mois, XX = x, YY = y, EspaceMois
ExamineDesktops()
Global.i Largeur_ecran = DesktopWidth(0)
Global.i Hauteur_ecran = DesktopHeight(0)
Global.i Prof_ecran = DesktopDepth(0)
EspaceMois = Largeur_ecran / 6
;
; ouvrir une fenêtre maximisée la même taille que le bureau et sans bordure
;
Global.i F_principale_h = OpenWindow(#Fenetre_principale,0,0,Largeur_ecran,Hauteur_ecran,"Sprite Engine",#PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_Maximize)
;
; ouvrir un écran de la même taille que la fenêtre (c'est à dire couvrant l'ensemble)
;
OpenWindowedScreen(F_principale_h.i,0,0,Largeur_ecran,Hauteur_ecran,0,0,0,#PB_Screen_SmartSynchronization)
SetClassLongPtr_(ScreenID(),#GCL_HCURSOR, LoadCursor_(0, #IDC_HAND)) ; SetClassLongPtr_ = Compatibilité 32-64 bits
ShowCursor_(#True) ; montrer le curseur
ClearScreen($FF89C0)
StartDrawing(ScreenOutput())
DrawingFont(Calibri_12)
DrawingMode(#PB_2DDrawing_AlphaChannel)
FrontColor($000000) : BackColor($FFC0C0)
;-
Declare AfficheSaison(CoulFond)
Procedure TraitVertical(X, Y, Hauteur, Epaisseur=1, Couleur=0) ; Trace un trait vertical avec épaisseur et couleur choisies
Protected i = 0
If Epaisseur >0
While i < Epaisseur
Line(x+i,y,1,Hauteur,Couleur)
i+1
Wend
Else
Line(x,y,1,Hauteur,Couleur)
EndIf
EndProcedure
Procedure TraitHorizontal(X, Y, Longueur, Epaisseur=1, Couleur=0) ; Trace un trait horizontal avec épaisseur et couleur choisies
Protected i = 0
If Epaisseur > 0
While i < Epaisseur
Line(x,y+i,Longueur,1,Couleur)
i+1
Wend
Else
Line(x,y,Longueur,1,Couleur)
EndIf
EndProcedure
Procedure Cadre(x, y, Largeur, Hauteur, Epaisseur=1, CouleurCadre=0); Trace un cadre simple de la couleur choisie
;Ligne supérieure
TraitHorizontal(x,y,Largeur, Epaisseur, CouleurCadre)
;Ligne gauche
TraitVertical(x,y,Hauteur+Epaisseur,Epaisseur,CouleurCadre)
;Ligne droite
TraitVertical(x+Largeur,y,Hauteur+Epaisseur,Epaisseur,CouleurCadre)
;Ligne inférieure
TraitHorizontal(x,y+Hauteur,Largeur,Epaisseur,CouleurCadre)
EndProcedure
Procedure CadreColore(x, y, Largeur, Hauteur, Epaisseur=1, CouleurCadre=0, CouleurFond=0); Trace un cadre plein avec la couleur choisie
Cadre(x, y, Largeur, Hauteur, Epaisseur, CouleurCadre)
;Remplir le cadre
FillArea(x+Largeur/2,y+Hauteur/2,CouleurCadre,CouleurFond)
EndProcedure
Macro Is(expression)
((expression) Or 0)
EndMacro
Macro Si(expression,Vrai,Faux)
If Is(expression)
Vrai
Else
Faux
EndIf
EndMacro
Procedure CentrerTexte(Fenetre.I, y.I, Texte.s, Couleur) ; Centre le texte dans la fenêtre à la hauteur et à la couleur choisies.
DrawText((DesktopWidth(Fenetre)-TextWidth(Texte))/2, y, Texte, Couleur)
EndProcedure
Procedure Calculer()
CadreColore(XX, YY - 20, EspaceMois * 6, 670, 1, $000000, $C0FFFF) ; Cadre du calendrier
; Initialiser les noms de mois
For i = 1 To 12
Mois$(i) = StringField(NomMois.s,i,"|")
Mois$(i) = UCase(Left(Mois$(i),1))+Mid(Mois$(i),2)
Next i
;Afficher les mois du mois courant à la fin de l'année courante
z = 0
Num_Mois = MoisEnCours
While Num_Mois < 13
Affiche(Annee)
Num_Mois+1
If Num_Mois = 13
Num_Mois = 1
Annee + 1
EndIf
z + 1
If z < 5 And Num_Mois > 12
Num_Mois = 1
Annee + 1
While Num_Mois < 13 And z < 5
Affiche(Annee)
Num_Mois + 1
z + 1
Wend
EndIf
If z > 5 ; si 6 mois sont affichés c'est suffisant
Break
EndIf
Wend
XX = x
For i = 1 To 5
TraitVertical(((i * EspaceMois)+ XX),YY-20, 670,2, $000000) ; Traits entre chaque mois
Next
TraitHorizontal(XX, YY, EspaceMois * 6, 2, $000000) ; Trait sous les mois
DrawingFont(Calibri_12)
;- Hiver
If Mois$(MoisEnCours) = "Janvier"
FillArea(XX + 20 , 50, $000000, $EEEEEE) ; hiver 2
DrawText(XX + 20 , 41, Mois$(1), $000000, $EEEEEE)
FillArea(XX + 20 + EspaceMois, 50, $000000, $EEEEEE) ; hiver 3
DrawText(XX + 20 + EspaceMois, 41, Mois$(2), $000000, $EEEEEE)
FillArea(XX + 20 + (EspaceMois*2), 50, $000000, $72D772) ; printemps 1
DrawText(XX + 20 +(EspaceMois*2), 41, Mois$(3), $000000, $72D772)
FillArea(XX + 20 + (EspaceMois*3), 50, $000000, $72D772) ; printemps 2
DrawText(XX + 20 +(EspaceMois*3), 41, Mois$(4), $000000, $72D772)
FillArea(XX + 20 + (EspaceMois*4) , 50, $000000, $72D772) ; printemps 3
DrawText(XX + 20 + (EspaceMois*4) , 41, Mois$(5), $000000, $72D772)
FillArea(XX + 20 + (EspaceMois*5), 50, $000000, $00F0F0) ; été 1
DrawText(XX + 20 +(EspaceMois*5), 41, Mois$(6), $000000, $00F0F0)
EndIf
If Mois$(MoisEnCours) = "Février"
FillArea(XX + 20 , 50, $000000, $EEEEEE) ; hiver 3
DrawText(XX + 20 , 41, Mois$(2), $000000, $EEEEEE)
FillArea(XX + 20 + EspaceMois, 50, $000000, $72D772) ; printemps 1
DrawText(XX + 20 + EspaceMois, 41, Mois$(3), $000000, $72D772)
FillArea(XX + 20 + (EspaceMois*2), 50, $000000, $72D772) ; printemps 2
DrawText(XX + 20 + (EspaceMois*2), 41, Mois$(4), $000000, $72D772)
FillArea(XX + 20 + (EspaceMois*3) , 50, $000000, $72D772) ; printemps 3
DrawText(XX + 20 + (EspaceMois*3) , 41, Mois$(5), $000000, $72D772)
FillArea(XX + 20 + (EspaceMois*4), 50, $000000, $00F0F0) ; été 1
DrawText(XX + 20 +(EspaceMois*4), 41, Mois$(6), $000000, $00F0F0)
FillArea(XX + 20 + (EspaceMois*5), 50, $000000, $00F0F0) ; été 2
DrawText(XX + 20 + (EspaceMois*5), 41, Mois$(7), $000000, $00F0F0)
EndIf
;- Printemps
If Mois$(MoisEnCours) = "Mars"
FillArea(XX + 20 , 50, $000000, $72D772) ; printemps 1
DrawText(XX + 20 , 41, Mois$(3), $000000, $72D772)
FillArea(XX + 20 + EspaceMois, 50, $000000, $72D772) ; printemps 2
DrawText(XX + 20 + EspaceMois, 41, Mois$(4), $000000, $72D772)
FillArea(XX + 20 + (EspaceMois*2) , 50, $000000, $72D772) ; printemps 3
DrawText(XX + 20 + (EspaceMois*2) , 41, Mois$(5), $000000, $72D772)
FillArea(XX + 20 + (EspaceMois*3), 50, $000000, $00F0F0) ; été 1
DrawText(XX + 20 +(EspaceMois*3), 41, Mois$(6), $000000, $00F0F0)
FillArea(XX + 20 + (EspaceMois*4), 50, $000000, $00F0F0) ; été 2
DrawText(XX + 20 + (EspaceMois*4), 41, Mois$(7), $000000, $00F0F0)
FillArea(XX + 20 + (EspaceMois*5), 50, $000000, $00F0F0) ; été 3
DrawText(XX + 20 + (EspaceMois*5), 41, Mois$(8), $000000, $00F0F0)
EndIf
If Mois$(MoisEnCours) = "Avril"
FillArea(XX + 20, 50, $000000, $72D772) ; printemps 2
DrawText(XX + 20, 41, Mois$(4), $000000, $72D772)
FillArea(XX + 20 + EspaceMois , 50, $000000, $72D772) ; printemps 3
DrawText(XX + 20 + EspaceMois , 41, Mois$(5), $000000, $72D772)
FillArea(XX + 20 + (EspaceMois*2), 50, $000000, $00F0F0) ; été 1
DrawText(XX + 20 +(EspaceMois*2), 41, Mois$(6), $000000, $00F0F0)
FillArea(XX + 20 + (EspaceMois*3), 50, $000000, $00F0F0) ; été 2
DrawText(XX + 20 + (EspaceMois*3), 41, Mois$(7), $000000, $00F0F0)
FillArea(XX + 20 + (EspaceMois*4), 50, $000000, $00F0F0) ; été 3
DrawText(XX + 20 + (EspaceMois*4), 41, Mois$(8), $000000, $00F0F0)
FillArea(XX + 20 + (EspaceMois*5), 50, $000000, $81C5FE) ; automne 1
DrawText(XX + 20 + (EspaceMois*5), 41, Mois$(9), $000000, $81C5FE)
EndIf
If Mois$(MoisEnCours) = "Mai"
FillArea(XX + 20 , 50, $000000, $72D772) ; printemps 3
DrawText(XX + 20 , 41, Mois$(5), $000000, $72D772)
FillArea(XX + 20 + EspaceMois, 50, $000000, $00F0F0) ; été 1
DrawText(XX + 20 +(EspaceMois), 41, Mois$(6), $000000, $00F0F0)
FillArea(XX + 20 + (EspaceMois*2), 50, $000000, $00F0F0) ; été 2
DrawText(XX + 20 + (EspaceMois*2), 41, Mois$(7), $000000, $00F0F0)
FillArea(XX + 20 + (EspaceMois*3), 50, $000000, $00F0F0) ; été 3
DrawText(XX + 20 + (EspaceMois*3), 41, Mois$(8), $000000, $00F0F0)
FillArea(XX + 20 + (EspaceMois*4), 50, $000000, $81C5FE) ; automne 1
DrawText(XX + 20 + (EspaceMois*4), 41, Mois$(9), $000000, $81C5FE)
FillArea(XX + 20 + (EspaceMois*5), 50, $000000, $81C5FE) ; automne 2
DrawText(XX + 20 +(EspaceMois*5), 41, Mois$(10), $000000, $81C5FE)
EndIf
;- été
If Mois$(MoisEnCours) = "Juin"
FillArea(XX + 20 , 50, $000000, $00F0F0) ; été 1
DrawText(XX + 20 , 41, Mois$(6), $000000, $00F0F0)
FillArea(XX + 20 +EspaceMois, 50, $000000, $00F0F0) ; été 2
DrawText(XX + 20 +EspaceMois, 41, Mois$(7), $000000, $00F0F0)
FillArea(XX + 20 + (EspaceMois*2), 50, $000000, $00F0F0) ; été 3
DrawText(XX + 20 + (EspaceMois*2), 41, Mois$(8), $000000, $00F0F0)
FillArea(XX + 20 + (EspaceMois*3), 50, $000000, $81C5FE) ; automne 1
DrawText(XX + 20 + (EspaceMois*3), 41, Mois$(9), $000000, $81C5FE)
FillArea(XX + 20 + (EspaceMois*4), 50, $000000, $81C5FE) ; automne 2
DrawText(XX + 20 +(EspaceMois*4), 41, Mois$(10), $000000, $81C5FE)
FillArea(XX + 20 + (EspaceMois*5), 50, $000000, $81C5FE) ; automne 3
DrawText(XX + 20 +(EspaceMois*5), 41, Mois$(11), $000000, $81C5FE)
EndIf
If Mois$(MoisEnCours) = "Juillet"
FillArea(XX + 20 , 50, $000000, $00F0F0) ; été 2
DrawText(XX + 20 , 41, Mois$(7), $000000, $00F0F0)
FillArea(XX + 20 + EspaceMois, 50, $000000, $00F0F0) ; été 3
DrawText(XX + 20 + EspaceMois, 41, Mois$(8), $000000, $00F0F0)
FillArea(XX + 20 + (EspaceMois*2), 50, $000000, $81C5FE) ; automne 1
DrawText(XX + 20 + (EspaceMois*2), 41, Mois$(9), $000000, $81C5FE)
FillArea(XX + 20 + (EspaceMois*3), 50, $000000, $81C5FE) ; automne 2
DrawText(XX + 20 +(EspaceMois*3), 41, Mois$(10), $000000, $81C5FE)
FillArea(XX + 20 + (EspaceMois*4), 50, $000000, $81C5FE) ; automne 3
DrawText(XX + 20 +(EspaceMois*4), 41, Mois$(11), $000000, $81C5FE)
FillArea(XX + 20 +(EspaceMois*5), 50, $000000, $EEEEEE) ; hiver 1
DrawText(XX + 20 +(EspaceMois*5), 41, Mois$(12), $000000, $EEEEEE)
EndIf
If Mois$(MoisEnCours) = "Août"
FillArea(XX + 20 , 50, $000000, $00F0F0) ; été 3
DrawText(XX + 20 , 41, Mois$(8), $000000, $00F0F0)
FillArea(XX + 20 + EspaceMois, 50, $000000, $81C5FE) ; automne 1
DrawText(XX + 20 + EspaceMois, 41, Mois$(9), $000000, $81C5FE)
FillArea(XX + 20 + (EspaceMois*2), 50, $000000, $81C5FE) ; automne 2
DrawText(XX + 20 +(EspaceMois*2), 41, Mois$(10), $000000, $81C5FE)
FillArea(XX + 20 + (EspaceMois*3), 50, $000000, $81C5FE) ; automne 3
DrawText(XX + 20 +(EspaceMois*3), 41, Mois$(11), $000000, $81C5FE)
FillArea(XX + 20 +(EspaceMois*4), 50, $000000, $EEEEEE) ; hiver 1
DrawText(XX + 20 +(EspaceMois*4), 41, Mois$(12), $000000, $EEEEEE)
FillArea(XX + 20 +(EspaceMois*5), 50, $000000, $EEEEEE) ; hiver 2
DrawText(XX + 20 +(EspaceMois*5), 41, Mois$(1), $000000, $EEEEEE)
EndIf
;- Automne
If Mois$(MoisEnCours) = "Septembre"
FillArea(XX + 20 , 50, $000000, $81C5FE) ; automne 1
DrawText(XX + 20 , 41, Mois$(9), $000000, $81C5FE)
FillArea(XX + 20 + EspaceMois, 50, $000000, $81C5FE) ; automne 2
DrawText(XX + 20 +(EspaceMois), 41, Mois$(10), $000000, $81C5FE)
FillArea(XX + 20 + (EspaceMois*2), 50, $000000, $81C5FE) ; automne 3
DrawText(XX + 20 +(EspaceMois*2), 41, Mois$(11), $000000, $81C5FE)
FillArea(XX + 20 +(EspaceMois*3), 50, $000000, $EEEEEE) ; hiver 1
DrawText(XX + 20 +(EspaceMois*3), 41, Mois$(12), $000000, $EEEEEE)
FillArea(XX + 20 +(EspaceMois*4), 50, $000000, $EEEEEE) ; hiver 2
DrawText(XX + 20 +(EspaceMois*4), 41, Mois$(1), $000000, $EEEEEE)
FillArea(XX + 20 +(EspaceMois*5), 50, $000000, $EEEEEE) ; hiver 3
DrawText(XX + 20 +(EspaceMois*5), 41, Mois$(2), $000000, $EEEEEE)
EndIf
If Mois$(MoisEnCours) = "Octobre"
FillArea(XX + 20, 50, $000000, $81C5FE) ; automne 2
DrawText(XX + 20 , 41, Mois$(10), $000000, $81C5FE)
FillArea(XX + 20 + EspaceMois, 50, $000000, $81C5FE)
DrawText(XX + 20 +(EspaceMois), 41, Mois$(11), $000000, $81C5FE)
FillArea(XX + 20 +(EspaceMois*2), 50, $000000, $EEEEEE) ; hiver 1
DrawText(XX + 20 +(EspaceMois*2), 41, Mois$(12), $000000, $EEEEEE)
FillArea(XX + 20 +(EspaceMois*3), 50, $000000, $EEEEEE) ; hiver 2
DrawText(XX + 20 +(EspaceMois*3), 41, Mois$(1), $000000, $EEEEEE)
FillArea(XX + 20 +(EspaceMois*4), 50, $000000, $EEEEEE) ; hiver 3
DrawText(XX + 20 +(EspaceMois*4), 41, Mois$(2), $000000, $EEEEEE)
FillArea(XX + 20 + (EspaceMois*5), 50, $000000, $72D772) ; printemps 1
DrawText(XX + 20 +(EspaceMois*5), 41, Mois$(3), $000000, $72D772)
EndIf
If Mois$(MoisEnCours) = "Novembre"
FillArea(XX + 20, 50, $000000, $81C5FE) ; automne 3
DrawText(XX + 20, 41, Mois$(11), $000000, $81C5FE)
FillArea(XX + 20 +(EspaceMois), 50, $000000, $EEEEEE) ; hiver 1
DrawText(XX + 20 +(EspaceMois), 41, Mois$(12), $000000, $EEEEEE)
FillArea(XX + 20 +(EspaceMois*2), 50, $000000, $EEEEEE) ; hiver 2
DrawText(XX + 20 +(EspaceMois*2), 41, Mois$(1), $000000, $EEEEEE)
FillArea(XX + 20 +(EspaceMois*3), 50, $000000, $EEEEEE) ; hiver 3
DrawText(XX + 20 +(EspaceMois*3), 41, Mois$(2), $000000, $EEEEEE)
FillArea(XX + 20 + (EspaceMois*4), 50, $000000, $72D772) ; printemps 1
DrawText(XX + 20 +(EspaceMois*4), 41, Mois$(3), $000000, $72D772)
FillArea(XX + 20 + (EspaceMois*5), 50, $000000, $72D772) ; printemps 2
DrawText(XX + 20 +(EspaceMois*5), 41, Mois$(4), $000000, $72D772)
EndIf
If Mois$(MoisEnCours) = "Décembre"
FillArea(XX + 20 , 50, $000000, $EEEEEE) ; hiver 1
DrawText(XX + 20 , 41, Mois$(12), $000000, $EEEEEE)
DrawText(XX + 20 + EspaceMois, 41, Mois$(12), $000000, $EEEEEE)
FillArea(XX + 20 + EspaceMois, 50, $000000, $EEEEEE) ; hiver 2
DrawText(XX + 20 + EspaceMois, 41, Mois$(1), $000000, $EEEEEE)
FillArea(XX + 20 +(EspaceMois*2), 50, $000000, $EEEEEE) ; hiver 3
DrawText(XX + 20 +(EspaceMois*2), 41, Mois$(2), $000000, $EEEEEE)
FillArea(XX + 20 + (EspaceMois*3), 50, $000000, $72D772) ; printemps 1
DrawText(XX + 20 +(EspaceMois*3), 41, Mois$(3), $000000, $72D772)
FillArea(XX + 20 + (EspaceMois*4), 50, $000000, $72D772) ; printemps 2
DrawText(XX + 20 +(EspaceMois*4), 41, Mois$(4), $000000, $72D772)
FillArea(XX + 20 + (EspaceMois*5), 50, $000000, $72D772) ; printemps 3
DrawText(XX + 20 +(EspaceMois*5), 41, Mois$(5), $000000, $72D772)
EndIf
;- Légende
DrawingFont(Calibri_12)
BackColor(Point(0,0))
TraitHorizontal(10, 730, 50, 20, $72D772) : DrawText(70, 730, "Printemps",$000000) : Cadre(10, 730, 50, 20, 1, $0)
TraitHorizontal(310, 730, 50, 20, $00F0F0) : DrawText(370, 730, "Eté",$000000) : Cadre(310, 730, 50, 20, 1, $0)
TraitHorizontal(610, 730, 50, 20, $81C5FB) : DrawText(670, 730, "Automne",$000000) : Cadre(610, 730, 50, 20, 1, $0)
TraitHorizontal(910, 730, 50, 20, $EEEEEE) : DrawText(970, 730, "Hiver",$000000) : Cadre(910, 730, 50, 20, 1, $0)
;...
EndProcedure
;
Procedure Affiche(Annee)
For i = 1 To Jours_dans_le_mois(Annee,Num_Mois)
Global DateJour.s =ChaineDate(Masque,Date(Annee,Num_Mois,i,0,0,0))
Global JourSemaine.s = StringField(DateJour, 1, " ")
Global JourSemaine = UCase(Left(JourSemaine,1))+Right(JourSemaine,Len(JourSemaine)-1)
Global JourMois.s = StringField(DateJour, 2, " "), JourMois2.s
Global DizJourMois = Val(Left(JourMois,1))
Global UnJourMois = Val(Right(JourMois,1))
Phase = ObtenirPhaseLune(Annee, Num_Mois, Val(JourMois))
Select Phase
Case 0
Texte$ = "NL"
Case 1
Texte$ = "PQ"
Case 2
Texte$ = "PL"
Case 3
Texte$ = "DQ"
EndSelect
FrontColor(0)
BackColor(CoulFond)
Si(Phase <> -1, DrawText(XX + 50, YY, Texte$), DrawText(XX + 50, YY, "")) ; Afficher la phase de la lune
Texte$ = ""
Select JourSemaine ;- sélection Jds
Case "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"
FrontColor($00)
BackColor(CoulFond)
DrawText(XX + 2, YY, LSet(JourSemaine,2," ")+" ") ; Jours de semaine en noir
If UnJourMois > 0 And DizJourMois
DrawText(XX + 26, YY, Str(DizJourMois)) ; dizaine du mois
DrawText(XX + 26 + TextWidth("0"), YY, Str(UnJourMois)) ; Jour du mois
ElseIf DizJourMois < 1
DrawText(XX + 26 + TextWidth("0"), YY, Str(UnJourMois)) ; dizaine du mois
ElseIf DizJourMois > 0 And UnJourMois = 0 ; 10 20 ou 30
DrawText(XX + 26, YY, Str(DizJourMois)) ; dizaine du mois
DrawText(XX + 26 + TextWidth("0"), YY, "0") ; Jour du mois
EndIf
;- fêtes mobiles semaine
CoulTexte = $FF
Select JourMois
Case StringField(ChaineDate(Masque2, Mardi_Gras(Annee)), 2 , " ")
If UCase(Mois$(Num_Mois)) = UCase(StringField(ChaineDate(Masque2, Mardi_Gras(Annee)), 3, " ")):Texte$ = "Mardi gras":EndIf
Case StringField(ChaineDate(Masque2, Cendres(Annee)), 2 , " ")
If UCase(Mois$(Num_Mois)) = UCase(StringField(ChaineDate(Masque2, Cendres(Annee)), 3, " ")):Texte$ = "Mercredi des Cendres":EndIf
Case StringField(ChaineDate(Masque2, Jeudi_Saint(Annee)), 2 , " ")
If UCase(Mois$(Num_Mois)) = UCase(StringField(ChaineDate(Masque2, Jeudi_Saint(Annee)), 3, " ")):Texte$ = "Jeudi Saint":EndIf
Case StringField(ChaineDate(Masque2, Vendredi_Saint(Annee)), 2 , " ")
If UCase(Mois$(Num_Mois)) = UCase(StringField(ChaineDate(Masque2, Vendredi_Saint(Annee)), 3, " ")):Texte$ = "Vendredi Saint":EndIf
Case StringField(ChaineDate(Masque2, PaquesLundi(Annee)), 2 , " ")
If UCase(Mois$(Num_Mois)) = UCase(StringField(ChaineDate(Masque2, PaquesLundi(Annee)), 3, " ")):Texte$ = "Lundi de Pâques":EndIf
Case StringField(ChaineDate(Masque2, Ascension(Annee)), 2 , " ")
If UCase(Mois$(Num_Mois)) = UCase(StringField(ChaineDate(Masque2, Ascension(Annee)), 3, " ")):Texte$ = "Ascension":EndIf
Case StringField(ChaineDate(Masque2, PentecoteLundi(Annee)), 2 , " ")
If UCase(Mois$(Num_Mois)) = UCase(StringField(ChaineDate(Masque2, PentecoteLundi(Annee)), 3, " ")):Texte$ = "Lundi de Pentecôte":EndIf
EndSelect
DrawText(XX + 70, YY, Texte$, CoulTexte)
Texte$ = ""
;- anniv semaine
If JourMois = "24" And Num_Mois = 2 : DrawText(XX + 70, YY, "Anniv Maëlys " + Str(Annee-2011)) : EndIf
If JourMois = "17" And Num_Mois = 3 : DrawText(XX + 70, YY, "Anniv Sonia "+Str(Annee-1990)) : EndIf
If JourMois = "06" And Num_Mois = 4 : DrawText(XX + 70, YY, "Anniv Pierre "+Str(Annee-2011)) : EndIf
If JourMois = "19" And Num_Mois = 6 : DrawText(XX + 70, YY, "Anniv papa "+Str(Annee-1950)) : EndIf
If JourMois = "21" And Num_Mois = 8 : DrawText(XX + 70, YY, "Anniv maman "+Str(Annee-1956)) : EndIf
If JourMois = "24" And Num_Mois = 8 : DrawText(XX + 70, YY, "Anniv Sarah "+Str(Annee-1986)) : EndIf
If JourMois = "10" And Num_Mois = 10 : DrawText(XX + 70, YY, "Anniv mimi "+Str(Annee-1983)) :EndIf
If JourMois = "30" And Num_Mois = 11 : DrawText(XX + 70, YY, "Anniv Jérôme "+Str(Annee-1987)) : EndIf
If JourMois = "15" And Num_Mois = 11 : DrawText(XX + 70, YY, "Anniv Amélie "+Str(Annee-1990)) : EndIf
Case "Dimanche" ;- sélection dimanche
FrontColor($FF)
BackColor(CoulFond)
DrawText(XX + 2, YY, LSet(JourSemaine,2," ")+" ") ; dimanche en rouge
If UnJourMois > 0 And DizJourMois
DrawText(XX + 26, YY, Str(DizJourMois)) ; dizaine du MoisEnCours
DrawText(XX + 26 + TextWidth("0"), YY, Str(UnJourMois)) ; Jour du MoisEnCours
ElseIf DizJourMois < 1
DrawText(XX + 26 + TextWidth("0"), YY, Str(UnJourMois)) ; dizaine du MoisEnCours
ElseIf DizJourMois > 0 And UnJourMois = 0 ; 10 20 ou 30
DrawText(XX + 26, YY, Str(DizJourMois)) ; dizaine du mois
DrawText(XX + 26 + TextWidth("0"), YY, "0") ; Jour du mois
EndIf
;- fêtes mobile dimanche
Select JourMois
Case StringField(ChaineDate(Masque2, Paques(Annee)), 2 , " ")
If UCase(Mois$(Num_Mois)) = UCase(StringField(ChaineDate(Masque2, Paques(Annee)), 3, " ")):Texte$ = "Pâques":EndIf
Case StringField(ChaineDate(Masque2, Fete_des_grand_meres(Annee)), 2 , " ")
If UCase(Mois$(Num_Mois)) = UCase(StringField(ChaineDate(Masque2, Fete_des_grand_meres(Annee)), 3, " ")):Texte$ = "Fête des Grand-Mères":EndIf
Case StringField(ChaineDate(Masque2, Passion(Annee)), 2 , " ")
If UCase(Mois$(Num_Mois)) = UCase(StringField(ChaineDate(Masque2, Passion(Annee)), 3, " ")):Texte$ = "Passion":EndIf
Case StringField(ChaineDate(Masque2, Pentecote(Annee)), 2 , " ")
If UCase(Mois$(Num_Mois)) = UCase(StringField(ChaineDate(Masque2, Pentecote(Annee)), 3, " ")):Texte$ = "Pentecôte":EndIf
Case StringField(ChaineDate(Masque2, FeteDesMeres(Annee)), 2 , " ")
If UCase(Mois$(Num_Mois)) = UCase(StringField(ChaineDate(Masque2, FeteDesMeres(Annee)), 3, " ")):Texte$ = "Fête des Mères":EndIf
Case StringField(ChaineDate(Masque2, Fete_des_peres(Annee)), 2 , " ")
If UCase(Mois$(Num_Mois)) = UCase(StringField(ChaineDate(Masque2, Fete_des_peres(Annee)), 3, " ")):Texte$ = "Fête des Pères":EndIf
Case StringField(ChaineDate(Masque2, Fete_des_grand_peres(Annee)), 2 , " ")
If UCase(Mois$(Num_Mois)) = UCase(StringField(ChaineDate(Masque2, Fete_des_grand_peres(Annee)), 3, " ")):Texte$ = "Fêtes des Grand-Pères":EndIf
EndSelect
;- décalage horaire
If JourMois = StringField(ChaineDate(Masque2, Heure_d_ete(Annee)), 2 , " ") And Num_Mois = 3 : Texte$ = "Heure d'été +1" : EndIf
If JourMois = StringField(ChaineDate(Masque2, Heure_d_hiver(Annee)), 2 , " ") And Num_Mois = 10 : Texte$ = "Heure d'hiver -1" : EndIf
If JourMois = StringField(ChaineDate(Masque2, Rameaux(Annee)), 2 , " ") And Num_Mois = 3 : Texte$ = "Rameaux"
ElseIf JourMois = StringField(ChaineDate(Masque2, Rameaux(Annee)), 2 , " ") And Num_Mois = 4 : Texte$ = "Rameaux"
EndIf
DrawText(XX + 70, YY, Texte$, CoulTexte)
;- anniv dimanche
If JourMois = "24" And Num_Mois = 2 : DrawText(XX + 70, YY, "Anniv Maëlys " + Str(Annee-2011)) : EndIf
If JourMois = "17" And Num_Mois = 3 : DrawText(XX + 70, YY, "Anniv Sonia "+Str(Annee-1990)) : EndIf
If JourMois = "06" And Num_Mois = 4 : DrawText(XX + 70, YY, "Anniv Pierre "+Str(Annee-2011)) : EndIf
If JourMois = "19" And Num_Mois = 6 : DrawText(XX + 70, YY, "Anniv papa "+Str(Annee-1950)) : EndIf
If JourMois = "21" And Num_Mois = 8 : DrawText(XX + 70, YY, "Anniv maman "+Str(Annee-1956)) : EndIf
If JourMois = "24" And Num_Mois = 8 : DrawText(XX + 70, YY, "Anniv Sarah "+Str(Annee-1986)) : EndIf
If JourMois = "10" And Num_Mois = 10 : DrawText(XX + 70, YY, "Anniv mimi "+Str(Annee-1983)) : EndIf
If JourMois = "30" And Num_Mois = 11 : DrawText(XX + 70, YY, "Anniv Jérôme "+Str(Annee-1987)) : EndIf
If JourMois = "15" And Num_Mois = 11 : DrawText(XX + 70, YY, "Anniv Amélie "+Str(Annee-1990)) : EndIf
EndSelect
;- Fêtes fixes
If JourMois = "01" And Num_Mois = 1 : DrawText(XX + 70, YY, "Nouvel An", $FF) : EndIf
If JourMois = "01" And Num_Mois = 5 : DrawText(XX + 70, YY, "Fête du travail", $FF) : EndIf
If JourMois = "08" And Num_Mois = 5 : DrawText(XX + 70, YY, "Victoire 1945", $FF) : EndIf
If JourMois = "14" And Num_Mois = 7 : DrawText(XX + 70, YY, "Fête Nationale", $FF) : EndIf
If JourMois = "15" And Num_Mois = 8 : DrawText(XX + 70, YY, "Assomption", $FF) : EndIf
If JourMois = "01" And Num_Mois = 11 : DrawText(XX + 70, YY, "Toussaint", $FF) : EndIf
If JourMois = "11" And Num_Mois = 11 : DrawText(XX + 70, YY, "Armistice 1918", $FF) : EndIf
If JourMois = "25" And Num_Mois = 12 : DrawText(XX + 70, YY, "Noël", $FF) : EndIf
If JourMois = "31" And Num_Mois = 12 : DrawText(XX + 70, YY, "St Sylvestre", $FF) : EndIf
;- Affichage saisons
If SiBissextile(Annee)= #Faux
If Num_Mois = 3 And JourMois = "21" : AfficheSaison($72D772)
ElseIf Num_Mois = 6 And JourMois = "22" : AfficheSaison($00F0F0)
ElseIf Num_Mois = 9 And JourMois = "23" : AfficheSaison($81C5FE)
ElseIf Num_Mois = 12 And JourMois = "22" : AfficheSaison($EEEEEE)
EndIf
Else
If Num_Mois = 3 And JourMois = "20" : AfficheSaison($72D772)
ElseIf Num_Mois = 6 And JourMois = "21" : AfficheSaison($00F0F0)
ElseIf Num_Mois = 9 And JourMois = "22" : AfficheSaison($81C5FE)
ElseIf Num_Mois = 12 And JourMois = "21" : AfficheSaison($EEEEEE)
EndIf
EndIf
If JourMois = RSet(Str(Day(Date())), 2, "0") And Num_Mois = Month(Date()) ;- AuJourd'hui
Si( JourSemaine = "Dimanche", CoulTexte = $FF, CoulTexte = 0) ; Blanc sur fond rouge ou blanc sur fond noir
DrawText(XX +2, YY, LSet(JourSemaine, 2, " ")+" ", $FFFFFF, CoulTexte)
si(JourMois >= "10", JourMois=Left(JourMois,2), JourMois=" "+Right(JourMois,1))
DrawText(XX + 26, YY, JourMois+" "+Str(DayOfYear(Date()))+"/"+Str(365+SiBissextile(Annee)-DayOfYear(Date())), $FFFFFF, CoulTexte)
;TraitHorizontal(1210, 730, 50, 20, CoulTexte)
DrawText(1270, 730, "AuJourd'hui", CoulFond, CoulTexte) ; légende
EndIf
YY + TextHeight(" ")+ 2
Next
XX + EspaceMois
YY = Y
EndProcedure
Procedure AfficheSaison(CoulFond)
DrawText(XX + 2, YY, LSet(JourSemaine,2," ")+" ", 0, CoulFond) ; Saison
DrawText(XX + 26, YY, JourMois, 0, CoulFond) ; Jour du mois
EndProcedure
Calculer()
CentrerTexte(#Fenetre_principale,10,"Pressez une touche ou cliquez un bouton de la souris pour sortir",$00FFFF)
StopDrawing()
FlipBuffers()
;-
;- gestion des événements en boucle sans fin
;
Global action.i = #f_aucune
Repeat
Global event = WindowEvent()
Select event
Case #PB_Event_CloseWindow
action = #f_sortie
Case 0
;
; il n'y a pas d'événements, donc faisons nos trucs graphiques
;
ExamineKeyboard()
If KeyboardPushed(#PB_Key_All)
action = #f_sortie
EndIf
ExamineMouse()
Resultat = MouseButton(#PB_MouseButton_Left)
If Resultat = 1
action = #f_sortie
EndIf
Resultat = MouseButton(#PB_MouseButton_Middle)
If Resultat = 1
action = #f_sortie
EndIf
Resultat = MouseButton(#PB_MouseButton_Right)
If Resultat = 1
action = #f_sortie
EndIf
;
; et montrons des choses sur l'écran
;
FlipBuffers()
;
EndSelect
Until action = #f_sortie
;
; fermer l'écran et la fenêtre en douceur
;
CloseScreen()
CloseWindow(#Fenetre_principale)
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Calendrier défilant
Salut Micoute
Bon travail. Mais petits problèmes
Tu ne tiens pas compte de la résolution d'écran, donc avec certaines résolutions (expl ordi portable) ton calendrier sort de l'écran.
Explique ce que veut dire DQ,PQ ect, car j'ai l'impression que le lundi 22 septembre "il faut d'urgence allez acheter du PQ".
Pense a l'utilisateur.
Trés bonne idée de faire une présentation de ton calendrier style " carton affichable au mur "
Tu es dans la bonne voie pour la maitrise de PB
Michel
Bon travail. Mais petits problèmes
Tu ne tiens pas compte de la résolution d'écran, donc avec certaines résolutions (expl ordi portable) ton calendrier sort de l'écran.
Explique ce que veut dire DQ,PQ ect, car j'ai l'impression que le lundi 22 septembre "il faut d'urgence allez acheter du PQ".



Trés bonne idée de faire une présentation de ton calendrier style " carton affichable au mur "
Tu es dans la bonne voie pour la maitrise de PB

Michel
Re: Calendrier défilant
Je ne comprend pas que ça déborde étant donné que j'ai mis :
Global.i Largeur_ecran = DesktopWidth(0)
Global.i Hauteur_ecran = DesktopHeight(0)
Global.i Prof_ecran = DesktopDepth(0)
à moins qu'il y aurait un bug
Quant aux abréviations, se sont les phases de la lune, PQ = premier quartier, PL = pleine lune, DQ = dernier quartier et NL = nouvelle lune
Global.i Largeur_ecran = DesktopWidth(0)
Global.i Hauteur_ecran = DesktopHeight(0)
Global.i Prof_ecran = DesktopDepth(0)
à moins qu'il y aurait un bug
Quant aux abréviations, se sont les phases de la lune, PQ = premier quartier, PL = pleine lune, DQ = dernier quartier et NL = nouvelle lune
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !