Page 1 sur 2

Calendrier défilant

Publié : sam. 01/sept./2012 16:19
par Micoute
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

Re: Calendrier défilant

Publié : sam. 01/sept./2012 16:20
par Micoute
Voici une autre partie

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

Re: Calendrier défilant

Publié : sam. 01/sept./2012 16:23
par Micoute
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

Re: Calendrier défilant

Publié : sam. 01/sept./2012 16:25
par Micoute
Phases de la lune.pb d'après un programme de Huit bits

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
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 !

Re: Calendrier défilant

Publié : dim. 02/sept./2012 5:54
par microdevweb
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.

Re: Calendrier défilant

Publié : dim. 02/sept./2012 7:55
par Micoute
J'aurais bien voulu mettre juste un Zip, mais je ne sais pas comment on fait ! :mrgreen:

Re: Calendrier défilant

Publié : dim. 02/sept./2012 9:24
par Ar-S
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

Re: Calendrier défilant

Publié : dim. 02/sept./2012 13:28
par Micoute
C'est corrigé !
Merci !
Rdv au premier post

Re: Calendrier défilant

Publié : lun. 03/sept./2012 13:41
par MLD
@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.

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
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 :cry:
Regarde sur le fofo US , il y a parfois des codes longs et personne ne dit rien. :wink:

Re: Calendrier défilant

Publié : lun. 03/sept./2012 13:57
par Micoute
Merci beaucoup pour cette contribution, j’apprécie et j'adopte.

Re: Calendrier défilant

Publié : lun. 03/sept./2012 17:00
par Kwai chang caine
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
D'accord avec toi, sans parler des milliers de liens qui sont rompus au fil du temps :wink:
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

Publié : lun. 03/sept./2012 17:05
par Ar-S
Pourquoi l'un ou l'autre ?
Rien n'empêche de proposer un code et une archive si besoin.

Re: Calendrier défilant

Publié : lun. 03/sept./2012 17:36
par Micoute
Dans ce cas il va manquer le fichier principal Calendrier défilant.pb, le voici :

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)
J'ai encore bien des choses à apprendre, mais je sais que vous allez m'aider, alors je reste tranquille.

Re: Calendrier défilant

Publié : mar. 04/sept./2012 10:49
par MLD
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". 8O :D :lol: 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 :lol:

Michel

Re: Calendrier défilant

Publié : mar. 04/sept./2012 13:20
par Micoute
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