FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Un Calendrier de plus Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Un Calendrier de plus Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Un Calendrier de plus Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Un Calendrier de plus Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Un Calendrier de plus Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Un Calendrier de plus Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Un Calendrier de plus Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Un Calendrier de plus Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Un Calendrier de plus Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Un Calendrier de plus Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Un Calendrier de plus Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Un Calendrier de plus Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Un Calendrier de plus Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Un Calendrier de plus Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Un Calendrier de plus Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-17%
Le deal à ne pas rater :
(Black Friday) Apple watch Apple SE GPS + Cellular 44mm (plusieurs ...
249 € 299 €
Voir le deal

 

 Un Calendrier de plus

Aller en bas 
+2
Yannick
Jean Claude
6 participants
AuteurMessage
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Un Calendrier de plus Empty
MessageSujet: Un Calendrier de plus   Un Calendrier de plus EmptySam 22 Fév 2014 - 18:28

Bonsoir à tous,

Je vous propose un calendrier fait pour sélectionner une date.
il vous suffit de lire les 9 lignes de commentaire pour vous en servir.
Il n'y a pas de création de fichier, ni de chemin à régler dans cette version, il est exécutable tel quel.

Code:


' Calendrier pour sélection d'une date par Jean Claude 22/02/2014

' ce calendrier est destiné à être exécuté par un autre exécutable (EXECUTE_WAIT)
' il peut, aussi, être exploité tel quel.
' les année bissextiles sont prises en compte.
' à vous de choisir la manière de sortir au label sortie (ligne 24)
' les boutons [<<] et [>>] servent à changer d'année
' les boutons [<] et [>] servent à changer de mois
' la sélection de la date se fait par un click dans le calendrier sur le jour souhaité
' En retour 4 variables: js$=Jour de la semaine / jj$ = jour sélectionné /
' mm$ = mois sélectionné / aaaa$ =a nnée sélectionnée
' ==============================================================================
' hide 0
dim no%,nbj%,ct%,aaaa%,mm%,lf%
dim js$,ms$,jj$,mm$,aaaa$
dim form_calendar%,bouton_mav%,bouton_map%,bouton_aav%,bouton_aap%,alpha_moi%
dim alpha_Lu%,alpha_Ma%,alpha_Me%,alpha_Je%,alpha_Ve%,alpha_Sa%,alpha_Di%
label close,anavant,moiavant,anapres,moiapres,sortie
' démarrage
no%=no%+1:Calendrier(no%)
END
' =============================================== ci-dessous gestion des sorties
sortie:
jj$=caption$(number_click)
' résultat dans caption form 0
Retourne_Jour_Semaine(jj$,mm$,aaaa$)
caption 0,js$+" "+jj$+"/"+mm$+"/"+aaaa$
' ici vous pouvez enregistrer le résultat dans un fichier
' terminate
return
' ----
close:
' vide le fichier
terminate
return
' ===================================================== ci-dessous: Le programme
Sub Calendrier(num_obj%)
form_calendar%=num_obj%
 form form_calendar%:width form_calendar%,206:height form_calendar%,208
   border_small form_calendar%:on_close form_calendar%,close
   top form_calendar%,((screen_y/2)-height(form_calendar%)/2)
   left form_calendar%,((screen_x/2)-width(form_calendar%)/2)
   caption form_calendar%,"Calendrier"
 num_obj%=num_obj%+1:bouton_aav%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,"<<"
   top bouton_aav%,5:left bouton_aav%,5:hint num_obj%," Année Précédente "
 num_obj%=num_obj%+1:bouton_mav%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,"<"
   top bouton_mav%,top(bouton_aav%):left bouton_mav%,left(bouton_aav%)+23:hint num_obj%," Mois Précédent "
 num_obj%=num_obj%+1:alpha_moi%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
   height num_obj%,20:font_bold num_obj%
   top alpha_moi%,top(bouton_aav%)+3
 num_obj%=num_obj%+1:bouton_map%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,">":hint num_obj%," Mois Suivant "
   top bouton_map%,top(bouton_aav%):left bouton_map%,width(form_calendar%)-66
 num_obj%=num_obj%+1:bouton_aap%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,">>":hint num_obj%," Année Suivante"
   top bouton_aap%,top(bouton_aav%):left bouton_aap%,left(bouton_map%)+23
 num_obj%=num_obj%+1:alpha_Lu%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%
   top num_obj%,top(bouton_aav%)+25:left num_obj%,left(bouton_aav%)+9:caption num_obj%,"Lu"
 num_obj%=num_obj%+1:alpha_Ma%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%
   top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Ma"
 num_obj%=num_obj%+1:alpha_Me%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%
   top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Me"
 num_obj%=num_obj%+1:alpha_Je%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%
   top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Je"
 num_obj%=num_obj%+1:alpha_Ve%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%
   top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Ve"
 num_obj%=num_obj%+1:alpha_Sa%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%
   top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Sa"
 num_obj%=num_obj%+1:alpha_Di%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%
   top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Di"
 no%=number_objects
 on_click bouton_aav%,anavant:on_click bouton_mav%,moiavant:on_click bouton_aap%,anapres:on_click bouton_map%,moiapres
 jj$="01":mm$=mid$(date$,4,2):aaaa$=right$(date$,4):Retourne_Jour_Semaine(jj$,mm$,aaaa$)
 Retourne_ms(mm$)
 font_name alpha_moi%,"Arial":left alpha_moi%,left(bouton_mav%)+width(bouton_mav%)+ct%:caption alpha_moi%,ms$+" "+aaaa$
 Fab_alphas_J("01",mm$,aaaa$,nbj%)
End_Sub
' -------
moiapres:
 mm%=val(mm$)
 if mm%=12
    mm%=1:aaaa%=val(aaaa$):aaaa%=aaaa%+1:aaaa$=str$(aaaa%)
 else
    mm%=mm%+1
 end_if
 if mm%<10
    mm$="0"+str$(mm%)
 else
    mm$=str$(mm%)
 end_if
 Reinit_Calendrier()
return
' -------
moiavant:
 mm%=val(mm$)
 if mm%=1
    mm%=12:aaaa%=val(aaaa$):aaaa%=aaaa%-1:aaaa$=str$(aaaa%)
 else
    mm%=mm%-1
 end_if
 if mm%<10
    mm$="0"+str$(mm%)
 else
    mm$=str$(mm%)
 end_if
 Reinit_Calendrier()
return
' ------
anapres:
 aaaa%=val(aaaa$):aaaa%=aaaa%+1:aaaa$=str$(aaaa%)
 Reinit_Calendrier()
return
' ------
anavant:
 aaaa%=val(aaaa$):aaaa%=aaaa%-1:aaaa$=str$(aaaa%)
 Reinit_Calendrier()
return
' --------------------
Sub Reinit_Calendrier()
 Retourne_Jour_Semaine("01",mm$,aaaa$)
 Retourne_ms(mm$)
 left alpha_moi%,left(bouton_mav%)+width(bouton_mav%)+ct%:caption alpha_moi%,ms$+" "+aaaa$
 Fab_alphas_J("01",mm$,aaaa$,nbj%)
End_sub
' ------------
Sub Fab_alphas_J(jour$,moi$,annee$,nb_jour%)
  dim_local Laaaa%,bissextile%,i%,num_obj%,nbo%,tp%
  nbo%=number_objects
  if nbo%>no%
     for i%=no%+1 to nbo%
          delete i%
     next i%
  end_if
  Laaaa%=val(annee$)
  IF (FRAC(Laaaa%/4)=0 AND FRAC(Laaaa%/100)>0) OR FRAC(Laaaa%/400)=0 THEN bissextile%=1:' JL35
  if moi$="02" and bissextile%=1 then nb_jour%=nb_jour%+1
  num_obj%=13:tp%=50
  retourne_lf()
  for i%=1 to nb_jour%
     num_obj%=num_obj%+1:alpha num_obj%:parent num_obj%,form_calendar%
     width num_obj%,20:height num_obj%,20:on_click num_obj%,sortie
     top num_obj%,tp%:left num_obj%,lf%:lf%=lf%+25
       if i%<10
          caption num_obj%,"0"+str$(i%)
       else
          caption num_obj%,str$(i%)
       end_if
     if lf%>=165+25 then font_bold num_obj%:tp%=tp%+20:lf%=15
  next i%
End_Sub
' ---------------
Sub retourne_lf()
 if js$="Lundi" then lf%=15
 if js$="Mardi" then lf%=40
 if js$="Mercredi" then lf%=65
 if js$="Jeudi" then lf%=90
 if js$="Vendredi" then lf%=115
 if js$="Samedi" then lf%=140
 if js$="Dimanche" then lf%=165
End_sub
' ------------------
Sub Retourne_ms(mm$)
 if mm$="01" then ct%=13:nbj%=31:ms$="Janvier"
 if mm$="02" then ct%=13:nbj%=28:ms$="Février"
 if mm$="03" then ct%=18:nbj%=31:ms$="Mars"
 if mm$="04" then ct%=19:nbj%=30:ms$="Avril"
 if mm$="05" then ct%=20:nbj%=31:ms$="Mai"
 if mm$="06" then ct%=19:nbj%=30:ms$="Juin"
 if mm$="07" then ct%=15:nbj%=31:ms$="Juillet"
 if mm$="08" then ct%=19:nbj%=31:ms$="Août"
 if mm$="09" then ct%=1:nbj%=30:ms$="Septembre"
 if mm$="10" then ct%=15:nbj%=31:ms$="Octobre"
 if mm$="11" then ct%=2:nbj%=30:ms$="Novembre"
 if mm$="12" then ct%=2:nbj%=31:ms$="Décembre"
End_Sub
' ---------------------------------------
Sub Retourne_Jour_Semaine(jour$,moi$,an$)
' d'après l'algorytme de Mike Keith
 dim_local Laaaa%,Lmm%,jj%,az,ma,rm,jjs,rp
 jj%=val(jour$):Lmm%=val(moi$):Laaaa%=val(an$)
 if Lmm%>=3
    az=Laaaa%:ma=2
 else
    az=Laaaa%-1:ma=0
 end_if
 rp=((int(23*Lmm%))/9)+jj%+4+Laaaa%+(int(az/4))-(int(az/100))+(int(az/400))-ma
 rm=mod(rp,7):jjs=int(rm)
 if jjs=0 then js$="Dimanche"
 if jjs=1 then js$="Lundi"
 if jjs=2 then js$="Mardi"
 if jjs=3 then js$="Mercredi"
 if jjs=4 then js$="Jeudi"
 if jjs=5 then js$="Vendredi"
 if jjs=6 then js$="Samedi"
End_Sub

Un Calendrier de plus Calend10

A+


Réédition 23/02/2014 9:09 (correction d'un bug mineur)


Dernière édition par Jean Claude le Dim 23 Fév 2014 - 9:10, édité 2 fois
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Un Calendrier de plus Empty
MessageSujet: re   Un Calendrier de plus EmptySam 22 Fév 2014 - 18:42

Joli Jean Claude.
Il ne manque plus que la récupération de la date en cliquant dessus... Laughing

 Embarassed J' avais pas vu l' affichage dans le caption 0, tu devrais mettre une main en curseur sur les alphas
pour signaler que l' objet est cliquable...
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptySam 22 Fév 2014 - 18:47

Bon ben, je vois que tu n'as pas lu les commentaires !  geek  scratch 

La récupération de la date est au label sortie en ligne 24.

A+

PS: bonne idée la main sur les alphas.  Very Happy 
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Un Calendrier de plus Empty
MessageSujet: RE   Un Calendrier de plus EmptySam 22 Fév 2014 - 18:51

Tu peux même changer la couleur de l' alpha cliqué... Laughing 
Revenir en haut Aller en bas
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Un Calendrier de plus Empty
MessageSujet: re   Un Calendrier de plus EmptySam 22 Fév 2014 - 19:02

Ton code avec des petits rajouts :

Code:

' Calendrier pour sélection d'une date par Jean Claude 22/02/2014

' ce calendrier est destiné à être exécuté par un autre exécutable (EXECUTE_WAIT)
' il peut, aussi, être exploité tel quel.
' les année bissextiles sont prises en compte.
' à vous de choisir la manière de sortir au label sortie (ligne 24)
' les boutons [<<] et [>>] servent à changer d'année
' les boutons [<] et [>] servent à changer de mois
' la sélection de la date se fait par un click dans le calendrier sur le jour souhaité
' En retour 4 variables: js$=Jour de la semaine / jj$ = jour sélectionné /
' mm$ = mois sélectionné / aaaa$ =a nnée sélectionnée
' ==============================================================================
' hide 0
dim no%,nbj%,ct%,aaaa%,mm%,lf%
dim js$,ms$,jj$,mm$,aaaa$
dim form_calendar%,bouton_mav%,bouton_map%,bouton_aav%,bouton_aap%,alpha_moi%
dim alpha_Lu%,alpha_Ma%,alpha_Me%,alpha_Je%,alpha_Ve%,alpha_Sa%,alpha_Di%
label close,anavant,moiavant,anapres,moiapres,sortie
' démarrage
no%=no%+1:Calendrier(no%)
END
' =============================================== ci-dessous gestion des sorties
sortie:
if no%>0 : font_color no%,0,0,0 :end_if  :' ajout yg
if js$<>"Dimanche":font_bold_off no% :end_if :' ajout yg
no%=number_click:jj$=caption$(no%)
' résultat dans caption form 0
Retourne_Jour_Semaine(jj$,mm$,aaaa$)
caption 0,js$+" "+jj$+"/"+mm$+"/"+aaaa$
font_color no%,255,0,0 :font_bold no% :' ajout yg
' ici vous pouvez enregistrer le résultat dans un fichier
' terminate
return
' ----
close:
' vide le fichier
terminate
return
' ===================================================== ci-dessous: Le programme
Sub Calendrier(num_obj%)
form_calendar%=num_obj%
 form form_calendar%:width form_calendar%,206:height form_calendar%,208
   border_small form_calendar%:on_close form_calendar%,close
   top form_calendar%,((screen_y/2)-height(form_calendar%)/2)
   left form_calendar%,((screen_x/2)-width(form_calendar%)/2)
   caption form_calendar%,"Calendrier"
 num_obj%=num_obj%+1:bouton_aav%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,"<<"
   top bouton_aav%,5:left bouton_aav%,5:hint num_obj%," Année Précédente "
 num_obj%=num_obj%+1:bouton_mav%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,"<"
   top bouton_mav%,top(bouton_aav%):left bouton_mav%,left(bouton_aav%)+23:hint num_obj%," Mois Précédent "
 num_obj%=num_obj%+1:alpha_moi%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
   height num_obj%,20:font_bold num_obj%
   top alpha_moi%,top(bouton_aav%)+3
 num_obj%=num_obj%+1:bouton_map%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,">":hint num_obj%," Mois Suivant "
   top bouton_map%,top(bouton_aav%):left bouton_map%,width(form_calendar%)-66
 num_obj%=num_obj%+1:bouton_aap%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,">>":hint num_obj%," Année Suivante"
   top bouton_aap%,top(bouton_aav%):left bouton_aap%,left(bouton_map%)+23
 num_obj%=num_obj%+1:alpha_Lu%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%
   top num_obj%,top(bouton_aav%)+25:left num_obj%,left(bouton_aav%)+9:caption num_obj%,"Lu"
 num_obj%=num_obj%+1:alpha_Ma%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%
   top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Ma"
 num_obj%=num_obj%+1:alpha_Me%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%
   top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Me"
 num_obj%=num_obj%+1:alpha_Je%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%
   top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Je"
 num_obj%=num_obj%+1:alpha_Ve%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%
   top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Ve"
 num_obj%=num_obj%+1:alpha_Sa%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%
   top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Sa"
 num_obj%=num_obj%+1:alpha_Di%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
   width num_obj%,20:height num_obj%,20:font_bold num_obj%
   top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Di"
 on_click bouton_aav%,anavant:on_click bouton_mav%,moiavant:on_click bouton_aap%,anapres:on_click bouton_map%,moiapres
 jj$="01":mm$=mid$(date$,4,2):aaaa$=right$(date$,4):Retourne_Jour_Semaine(jj$,mm$,aaaa$)
 Retourne_ms(mm$)
 font_name alpha_moi%,"Arial":left alpha_moi%,left(bouton_mav%)+width(bouton_mav%)+ct%:caption alpha_moi%,ms$+" "+aaaa$
 Fab_alphas_J("01",mm$,aaaa$,nbj%)
End_Sub
' -------
moiapres:
 mm%=val(mm$)
 if mm%=12
    mm%=1:aaaa%=val(aaaa$):aaaa%=aaaa%+1:aaaa$=str$(aaaa%)
 else
    mm%=mm%+1
 end_if
 if mm%<10
    mm$="0"+str$(mm%)
 else
    mm$=str$(mm%)
 end_if
 Reinit_Calendrier()
return
' -------
moiavant:
 mm%=val(mm$)
 if mm%=1
    mm%=12:aaaa%=val(aaaa$):aaaa%=aaaa%-1:aaaa$=str$(aaaa%)
 else
    mm%=mm%-1
 end_if
 if mm%<10
    mm$="0"+str$(mm%)
 else
    mm$=str$(mm%)
 end_if
 Reinit_Calendrier()
return
' ------
anapres:
 aaaa%=val(aaaa$):aaaa%=aaaa%+1:aaaa$=str$(aaaa%)
 Reinit_Calendrier()
return
' ------
anavant:
 aaaa%=val(aaaa$):aaaa%=aaaa%-1:aaaa$=str$(aaaa%)
 Reinit_Calendrier()
return
' --------------------
Sub Reinit_Calendrier()
 Retourne_Jour_Semaine("01",mm$,aaaa$)
 Retourne_ms(mm$)
 left alpha_moi%,left(bouton_mav%)+width(bouton_mav%)+ct%:caption alpha_moi%,ms$+" "+aaaa$
 Fab_alphas_J("01",mm$,aaaa$,nbj%)
End_sub
' ------------
Sub Fab_alphas_J(jour$,moi$,annee$,nb_jour%)
  dim_local Laaaa%,bissextile%,i%,num_obj%,nbo%,tp%
  nbo%=number_objects
  if nbo%>13
     for i%=14 to nbo%
          delete i%
     next i%
  end_if
  Laaaa%=val(annee$)
  IF (FRAC(Laaaa%/4)=0 AND FRAC(Laaaa%/100)>0) OR FRAC(Laaaa%/400)=0 THEN bissextile%=1:' JL35
  if moi$="02" and bissextile%=1 then nb_jour%=nb_jour%+1
  num_obj%=13:tp%=50
  retourne_lf()
  for i%=1 to nb_jour%
     num_obj%=num_obj%+1:alpha num_obj%:parent num_obj%,form_calendar% :cursor_point num_obj%
     width num_obj%,20:height num_obj%,20:on_click num_obj%,sortie
     top num_obj%,tp%:left num_obj%,lf%:lf%=lf%+25
       if i%<10
          caption num_obj%,"0"+str$(i%)
       else
          caption num_obj%,str$(i%)
       end_if
     if lf%>=165+25 then font_bold num_obj%:tp%=tp%+20:lf%=15
  next i%
End_Sub
' ---------------
Sub retourne_lf()
 if js$="Lundi" then lf%=15
 if js$="Mardi" then lf%=40
 if js$="Mercredi" then lf%=65
 if js$="Jeudi" then lf%=90
 if js$="Vendredi" then lf%=115
 if js$="Samedi" then lf%=140
 if js$="Dimanche" then lf%=165
End_sub
' ------------------
Sub Retourne_ms(mm$)
 if mm$="01" then ct%=13:nbj%=31:ms$="Janvier"
 if mm$="02" then ct%=13:nbj%=28:ms$="Février"
 if mm$="03" then ct%=18:nbj%=31:ms$="Mars"
 if mm$="04" then ct%=19:nbj%=30:ms$="Avril"
 if mm$="05" then ct%=20:nbj%=31:ms$="Mai"
 if mm$="06" then ct%=19:nbj%=30:ms$="Juin"
 if mm$="07" then ct%=15:nbj%=31:ms$="Juillet"
 if mm$="08" then ct%=19:nbj%=31:ms$="Août"
 if mm$="09" then ct%=1:nbj%=30:ms$="Septembre"
 if mm$="10" then ct%=15:nbj%=31:ms$="Octobre"
 if mm$="11" then ct%=2:nbj%=30:ms$="Novembre"
 if mm$="12" then ct%=2:nbj%=31:ms$="Décembre"
End_Sub
' ---------------------------------------
Sub Retourne_Jour_Semaine(jour$,moi$,an$)
' d'après l'algorytme de Mike Keith
 dim_local Laaaa%,Lmm%,jj%,az,ma,rm,jjs,rp
 jj%=val(jour$):Lmm%=val(moi$):Laaaa%=val(an$)
 if Lmm%>=3
    az=Laaaa%:ma=2
 else
    az=Laaaa%-1:ma=0
 end_if
 rp=((int(23*Lmm%))/9)+jj%+4+Laaaa%+(int(az/4))-(int(az/100))+(int(az/400))-ma
 rm=mod(rp,7):jjs=int(rm)
 if jjs=0 then js$="Dimanche"
 if jjs=1 then js$="Lundi"
 if jjs=2 then js$="Mardi"
 if jjs=3 then js$="Mercredi"
 if jjs=4 then js$="Jeudi"
 if jjs=5 then js$="Vendredi"
 if jjs=6 then js$="Samedi"
End_Sub
Revenir en haut Aller en bas
Francis-mr




Nombre de messages : 186
Date d'inscription : 26/11/2012

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptySam 22 Fév 2014 - 19:59

Bonjour
Super ton calendrier, il me plait bien et il est fort probable que je l'utilise un jour.
Il y a juste un problème lorsque on fait varier rapidement l'année, on a le message d'erreur: " (35) Name already defined. Line : 136 "
Mais je suis un peu bourrin  geek
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptySam 22 Fév 2014 - 21:13

@ygeronimi,

Tes modifs sont pertinentes,
Concernant la couleur du jour sélectionné çà ne me servira pas, car dans l'utilisation que je vais en faire l'utilisateur n'aura pas le temps de voir ce changement de couleur. Néanmoins je garde, car çà ne gêne pas le fonctionnement.
La main de sélection est une très bonne idée.

Je ne vais pas corriger mon code du départ pour que l'on voit bien tes améliorations (vu que tu as fourni ton code revu).


@Francis-mr,
J'ai cliqué à toute vitesse sur les bouton de changement d'année, sans parvenir a bloquer le programme.
Je pense que c'est dû aux performances du PC.
Essaies d'ajouter WAIT 500 (ou 1000) au début des label(s) anavant et anapres pour vérifier ce que je dit.

A+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptySam 22 Fév 2014 - 21:38

Finalement le code avec les amélioration de Ygeronimi.

Code:
' Calendrier pour sélection d'une date par Jean Claude 22/02/2014

' ce calendrier est destiné à être exécuté par un autre exécutable (EXECUTE_WAIT)
' il peut, aussi, être exploité tel quel.
' les année bissextiles sont prises en compte.
' à vous de choisir la manière de sortir au label sortie (ligne 23)
' les boutons [<<] et [>>] servent à changer d'année
' les boutons [<] et [>] servent à changer de mois
' la sélection de la date se fait par un click dans le calendrier sur le jour souhaité
' En retour 4 variables: js$=Jour de la semaine / jj$ = jour sélectionné /
' mm$ = mois sélectionné / aaaa$ = année sélectionnée
' ==============================================================================
' hide 0: ' ligne à mettre en service suivant vos besoins
dim no%,nbj%,ct%,aaaa%,mm%,lf%,nobj%
dim js$,ms$,jj$,mm$,aaaa$
dim form_calendar%,bouton_mav%,bouton_map%,bouton_aav%,bouton_aap%,alpha_moi%
dim alpha_Lu%,alpha_Ma%,alpha_Me%,alpha_Je%,alpha_Ve%,alpha_Sa%,alpha_Di%
label close,anavant,moiavant,anapres,moiapres,sortie
' démarrage
no%=no%+1:Calendrier(no%)
END
' =============================================== ci-dessous gestion des sorties
sortie:
if no%>0 : font_color no%,0,0,0 :end_if  :' ajout yg
if js$<>"Dimanche":font_bold_off no% :end_if :' ajout yg
no%=number_click:jj$=caption$(no%)
' résultat dans caption form 0
Retourne_Jour_Semaine(jj$,mm$,aaaa$)
caption 0,js$+" "+jj$+"/"+mm$+"/"+aaaa$
font_color no%,255,0,0 :font_bold no% :' ajout yg
no%=number_objects:' remise à jour du compteur d'objet
wait 500
' ici vous pouvez enregistrer le résultat dans un fichier
' terminate :' ou pas
return
' ----
close:
' vide le fichier
terminate
return
' ===================================================== ci-dessous: Le programme
Sub Calendrier(num_obj%)
form_calendar%=num_obj%
 form form_calendar%:width form_calendar%,206:height form_calendar%,208
  border_small form_calendar%:on_close form_calendar%,close
  top form_calendar%,((screen_y/2)-height(form_calendar%)/2)
  left form_calendar%,((screen_x/2)-width(form_calendar%)/2)
  caption form_calendar%,"Calendrier"
 num_obj%=num_obj%+1:bouton_aav%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,"<<"
  top bouton_aav%,5:left bouton_aav%,5:hint num_obj%," Année Précédente "
 num_obj%=num_obj%+1:bouton_mav%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,"<"
  top bouton_mav%,top(bouton_aav%):left bouton_mav%,left(bouton_aav%)+23:hint num_obj%," Mois Précédent "
 num_obj%=num_obj%+1:alpha_moi%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  height num_obj%,20:font_bold num_obj%
  top alpha_moi%,top(bouton_aav%)+3
 num_obj%=num_obj%+1:bouton_map%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,">":hint num_obj%," Mois Suivant "
  top bouton_map%,top(bouton_aav%):left bouton_map%,width(form_calendar%)-66
 num_obj%=num_obj%+1:bouton_aap%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,">>":hint num_obj%," Année Suivante"
  top bouton_aap%,top(bouton_aav%):left bouton_aap%,left(bouton_map%)+23
 num_obj%=num_obj%+1:alpha_Lu%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(bouton_aav%)+9:caption num_obj%,"Lu"
 num_obj%=num_obj%+1:alpha_Ma%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Ma"
 num_obj%=num_obj%+1:alpha_Me%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Me"
 num_obj%=num_obj%+1:alpha_Je%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Je"
 num_obj%=num_obj%+1:alpha_Ve%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Ve"
 num_obj%=num_obj%+1:alpha_Sa%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Sa"
 num_obj%=num_obj%+1:alpha_Di%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Di"
 nobj%=number_objects
 on_click bouton_aav%,anavant:on_click bouton_mav%,moiavant:on_click bouton_aap%,anapres:on_click bouton_map%,moiapres
 jj$="01":mm$=mid$(date$,4,2):aaaa$=right$(date$,4):Retourne_Jour_Semaine(jj$,mm$,aaaa$)
 Retourne_ms(mm$)
 font_name alpha_moi%,"Arial":left alpha_moi%,left(bouton_mav%)+width(bouton_mav%)+ct%:caption alpha_moi%,ms$+" "+aaaa$
 Fab_alphas_J("01",mm$,aaaa$,nbj%)
End_Sub
' -------
moiapres:
 mm%=val(mm$)
 if mm%=12
    mm%=1:aaaa%=val(aaaa$):aaaa%=aaaa%+1:aaaa$=str$(aaaa%)
 else
    mm%=mm%+1
 end_if
 if mm%<10
    mm$="0"+str$(mm%)
 else
    mm$=str$(mm%)
 end_if
 Reinit_Calendrier()
return
' -------
moiavant:
 mm%=val(mm$)
 if mm%=1
    mm%=12:aaaa%=val(aaaa$):aaaa%=aaaa%-1:aaaa$=str$(aaaa%)
 else
    mm%=mm%-1
 end_if
 if mm%<10
    mm$="0"+str$(mm%)
 else
    mm$=str$(mm%)
 end_if
 Reinit_Calendrier()
return
' ------
anapres:
 aaaa%=val(aaaa$):aaaa%=aaaa%+1:aaaa$=str$(aaaa%)
 Reinit_Calendrier()
return
' ------
anavant:
 aaaa%=val(aaaa$):aaaa%=aaaa%-1:aaaa$=str$(aaaa%)
 Reinit_Calendrier()
return
' --------------------
Sub Reinit_Calendrier()
 Retourne_Jour_Semaine("01",mm$,aaaa$)
 Retourne_ms(mm$)
 left alpha_moi%,left(bouton_mav%)+width(bouton_mav%)+ct%:caption alpha_moi%,ms$+" "+aaaa$
 Fab_alphas_J("01",mm$,aaaa$,nbj%)
End_sub
' ------------
Sub Fab_alphas_J(jour$,moi$,annee$,nb_jour%)
  dim_local Laaaa%,bissextile%,i%,num_obj%,nbo%,tp%
  nbo%=number_objects
  if nbo%>nobj%
    for i%=nobj%+1 to nbo%
          delete i%
    next i%
  end_if
  Laaaa%=val(annee$)
  IF (FRAC(Laaaa%/4)=0 AND FRAC(Laaaa%/100)>0) OR FRAC(Laaaa%/400)=0 THEN bissextile%=1:' JL35
  if moi$="02" and bissextile%=1 then nb_jour%=nb_jour%+1
  num_obj%=13:tp%=50
  retourne_lf()
  for i%=1 to nb_jour%
    num_obj%=num_obj%+1:alpha num_obj%:parent num_obj%,form_calendar%
    cursor_point num_obj%:' ajout de Ygeronimi
    width num_obj%,20:height num_obj%,20:on_click num_obj%,sortie
    top num_obj%,tp%:left num_obj%,lf%:lf%=lf%+25
      if i%<10
          caption num_obj%,"0"+str$(i%)
      else
          caption num_obj%,str$(i%)
      end_if
    if lf%>=165+25 then font_bold num_obj%:tp%=tp%+20:lf%=15
  next i%
End_Sub
' ---------------
Sub retourne_lf()
 if js$="Lundi" then lf%=15
 if js$="Mardi" then lf%=40
 if js$="Mercredi" then lf%=65
 if js$="Jeudi" then lf%=90
 if js$="Vendredi" then lf%=115
 if js$="Samedi" then lf%=140
 if js$="Dimanche" then lf%=165
End_sub
' ------------------
Sub Retourne_ms(mm$)
 if mm$="01" then ct%=13:nbj%=31:ms$="Janvier"
 if mm$="02" then ct%=13:nbj%=28:ms$="Février"
 if mm$="03" then ct%=18:nbj%=31:ms$="Mars"
 if mm$="04" then ct%=19:nbj%=30:ms$="Avril"
 if mm$="05" then ct%=20:nbj%=31:ms$="Mai"
 if mm$="06" then ct%=19:nbj%=30:ms$="Juin"
 if mm$="07" then ct%=15:nbj%=31:ms$="Juillet"
 if mm$="08" then ct%=19:nbj%=31:ms$="Août"
 if mm$="09" then ct%=1:nbj%=30:ms$="Septembre"
 if mm$="10" then ct%=15:nbj%=31:ms$="Octobre"
 if mm$="11" then ct%=2:nbj%=30:ms$="Novembre"
 if mm$="12" then ct%=2:nbj%=31:ms$="Décembre"
End_Sub
' ---------------------------------------
Sub Retourne_Jour_Semaine(jour$,moi$,an$)
' d'après l'algorytme de Mike Keith
 dim_local Laaaa%,Lmm%,jj%,az,ma,rm,jjs,rp
 jj%=val(jour$):Lmm%=val(moi$):Laaaa%=val(an$)
 if Lmm%>=3
    az=Laaaa%:ma=2
 else
    az=Laaaa%-1:ma=0
 end_if
 rp=((int(23*Lmm%))/9)+jj%+4+Laaaa%+(int(az/4))-(int(az/100))+(int(az/400))-ma
 rm=mod(rp,7):jjs=int(rm)
 if jjs=0 then js$="Dimanche"
 if jjs=1 then js$="Lundi"
 if jjs=2 then js$="Mardi"
 if jjs=3 then js$="Mercredi"
 if jjs=4 then js$="Jeudi"
 if jjs=5 then js$="Vendredi"
 if jjs=6 then js$="Samedi"
End_Sub

A+

Réédition 23/02/2014 9:05 (ajout d'une variable pour comptage des alphas et mise à jour du compteur d'objet no%)
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptyDim 23 Fév 2014 - 9:16

J'ai réédité les 2 codes, car j'ai remplacé 13 et 14 par nobj% ligne 143 et 144 pour le cas d'utilisation dans un autre code. J'ai également fait une mise à jour du compteur d'objets no% pour la même raison.

A+
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptyDim 23 Fév 2014 - 10:24

Jean Claude, je me suis permis de modifier un peu ton calendrier.
Le problème était que quand on cliquait une deuxième fois sur un jour, le titre de la fenêtre changeait bien mais l'ancien jour restait en gras et en rouge, ce qui était un peu gênant visuellement comme ton calendrier est très propre.

Comme le source est très clair, je n'ai pas mis beaucoup de temps. Merci à toi.

Code:
' Calendrier pour sélection d'une date par Jean Claude 22/02/2014

' ce calendrier est destiné à être exécuté par un autre exécutable (EXECUTE_WAIT)
' il peut, aussi, être exploité tel quel.
' les année bissextiles sont prises en compte.
' à vous de choisir la manière de sortir au label sortie (ligne 23)
' les boutons [<<] et [>>] servent à changer d'année
' les boutons [<] et [>] servent à changer de mois
' la sélection de la date se fait par un click dans le calendrier sur le jour souhaité
' En retour 4 variables: js$=Jour de la semaine / jj$ = jour sélectionné /
' mm$ = mois sélectionné / aaaa$ = année sélectionnée
' ==============================================================================

' Déclarations
dim no%,nbj%,ct%,aaaa%,mm%,lf%,nobj%
dim js$,ms$,jj$,mm$,aaaa$
dim form_calendar%,bouton_mav%,bouton_map%,bouton_aav%,bouton_aap%,alpha_moi%
dim alpha_Lu%,alpha_Ma%,alpha_Me%,alpha_Je%,alpha_Ve%,alpha_Sa%,alpha_Di%
dim jour_selection$,nb_selection
label close,anavant,moiavant,anapres,moiapres,sortie

' démarrage
' hide 0: ' ligne à mettre en service suivant vos besoins

no%=no%+1:Calendrier(no%)
END


' =============================================== ci-dessous gestion des sorties
sortie:
if no%>0 : font_color no%,0,0,0 :end_if
if js$<>"Dimanche":font_bold_off no% :end_if
Efface_Selection()
no%=number_click:jj$=caption$(no%)
' résultat dans caption form 0
Retourne_Jour_Semaine(jj$,mm$,aaaa$)
jour_selection$ = js$+" "+jj$+"/"+mm$+"/"+aaaa$
nb_selection = no%
caption 0,jour_selection$
font_color no%,255,0,0 :font_bold no%
no%=number_objects:' remise à jour du compteur d'objet
wait 500
' ici vous pouvez enregistrer le résultat dans un fichier
' terminate :' On ferme tout ou pas selon le besoin
return
' ----
close:
' vide le fichier
terminate
return


' ===================================================== ci-dessous: Le programme
Sub Calendrier(num_obj%)
form_calendar%=num_obj%
 form form_calendar%:width form_calendar%,206:height form_calendar%,208
  border_small form_calendar%:on_close form_calendar%,close
  top form_calendar%,((screen_y/2)-height(form_calendar%)/2)
  left form_calendar%,((screen_x/2)-width(form_calendar%)/2)
  caption form_calendar%,"Calendrier"
 num_obj%=num_obj%+1:bouton_aav%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,"<<"
  top bouton_aav%,5:left bouton_aav%,5:hint num_obj%," Année Précédente "
 num_obj%=num_obj%+1:bouton_mav%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,"<"
  top bouton_mav%,top(bouton_aav%):left bouton_mav%,left(bouton_aav%)+23:hint num_obj%," Mois Précédent "
 num_obj%=num_obj%+1:alpha_moi%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  height num_obj%,20:font_bold num_obj%
  top alpha_moi%,top(bouton_aav%)+3
 num_obj%=num_obj%+1:bouton_map%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,">":hint num_obj%," Mois Suivant "
  top bouton_map%,top(bouton_aav%):left bouton_map%,width(form_calendar%)-66
 num_obj%=num_obj%+1:bouton_aap%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,">>":hint num_obj%," Année Suivante"
  top bouton_aap%,top(bouton_aav%):left bouton_aap%,left(bouton_map%)+23
 num_obj%=num_obj%+1:alpha_Lu%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(bouton_aav%)+9:caption num_obj%,"Lu"
 num_obj%=num_obj%+1:alpha_Ma%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Ma"
 num_obj%=num_obj%+1:alpha_Me%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Me"
 num_obj%=num_obj%+1:alpha_Je%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Je"
 num_obj%=num_obj%+1:alpha_Ve%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Ve"
 num_obj%=num_obj%+1:alpha_Sa%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Sa"
 num_obj%=num_obj%+1:alpha_Di%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Di"
 nobj%=number_objects
 nb_selection = 0 :Efface_Selection()
 on_click bouton_aav%,anavant:on_click bouton_mav%,moiavant
 on_click bouton_aap%,anapres:on_click bouton_map%,moiapres
 jj$="01":mm$=mid$(date$,4,2):aaaa$=right$(date$,4):Retourne_Jour_Semaine(jj$,mm$,aaaa$)
 Retourne_ms(mm$)
 font_name alpha_moi%,"Arial":left alpha_moi%,left(bouton_mav%)+width(bouton_mav%)+ct%:caption alpha_moi%,ms$+" "+aaaa$
 Fab_alphas_J("01",mm$,aaaa$,nbj%)
End_Sub

' -------
Sub Efface_Selection()
 if nb_selection > 0
  font_color nb_selection,0,0,0
  if left$(jour_selection$,3)<>"Dim" then font_bold_off nb_selection
  nb_selection = 0
 end_if
 jour_selection$=""
 Caption 0,jour_selection$
End_Sub

' -------
moiapres:
 Efface_Selection()
 mm%=val(mm$)
 if mm%=12
    mm%=1:aaaa%=val(aaaa$):aaaa%=aaaa%+1:aaaa$=str$(aaaa%)
 else
    mm%=mm%+1
 end_if
 if mm%<10
    mm$="0"+str$(mm%)
 else
    mm$=str$(mm%)
 end_if
 Reinit_Calendrier()
return


' -------
moiavant:
 Efface_Selection()
 mm%=val(mm$)
 if mm%=1
    mm%=12:aaaa%=val(aaaa$):aaaa%=aaaa%-1:aaaa$=str$(aaaa%)
 else
    mm%=mm%-1
 end_if
 if mm%<10
    mm$="0"+str$(mm%)
 else
    mm$=str$(mm%)
 end_if
 Reinit_Calendrier()
return

' ------
anapres:
 Efface_Selection()
 aaaa%=val(aaaa$):aaaa%=aaaa%+1:aaaa$=str$(aaaa%)
 Reinit_Calendrier()
return

' ------
anavant:
 Efface_Selection()
 aaaa%=val(aaaa$):aaaa%=aaaa%-1:aaaa$=str$(aaaa%)
 Reinit_Calendrier()
return

' --------------------
Sub Reinit_Calendrier()
 Efface_Selection()
 Retourne_Jour_Semaine("01",mm$,aaaa$)
 Retourne_ms(mm$)
 left alpha_moi%,left(bouton_mav%)+width(bouton_mav%)+ct%:caption alpha_moi%,ms$+" "+aaaa$
 Fab_alphas_J("01",mm$,aaaa$,nbj%)
End_sub


' ------------
Sub Fab_alphas_J(jour$,moi$,annee$,nb_jour%)
  dim_local Laaaa%,bissextile%,i%,num_obj%,nbo%,tp%
  nbo%=number_objects
  if nbo%>nobj%
    for i%=nobj%+1 to nbo%
          delete i%
    next i%
  end_if
  Laaaa%=val(annee$)
  IF (FRAC(Laaaa%/4)=0 AND FRAC(Laaaa%/100)>0) OR FRAC(Laaaa%/400)=0 THEN bissextile%=1:' JL35
  if moi$="02" and bissextile%=1 then nb_jour%=nb_jour%+1
  num_obj%=13:tp%=50
  retourne_lf()
  for i%=1 to nb_jour%
    num_obj%=num_obj%+1:alpha num_obj%:parent num_obj%,form_calendar%
    cursor_point num_obj%
    width num_obj%,20:height num_obj%,20:on_click num_obj%,sortie
    top num_obj%,tp%:left num_obj%,lf%:lf%=lf%+25
      if i%<10
          caption num_obj%,"0"+str$(i%)
      else
          caption num_obj%,str$(i%)
      end_if
    if lf%>=165+25 then font_bold num_obj%:tp%=tp%+20:lf%=15
  next i%
End_Sub


' ---------------
Sub retourne_lf()
 if js$="Lundi" then lf%=15
 if js$="Mardi" then lf%=40
 if js$="Mercredi" then lf%=65
 if js$="Jeudi" then lf%=90
 if js$="Vendredi" then lf%=115
 if js$="Samedi" then lf%=140
 if js$="Dimanche" then lf%=165
End_sub


' ------------------
Sub Retourne_ms(mm$)
 if mm$="01" then ct%=13:nbj%=31:ms$="Janvier"
 if mm$="02" then ct%=13:nbj%=28:ms$="Février"
 if mm$="03" then ct%=18:nbj%=31:ms$="Mars"
 if mm$="04" then ct%=19:nbj%=30:ms$="Avril"
 if mm$="05" then ct%=20:nbj%=31:ms$="Mai"
 if mm$="06" then ct%=19:nbj%=30:ms$="Juin"
 if mm$="07" then ct%=15:nbj%=31:ms$="Juillet"
 if mm$="08" then ct%=19:nbj%=31:ms$="Août"
 if mm$="09" then ct%=1:nbj%=30:ms$="Septembre"
 if mm$="10" then ct%=15:nbj%=31:ms$="Octobre"
 if mm$="11" then ct%=2:nbj%=30:ms$="Novembre"
 if mm$="12" then ct%=2:nbj%=31:ms$="Décembre"
End_Sub


' ---------------------------------------
Sub Retourne_Jour_Semaine(jour$,moi$,an$)
' d'après l'algorytme de Mike Keith
 dim_local Laaaa%,Lmm%,jj%,az,ma,rm,jjs,rp
 jj%=val(jour$):Lmm%=val(moi$):Laaaa%=val(an$)
 if Lmm%>=3
    az=Laaaa%:ma=2
 else
    az=Laaaa%-1:ma=0
 end_if
 rp=((int(23*Lmm%))/9)+jj%+4+Laaaa%+(int(az/4))-(int(az/100))+(int(az/400))-ma
 rm=mod(rp,7):jjs=int(rm)
 if jjs=0 then js$="Dimanche"
 if jjs=1 then js$="Lundi"
 if jjs=2 then js$="Mardi"
 if jjs=3 then js$="Mercredi"
 if jjs=4 then js$="Jeudi"
 if jjs=5 then js$="Vendredi"
 if jjs=6 then js$="Samedi"
End_Sub
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptyDim 23 Fév 2014 - 10:35

Bien vu Jicehel,

J'adopte.

A+
Revenir en haut Aller en bas
Francis-mr




Nombre de messages : 186
Date d'inscription : 26/11/2012

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptyDim 23 Fév 2014 - 19:50

Bonsoir
@ Jean Claude
Les ajouts de tempo ne change rien au problème, mais ce n'est pas bien grave, à moi d'être moins bourrin  Rolling Eyes
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptyDim 23 Fév 2014 - 20:13

La bonne solution c'est de désactiver le traitement des clics en début de procédure événementielle et de les remettre actif en fin de procédure
Le top c'est de le faire dans 2 petites procédures
Désactive_bouttons() ou tu mets les off_click
Réactive_bouttons() ou tu mets les on_click


Ce qui donne un truc du genre:

sub Désactive_bouttons()
off_click bouton_aav%:off_click bouton_mav% : off_click bouton_aap% : off_click bouton_map%
end_sub

sub Réactive_bouttons()
on_click bouton_aav%,anavant:on_click bouton_mav%,moiavant
on_click bouton_aap%,anapres:on_click bouton_map%,moiapres
end_sub

Voilà, après tu retire les 2 lignes dans Calendrier() pour appeler Réactive_bouttons() à la place
puis tu ajoute un appel sous chacune des 4 étiquettes de traitement d'événements: Désactive_bouttons()
et une ligne Réactive_bouttons() avant le return de ces 4 traitements...

Là, tu n'auras plus ce problème
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptyDim 23 Fév 2014 - 20:33

J'espère que ta solution Jicehel fera l'affaire pour Francis-mr.
Apparemment, il est le seul dans le cas ?

Voici une version avec colorisation des jours fériés en vert, grâce au calendrier perpétuel de JJN4.

Code:
' Calendrier pour sélection d'une date par Jean Claude 22/02/2014
'      avec la participation de JJN4, JL35, Jicehel et Ygeronimi

' ce calendrier est destiné à être exécuté par un autre exécutable (EXECUTE_WAIT)
' il peut, aussi, être exploité tel quel.
' les année bissextiles sont prises en compte, ainsi que les jours fériés.
' à vous de choisir la manière de sortir au label sortie (ligne 27)
' les boutons [<<] et [>>] servent à changer d'année
' les boutons [<] et [>] servent à changer de mois
' la sélection de la date se fait par un click dans le calendrier sur le jour souhaité
' En retour 4 variables: js$=Jour de la semaine / jj$ = jour sélectionné /
' mm$ = mois sélectionné / aaaa$ = année sélectionnée
' ==============================================================================
' Déclarations
dim no%,nbj%,ct%,aaaa%,mm%,lf%,nobj%
dim Lundi_paque%,Jeudi_Ascension%,Lundi_Pentecote%,m1%,m2%,m3%,m4%
dim js$,ms$,jj$,mm$,aaaa$
dim form_calendar%,bouton_mav%,bouton_map%,bouton_aav%,bouton_aap%,alpha_moi%
dim alpha_Lu%,alpha_Ma%,alpha_Me%,alpha_Je%,alpha_Ve%,alpha_Sa%,alpha_Di%
dim jour_selection$,nb_selection%
label close,anavant,moiavant,anapres,moiapres,sortie
' démarrage
' hide 0: ' ligne à mettre en service suivant vos besoins
no%=no%+1:Calendrier(no%)
END
' =============================================== ci-dessous gestion des sorties
sortie:
if no%>0 : font_color no%,0,0,0 :end_if
if js$<>"Dimanche":font_bold_off no% :end_if
Efface_Selection()
no%=number_click:jj$=caption$(no%)
' résultat dans caption form 0
Retourne_Jour_Semaine(jj$,mm$,aaaa$)
jour_selection$ = js$+" "+jj$+"/"+mm$+"/"+aaaa$
nb_selection% = no%
caption 0,jour_selection$
font_color no%,255,0,0 :font_bold no%
no%=number_objects:' remise à jour du compteur d'objet
wait 500
' ici vous pouvez enregistrer le résultat dans un fichier
' terminate :' On ferme tout ou pas selon le besoin
return
' ----
close:
' vide le fichier
terminate
return
' ===================================================== ci-dessous: Le programme
Sub Calendrier(num_obj%)
form_calendar%=num_obj%
 form form_calendar%:width form_calendar%,206:height form_calendar%,208
  border_small form_calendar%:on_close form_calendar%,close
  top form_calendar%,((screen_y/2)-height(form_calendar%)/2)
  left form_calendar%,((screen_x/2)-width(form_calendar%)/2)
  caption form_calendar%,"Calendrier"
 num_obj%=num_obj%+1:bouton_aav%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,"<<"
  top bouton_aav%,5:left bouton_aav%,5:hint num_obj%," Année Précédente "
 num_obj%=num_obj%+1:bouton_mav%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,"<"
  top bouton_mav%,top(bouton_aav%):left bouton_mav%,left(bouton_aav%)+23:hint num_obj%," Mois Précédent "
 num_obj%=num_obj%+1:alpha_moi%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  height num_obj%,20:font_bold num_obj%
  top alpha_moi%,top(bouton_aav%)+3
 num_obj%=num_obj%+1:bouton_map%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,">":hint num_obj%," Mois Suivant "
  top bouton_map%,top(bouton_aav%):left bouton_map%,width(form_calendar%)-66
 num_obj%=num_obj%+1:bouton_aap%=num_obj%:button num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%:caption num_obj%,">>":hint num_obj%," Année Suivante"
  top bouton_aap%,top(bouton_aav%):left bouton_aap%,left(bouton_map%)+23
 num_obj%=num_obj%+1:alpha_Lu%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(bouton_aav%)+9:caption num_obj%,"Lu"
 num_obj%=num_obj%+1:alpha_Ma%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Ma"
 num_obj%=num_obj%+1:alpha_Me%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Me"
 num_obj%=num_obj%+1:alpha_Je%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Je"
 num_obj%=num_obj%+1:alpha_Ve%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Ve"
 num_obj%=num_obj%+1:alpha_Sa%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Sa"
 num_obj%=num_obj%+1:alpha_Di%=num_obj%:alpha num_obj%:parent num_obj%,form_calendar%
  width num_obj%,20:height num_obj%,20:font_bold num_obj%
  top num_obj%,top(bouton_aav%)+25:left num_obj%,left(num_obj%-1)+25::caption num_obj%,"Di"
 nobj%=number_objects
 nb_selection% = 0 :Efface_Selection()
 on_click bouton_aav%,anavant:on_click bouton_mav%,moiavant
 on_click bouton_aap%,anapres:on_click bouton_map%,moiapres
 jj$="01":mm$=mid$(date$,4,2):aaaa$=right$(date$,4):Retourne_Jour_Semaine(jj$,mm$,aaaa$)
 Retourne_ms(mm$)
 font_name alpha_moi%,"Arial":left alpha_moi%,left(bouton_mav%)+width(bouton_mav%)+ct%:caption alpha_moi%,ms$+" "+aaaa$
 Fab_alphas_J("01",mm$,aaaa$,nbj%)
End_Sub
' -------
Sub Efface_Selection():' Jicehel
 if nb_selection% > 0
  font_color nb_selection%,0,0,0
  if left$(jour_selection$,3)<>"Dim" then font_bold_off nb_selection%
  nb_selection% = 0
 end_if
 jour_selection$=""
 Caption 0,jour_selection$
End_Sub
' -------
moiapres:
 Efface_Selection()
 mm%=val(mm$)
 if mm%=12
    mm%=1:aaaa%=val(aaaa$):aaaa%=aaaa%+1:aaaa$=str$(aaaa%)
 else
    mm%=mm%+1
 end_if
 if mm%<10
    mm$="0"+str$(mm%)
 else
    mm$=str$(mm%)
 end_if
 Reinit_Calendrier()
return
' -------
moiavant:
 Efface_Selection()
 mm%=val(mm$)
 if mm%=1
    mm%=12:aaaa%=val(aaaa$):aaaa%=aaaa%-1:aaaa$=str$(aaaa%)
 else
    mm%=mm%-1
 end_if
 if mm%<10
    mm$="0"+str$(mm%)
 else
    mm$=str$(mm%)
 end_if
 Reinit_Calendrier()
return
' ------
anapres:
 Efface_Selection()
 aaaa%=val(aaaa$):aaaa%=aaaa%+1:aaaa$=str$(aaaa%)
 Reinit_Calendrier()
return
' ------
anavant:
 Efface_Selection()
 aaaa%=val(aaaa$):aaaa%=aaaa%-1:aaaa$=str$(aaaa%)
 Reinit_Calendrier()
return
' --------------------
Sub Reinit_Calendrier()
 Efface_Selection()
 Retourne_Jour_Semaine("01",mm$,aaaa$)
 Retourne_ms(mm$)
 left alpha_moi%,left(bouton_mav%)+width(bouton_mav%)+ct%:caption alpha_moi%,ms$+" "+aaaa$
 Fab_alphas_J("01",mm$,aaaa$,nbj%)
End_sub
' ------------
Sub Fab_alphas_J(jour$,moi$,annee$,nb_jour%)
  dim_local Laaaa%,bissextile%,i%,num_obj%,nbo%,tp%
  nbo%=number_objects
  if nbo%>nobj%
    for i%=nobj%+1 to nbo%
          delete i%
    next i%
  end_if
  Laaaa%=val(annee$)
  paques(Laaaa%):' Retourne Lundi_paque%
  IF (FRAC(Laaaa%/4)=0 AND FRAC(Laaaa%/100)>0) OR FRAC(Laaaa%/400)=0 THEN bissextile%=1:' JL35
  if moi$="02" and bissextile%=1 then nb_jour%=nb_jour%+1
  num_obj%=13:tp%=50
  retourne_lf()
  for i%=1 to nb_jour%
    num_obj%=num_obj%+1:alpha num_obj%:parent num_obj%,form_calendar%
    cursor_point num_obj%
    width num_obj%,20:height num_obj%,20:on_click num_obj%,sortie
    top num_obj%,tp%:left num_obj%,lf%:lf%=lf%+25
      if i%<10
          caption num_obj%,"0"+str$(i%)
      else
          caption num_obj%,str$(i%)
      end_if
' Pâques
  if Lundi_paque%=1 and moi$="03" and m1%=4 and i%=31
      color num_obj%,50,255,150:font_bold num_obj%
  else
    if i%=Lundi_paque% and moi$="03" and m1%=3
      color num_obj%,50,255,150:font_bold num_obj%
      if num_obj%>1 and i%<>31 then color num_obj%-1,50,255,150:font_bold num_obj%-1
    end_if
  end_if
    if i%=Lundi_paque% and moi$="04" and m1%=4
      color num_obj%,50,255,150:font_bold num_obj%
      if i%>1 then color num_obj%-1,50,255,150:font_bold num_obj%-1
    End_if
'  Ascension
    if i%=Jeudi_Ascension% and moi$="05" and m3%=5
        color num_obj%,50,255,150:font_bold num_obj%
    end_if
    if i%=Jeudi_Ascension% and moi$="06" and m3%=6
        color num_obj%,50,255,150:font_bold num_obj%
    end_if
'  Pentecôte
    if i%=Lundi_Pentecote% and moi$="05" and m2%=5
        color num_obj%,50,255,150:font_bold num_obj%
    end_if
    if i%=Lundi_Pentecote% and moi$="06" and m2%=6
        color num_obj%,50,255,150:font_bold num_obj%
    end_if
'    autres jours feriés
      if i%=1 and moi$="01" then color num_obj%,50,255,150:font_bold num_obj%
      if i%=14 and moi$="02" then color num_obj%,255,220,220:' font_bold num_obj%
      if i%=1 and moi$="05" and Laaaa%>1889 then color num_obj%,50,255,150:font_bold num_obj%
      if i%=8 and moi$="05" and Laaaa%>1952 and Laaaa%<1959 then color num_obj%,50,255,150:font_bold num_obj%
      if i%=8 and moi$="05" and Laaaa%>1981 then color num_obj%,50,255,150:font_bold num_obj%
      if i%=14 and moi$="07" and Laaaa%>1790 then color num_obj%,50,255,150:font_bold num_obj%
      if i%=15 and moi$="08" then color num_obj%,50,255,150:font_bold num_obj%
      if i%=1 and moi$="11" then color num_obj%,50,255,150:font_bold num_obj%
      if i%=11 and moi$="11" and Laaaa%>1922 then color num_obj%,50,255,150:font_bold num_obj%
      if i%=25 and moi$="12" then color num_obj%,50,255,150:font_bold num_obj%
    if lf%>=165+25 then font_bold num_obj%:tp%=tp%+20:lf%=15
  next i%
End_Sub
' ----------
Sub paques(aaaaP%)
' Calcul du lundi de Pâques - Algorithme de Oudin - code JJN4
dim_local g,w,d,e,h,k,u,q,v,z,f,n,r,j1,j2,j3,x,y
g=aaaaP%-int(aaaaP%/19)*19
w=int(aaaaP%/100)
d=int(w/4)
e=int((8*w+13)/25)
h=19*g+w-d-e+15-int((19*g+w-d-e+15)/30)*30
k=int(h/28)
u=int(29/(h+1))
q=int((21-g)/11)
v=(k*u*q-1)*k+h
z=int(aaaaP%/4)+aaaaP%
n=z+v+2+d-w
f=n-int(n/7)*7
r=28+v-f
if h=29 and r=50 then r=57
if h=28 and g>10 and r=49 then r=56
if r>30
 j1=r-30 : m1%=4 : Lundi_paque%=j1
else
 j1=r+1 : m1%=3 : Lundi_paque%=j1
end_if
' Calcul du jeudi de l'Ascension
y=r+39
if y>92
 j3=y-92 : m3%=6 : Jeudi_Ascension%=j3
else
 j3=y-61 : m3%=5 : Jeudi_Ascension%=j3
end_if
' Calcul du lundi de Pentecôte
x=r+50
if x>92
 j2=x-92 : m2%=6 : Lundi_Pentecote%=j2
else
 j2=x-61 : m2%=5 : Lundi_Pentecote%=j2
end_if
End_sub
' ---------------
Sub retourne_lf()
 if js$="Lundi" then lf%=15
 if js$="Mardi" then lf%=40
 if js$="Mercredi" then lf%=65
 if js$="Jeudi" then lf%=90
 if js$="Vendredi" then lf%=115
 if js$="Samedi" then lf%=140
 if js$="Dimanche" then lf%=165
End_sub
' ------------------
Sub Retourne_ms(mm$)
 if mm$="01" then ct%=13:nbj%=31:ms$="Janvier"
 if mm$="02" then ct%=13:nbj%=28:ms$="Février"
 if mm$="03" then ct%=18:nbj%=31:ms$="Mars"
 if mm$="04" then ct%=19:nbj%=30:ms$="Avril"
 if mm$="05" then ct%=20:nbj%=31:ms$="Mai"
 if mm$="06" then ct%=19:nbj%=30:ms$="Juin"
 if mm$="07" then ct%=15:nbj%=31:ms$="Juillet"
 if mm$="08" then ct%=19:nbj%=31:ms$="Août"
 if mm$="09" then ct%=1:nbj%=30:ms$="Septembre"
 if mm$="10" then ct%=15:nbj%=31:ms$="Octobre"
 if mm$="11" then ct%=2:nbj%=30:ms$="Novembre"
 if mm$="12" then ct%=2:nbj%=31:ms$="Décembre"
End_Sub
' ---------------------------------------
Sub Retourne_Jour_Semaine(jour$,moi$,an$)
' d'après l'algorytme de Mike Keith
 dim_local Laaaa%,Lmm%,jj%,az,ma,rm,jjs,rp
 jj%=val(jour$):Lmm%=val(moi$):Laaaa%=val(an$)
 if Lmm%>=3
    az=Laaaa%:ma=2
 else
    az=Laaaa%-1:ma=0
 end_if
 rp=((int(23*Lmm%))/9)+jj%+4+Laaaa%+(int(az/4))-(int(az/100))+(int(az/400))-ma
 rm=mod(rp,7):jjs=int(rm)
 if jjs=0 then js$="Dimanche"
 if jjs=1 then js$="Lundi"
 if jjs=2 then js$="Mardi"
 if jjs=3 then js$="Mercredi"
 if jjs=4 then js$="Jeudi"
 if jjs=5 then js$="Vendredi"
 if jjs=6 then js$="Samedi"
End_Sub

A+
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptyDim 23 Fév 2014 - 22:36

Tu n'as plus qu'à trouver un site pour trouver les vacances scolaires en fonction des zones Very Happy
Bravo Jean-Claude
Revenir en haut Aller en bas
Francis-mr




Nombre de messages : 186
Date d'inscription : 26/11/2012

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptyLun 24 Fév 2014 - 8:35

Bonjour
Merci Jicehel, effectivement il n'y a plus de problème en mettant un off_click en début de procédure et un on_click à la fin.
Et encore bravo à Jean Claude pour ce calendrier  cheers
Revenir en haut Aller en bas
mindstorm

mindstorm


Nombre de messages : 685
Age : 55
Localisation : charente
Date d'inscription : 13/02/2013

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptyLun 24 Fév 2014 - 20:30

bravo jean claude
le code est tres pedagogique
je vais me pencher dessus par plaisir  scratch 
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptyLun 24 Fév 2014 - 20:56

En fait il faudrait faire ça à chaque fois que l'on traite un événement (désactiver tous ceux que l'on ne veut pas voir interférer et ne garder que ceux qui doivent pouvoir interrompre le traitement si nécessaire).
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptyLun 24 Fév 2014 - 20:59

Merci pour vos appréciations,

c'est grâce au partage des sources que je suis arrivé à la dernière version.

@Mindstorm
Tu devrais pouvoir te pencher sur le code, sans trop de problème, les noms de label, de Sub(s) et d'objets, sont assez explicites.

A+

On s'et croisé Jicehel, je n'ai pas bien compris cette histoire de désactiver les on_click, il faut que j'essai de comprendre pourquoi je n'ai pas eu besoin de le faire, alors que pour Francis-mr c'était nécessaire.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptyLun 24 Fév 2014 - 21:37

En fait, si tu ne désactive pas l'événement et que tu clique rapidement, tu peux redéclencher la procédure alors que son traitement n'est pas fini. Cela peut être source de nombreuses erreurs en travaillant sur des variables qui sont partagées. Par exemple, tu as un compteur d'objet qui est une variable globale qui va de 0 à 5000 et tu t'attends à avoir 5000 valeurs. Tu redéclenches ta procédure évenementielle alors que ce compteur vaut 800 par exemple. La seconde procédure va se terminer et ton compteur va valoir 5000 quand tu va revenir dans ta première procédure et tu vas en rajouter par exemple 4200 autres. C'est ce genre de choses qui se produisent. Tu as dans d'autre cas comme les boucles de timer, des procédures qui peuvent prendre plus de temps que le temps de déclenchement du timer. Dans ce cas, le hic, c'est la saturation de la pile car les événements en attente se cumulent, etc ...
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptyLun 24 Fév 2014 - 22:58

Sans parler des timers (ceux-là à manipuler avec de grandes précautions), je viens de me faire piéger avec un on_change sur un Spin, ça me fichait la pagaille quand je modifiais la valeur par calcul.
Il faut faire un off_change avant les traitements et refaire le on_change après.
C'est un exemple parmi tant d'autres des traitements événementiels, on arrive toujours à se faire avoir.

Cela dit, il est bien joli ton petit calendrier Jean Claude, je vais pouvoir programmer (mais pas en Panoramic) mes vacances (de retraité  Very Happy )
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptyMar 25 Fév 2014 - 7:29

Merci pour ces précisions,
Il faut que je vérifie çà,car j'ai une batterie de 3 options qui ne sont pas dociles.

Je vais bientôt rejoindre le club des retraités, il faut que je me prépare un planning. Very Happy 

A+
Revenir en haut Aller en bas
mindstorm

mindstorm


Nombre de messages : 685
Age : 55
Localisation : charente
Date d'inscription : 13/02/2013

Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus EmptyMar 25 Fév 2014 - 20:49

courage jean claude
la retraite c'est beaucoup de travail
prepare toi bien
 Sleep 
Revenir en haut Aller en bas
Contenu sponsorisé





Un Calendrier de plus Empty
MessageSujet: Re: Un Calendrier de plus   Un Calendrier de plus Empty

Revenir en haut Aller en bas
 
Un Calendrier de plus
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Calendrier
» Calendrier perpétuel new look
» Calendrier
» Une petite sub calendrier
» Un petit calendrier

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: