Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Utilitaire de saisie d'une date | |
| | |
Auteur | Message |
---|
bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Utilitaire de saisie d'une date Mer 30 Mai 2012 - 1:29 | |
| Ah!, j'oubliais de vous dire que ce type de saisie de date est plus rapide que de cliquer sur des combos, car vous n'entrez que des chiffres et vous validez. C'est un gain de temps surtout si vous avez plusieurs centaines d'éléments ou dates à rentrer! | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Utilitaire de saisie d'une date Mer 30 Mai 2012 - 2:16 | |
| Bignono, je suis ravi que tu aies sorti de l’hôpital. J’ai testé ton programme ; j’ai cherché la petite bête et je l’ai trouvée ! J’ai entré la date 01/01/0000 et ça a été acceptée. Or, dans notre calendrier grégorien l’année zéro n’existe pas ! A+
Dernière édition par papydall le Mer 30 Mai 2012 - 2:57, édité 1 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Utilitaire de saisie d'une date Mer 30 Mai 2012 - 2:56 | |
| D’après Wikipédia
Il n'existe pas d'an 0 dans l'ère chrétienne (Anno Domini). En effet l’usage du nombre 0 en Europe est postérieur à la création de l’Anno Domini. On passe donc directement de l’an 1 av. J.-C. à l’an 1 ap. J.-C.. Ainsi 1er janvier 1 marque le début de la première année, de la première décennie, du premier siècle, du premier millénaire de l'ère chrétienne, qui finissent respectivement le 31 décembre 1, le 31 décembre 10, le 31 décembre 100, le 31 décembre 1000. Ainsi le XXe siècle et le IIe millénaire se sont achevés le 31 décembre 2000 ; le IIIe millénaire et le XXIe siècle ont commencé le 1er janvier 2001.
A+ | |
| | | bignono
Nombre de messages : 1127 Age : 67 Localisation : Val de Marne Date d'inscription : 13/11/2011
| Sujet: Re: Utilitaire de saisie d'une date Mer 30 Mai 2012 - 7:26 | |
| Bonjour, Papydall, C'est un oubli de ma part, je le savais que l'an 0 n'a jamais existé. Dans mon premier programme sur la page 1 de ce post, il y a un test pour ce fait justement. Bon je réédite mon programme avec un test supplémentaire pour cette fameuse année 0 en ligne 36! - Code:
-
dim i,j,p,q,j$,m$,modif:label verif1,verif2,verif3,valide,voir_date:height 0,700 edit 1:left 1,200:top 1,50:width 1,20:on_change 1,verif1 edit 2:left 2,240:top 2,50:width 2,20:on_change 2,verif2 edit 3:left 3,280:top 3,50:width 3,40:on_change 3,verif3:on_key_up 3,valide alpha 4:left 4,200:top 4,25:caption 4,"FORMAT DATE JJ/MM/AAAA" alpha 5:left 5,225:top 5,55:caption 5,"/" alpha 6:left 6,265:top 6,55:caption 6,"/" alpha 7:left 7,200:top 7,75:caption 7,"Ne saisir que des chiffres SVP" alpha 8:left 8,5:font_name 8,"Fixedsys":caption 8,"JJ/MM/AAAA" list 10:height 10,640:top 10,20:font_name 10,"Fixedsys":on_click 10,voir_date set_focus 1 end
verif1: if len(text$(1))=0 then return if numeric(right$(text$(1),1))=0 or right$(text$(1),1)="." then beep_error:message "Quantième jour en chiffres SVP":text 1,"":return if val(left$(text$(1),1))>3 then beep_error:message "Quantième jour ne peut être supérieur à 31 SVP":text 1,"":return if len(text$(1))=2 and val(text$(1))=0 or val(text$(1))>31 then beep_error:message "Quantième jour 00 ou supérieur à 31 impossible":text 1,"":return if len(text$(1))=2 then gosub verif2:set_focus 2:gosub verif2 return verif2: if len(text$(2))=0 then return if numeric(right$(text$(2),1))=0 or right$(text$(2),1)="." then beep_error:message "Quantième mois en chiffres SVP":text 2,"":return if val(left$(text$(2),1))>1 then beep_error:message "Quantième mois ne peut être supérieur à 12 SVP":text 2,"":return if len(text$(2))=2 and val(text$(2))=0 or val(text$(2))>12 then beep_error:message "Quantième mois 00 ou supérieur à 12 impossible":text 2,"":return if text$(1)<>"" if (text$(2)="02" and val(text$(1))>29) then beep_error:message "Quantième mois de Février ne peut être supérieur à 29":text 1,"29" if text$(2)="04" or text$(2)="06" or text$(2)="09" or text$(2)="11" and val(text$(1))>30 then beep_error:message "Les mois d'Avril, Juin, Septembre et Novembre n'ont que 30 jours":text 1,"30" end_if if len(text$(2))=2 then set_focus 3 return verif3: if len(text$(3))=0 then return if len(text$(3))>4 then beep_error:message "Quatre chiffres maximum pour l'année SVP":text 3,left$(text$(3),4):caret_position 3,4 if numeric(right$(text$(3),1))=0 or right$(text$(3),1)="." then beep_error:message "Quantième année en chiffres SVP":text 3,"":return if len(text$(3))=4 and val(text$(3))<1 then beep_error:message "L'année 0000 n'existe pas":text 3,"":return if text$(1)<>"" if len(text$(3))=4 and text$(2)="02" and val(text$(1))>28 if val(text$(3))-int(val(text$(3))/100)*100=0 if val(text$(3))-int(val(text$(3))/400)*400>0 then beep_error:message "Il n'y a que 28 jours en Février "+text$(3):set_focus 1 end_if if val(text$(3))-int(val(text$(3))/4)*4>0 then beep_error:message "Il n'y a que 28 jours en Février "+text$(3):set_focus 1 end_if end_if return valide: if key_up_code=13 and len(text$(3))=4 j$=text$(1):if j$="" then j$=" " m$=text$(2):if m$="" then m$=" " if modif=0 item_add 10,j$+"/"+m$+"/"+text$(3):text 1,"":text 2,"":text 3,"":set_focus 1 else item_delete 10,modif:item_insert 10,modif,j$+"/"+m$+"/"+text$(3):text 1,"":text 2,"":text 3,"":modif=0:set_focus 1 end_if end_if if count(10)>1 for i=1 to count(10)-1 for j=i to count(10) if left$(item_read$(10,j),2)=" " then p=0 if left$(item_read$(10,j),2)<>" " then p=val(left$(item_read$(10,j),2)) if mid$(item_read$(10,j),4,2)=" " then p=p+0 if mid$(item_read$(10,j),4,2)<>" " then p=p+(val(mid$(item_read$(10,j),4,2))*30.4375) p=p+(val(right$(item_read$(10,j),4))*365.25) if left$(item_read$(10,i),2)=" " then q=0 if left$(item_read$(10,i),2)<>" " then q=val(left$(item_read$(10,i),2)) if mid$(item_read$(10,i),4,2)=" " then q=q+0 if mid$(item_read$(10,i),4,2)<>" " then q=q+(val(mid$(item_read$(10,i),4,2))*30.4375) q=q+(val(right$(item_read$(10,i),4))*365.25) if p<q then item_insert 10,i,item_read$(10,j):item_delete 10,j+1 next j next i end_if return voir_date: if right$(item_index$(10),4)="" then return text 1,left$(item_index$(10),2):text 2,mid$(item_index$(10),4,2):text 3,right$(item_index$(10),4):modif=item_index(10):set_focus 1 return
A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Utilitaire de saisie d'une date Mer 30 Mai 2012 - 7:36 | |
| Bravo Bignono, je crois que tu viens de passer devant nous tous. Ton programme résiste à l'utilisateur vicieux sans problème. De plus, la saisie est rapide, dans l'ordre (jj/mm/aaa). Tu as , comme Klaus, gagné le prix "Jean Claude" (qui vaut pas grand chose) Reste plus qu'a le transformer en routine pour pouvoir l'insérer dans un programme... A+ | |
| | | ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: Utilitaire de saisie d'une date Mer 30 Mai 2012 - 8:57 | |
| Bignono, je me joins à Jean Claude pour te féliciter et te remercier pour ce code génial. Je vais l'étudier de près. Je me réjouis que tu sois rentré de l'hosto et te souhaite une bonne santé.
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Utilitaire de saisie d'une date Jeu 31 Mai 2012 - 11:08 | |
| Le code de Bignono m'ayant séduit, j'en ai fait une routine pour mon usage personnel. Elle est facile à intégrer dans un programme. Je vais tout de même pas la garder pour moi tout seul - Code:
-
' Routine de saisie d'une date par Jean Claude et Bignono (mai 2012)
label saisie1,saisie2,sauve:' pour l'exemple dim j1$,m1$,a1$:' pour l'exemple
dim no%:' Numéro des objets (sera augmentée de 7) label initialise_routine_date:gosub initialise_routine_date:' mise en place de la routine
' 0+7=8 button 8:caption 8,"saisie 1":on_click 8,saisie1 button 9:top 9,30:caption 9,"saisie 2":on_click 9,saisie2 memo 10:top 10,200 button 11:top 11,60:caption 11,"Valide":on_click 11,sauve END ' =============================== PROGRAMME ==================================== saisie1: left container_date%,100:top container_date%,0:' règlage position du container gosub saisie_date:' Premier appel de la routine pour saisir une date return
saisie2: ' pour changer la position de la routine left container_date%,250:top container_date%,0:' change la position du container gosub saisie_date:' Deuxième appel de la routine pour saisir une date return
sauve: ' hide container_date%:' masque (ou pas) la routine ici item_add 10,jj$+"/"+mm$+"/"+aaaa$:' sauve la saisie dans le mémo 10 return
'==========================================================> ROUTINE SAISIE_DATE ' Règlages de sortie de la routine saisie_date sortie_saisie_date: ' hide container_date%:' masque la routine ici (ou pas) caption 0,jj$+"/"+mm$+"/"+aaaa$:' affiche (ou pas) le résultat return
' ==================================================> Routine et gui saisie_date saisie_date: show container_date%:set_focus edit_jour%:' lance la routine pour saisir une date return ' --- DIM,LABEL,GUI ---- initialise_routine_date: dim jj$,mm$,aaaa$,edit_jour%,edit_mois%,edit_annee%,alpha_date1%,alpha_date2% dim alpha_date3%,container_date% label ctrl_date_1,ctrl_date_2,ctrl_date_3,valide,sortie_saisie_date,saisie_date no%=no%+1:container_date%=no% container no%:width no%,140:height no%,50 no%=no%+1:edit_jour%=no%:edit no%:parent no%,container_date% left no%,10:top no%,25:width no%,20:height no%,17:on_change no%,ctrl_date_1 no%=no%+1:edit_mois%=no%:edit edit_mois%:parent no%,container_date% left edit_mois%,50:top edit_mois%,25:width edit_mois%,20:height edit_mois%,17:on_change edit_mois%,ctrl_date_2 no%=no%+1:edit_annee%=no%:edit edit_annee%:parent no%,container_date% left edit_annee%,93:top edit_annee%,25:width edit_annee%,33:height edit_annee%,17:on_change edit_annee%,ctrl_date_3:on_key_up edit_annee%,valide no%=no%+1:alpha_date1%=no%:alpha alpha_date1%:parent no%,container_date% left alpha_date1%,10:top alpha_date1%,10:font_size alpha_date1%,9:font_bold alpha_date1%:caption alpha_date1%," JJ MM AAAA" no%=no%+1:alpha_date2%=no%:alpha alpha_date2%:parent no%,container_date% left alpha_date2%,38:top alpha_date2%,25:font_size alpha_date2%,11:font_bold alpha_date2%:caption alpha_date2%,"/" no%=no%+1:alpha_date3%=no%:alpha alpha_date3%:parent no%,container_date% left alpha_date3%,78:top alpha_date3%,25:font_size alpha_date3%,11:font_bold alpha_date3%:caption alpha_date3%,"/" hide container_date% return ' ----------- routine saisie_date ctrl_date_1: if len(text$(edit_jour%))=0 then return if numeric(right$(text$(edit_jour%),1))=0 or right$(text$(edit_jour%),1)="." then beep_error:message "En chiffres SVP":text ,"":return if val(left$(text$(edit_jour%),1))>3 then beep_error:message "Le jour ne peut être supérieur à 31 SVP":text edit_jour%,"":return if len(text$(edit_jour%))=2 and val(text$(edit_jour%))=0 or val(text$(edit_jour%))>31 then beep_error:message "Erreur jour (00 ou supérieur à 31)":text edit_jour%,"":return if len(text$(edit_jour%))=2 then gosub ctrl_date_2:set_focus edit_mois%:gosub ctrl_date_2 return ctrl_date_2: if len(text$(edit_mois%))=0 then return if numeric(right$(text$(edit_mois%),1))=0 or right$(text$(edit_mois%),1)="." then beep_error:message "En chiffres SVP":text edit_mois%,"":return if val(left$(text$(edit_mois%),1))>1 then beep_error:message "Quantième mois ne peut être supérieur à 12 SVP":text edit_mois%,"":return if len(text$(edit_mois%))=2 and val(text$(edit_mois%))=0 or val(text$(edit_mois%))>12 then beep_error:message "Erreur mois (00 ou supérieur à 12)":text edit_mois%,"":return if text$(edit_jour%)<>"" if (text$(edit_mois%)="02" and val(text$(edit_jour%))>29) then beep_error:message "Erreur: le mois de Février ne peut être supérieur à 29":text edit_jour%,"29" if text$(edit_mois%)="04" or text$(edit_mois%)="06" or text$(edit_mois%)="09" or text$(edit_mois%)="11" and val(text$(edit_jour%))>30 then beep_error:message "Les mois d'Avril, Juin, Septembre et Novembre n'ont que 30 jours":text edit_jour%,"30" end_if if len(text$(edit_mois%))=2 then set_focus edit_annee% return ctrl_date_3: if len(text$(edit_annee%))=0 then return if len(text$(edit_annee%))>4 then beep_error:message "Quatre chiffres maximum pour l'année SVP":text edit_annee%,left$(text$(edit_annee%),4):caret_position edit_annee%,4 if numeric(right$(text$(edit_annee%),1))=0 or right$(text$(edit_annee%),1)="." then beep_error:message "En chiffres SVP":text edit_annee%,"":return if len(text$(edit_annee%))=4 and val(text$(edit_annee%))<1 then beep_error:message "L'année 0000 n'existe pas":text edit_annee%,"":return if text$(edit_jour%)<>"" if len(text$(edit_annee%))=4 and text$(edit_mois%)="02" and val(text$(edit_jour%))>28 if val(text$(edit_annee%))-int(val(text$(edit_annee%))/100)*100=0 if val(text$(edit_annee%))-int(val(text$(edit_annee%))/400)*400>0 then beep_error:message "Il n'y a que 28 jours en Février "+text$(edit_annee%):set_focus edit_jour% end_if if val(text$(edit_annee%))-int(val(text$(edit_annee%))/4)*4>0 then beep_error:message "Il n'y a que 28 jours en Février "+text$(edit_annee%):set_focus edit_jour% end_if end_if return valide: if key_up_code=13 and len(text$(edit_annee%))=4 jj$=text$(edit_jour%):if jj$="" then jj$=" " mm$=text$(edit_mois%):if mm$="" then mm$=" " aaaa$=text$(edit_annee%):if aaaa$="" then aaaa$=" " text edit_jour%,"":text edit_mois%,"":text edit_annee%,"":set_focus edit_jour% gosub sortie_saisie_date end_if return ' ==============================================================================
A+
Dernière édition par Jean Claude le Jeu 31 Mai 2012 - 12:41, édité 1 fois | |
| | | ambroise
Nombre de messages : 264 Localisation : Haute-Savoie Date d'inscription : 29/04/2012
| Sujet: Re: Utilitaire de saisie d'une date Jeu 31 Mai 2012 - 11:17 | |
| Jolie présentation. Bignono et toi devriez vous associer ... Merci. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Utilitaire de saisie d'une date Jeu 31 Mai 2012 - 12:19 | |
| Salut Jean Claude. Ta routine est super bien, mais tu n’as pas suivi Bignono pour corriger l’erreur de l’année zéro ! Alors, un dernier effort et ça frôlera la perfection ! | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Utilitaire de saisie d'une date Jeu 31 Mai 2012 - 12:42 | |
| Plus vigilant que Papydall, çà n'existe pas.... C'est corrigé, maintenant c'est la perfection. A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Utilitaire de saisie d'une date Jeu 31 Mai 2012 - 12:52 | |
| Au lancement du programme, le bouton ‘Valide’ est actif (il ne devrait pas être). Je me suis permis d’apporter la modification suivante : Ligne 14, j’ai ajouté ‘INACTIVE 11’ Ligne 39, juste avant ‘RETURN’, j’ai ajouté ‘ACTIVE 11’ Entre la ligne 89 et la ligne 90, j’ai ajouté le test : - Code:
-
if text$(edit_annee%) = "0000" then beep_error:message "L'année 0000 n'existe pas" : text edit_annee%,"": return
Comme ça, on ne valide pas une date vide ni une année 0000 ! N’est-ce pas ? PS: J’ai vu ta correction après avoir posté mon message. A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Utilitaire de saisie d'une date Jeu 31 Mai 2012 - 13:18 | |
| Pendant que tu postais, j'ai vu ce problème. Je l'ai corrigé comme suit: - Code:
-
' Routine de saisie d'une date par Jean Claude et Bignono (mai 2012)
label saisie1,saisie2,sauve:' pour l'exemple dim j1$,m1$,a1$:' pour l'exemple
dim no%:' Numéro des objets (sera augmentée de 7) label initialise_routine_date:gosub initialise_routine_date:' mise en place de la routine
' 0+7=8 button 8:caption 8,"saisie 1":on_click 8,saisie1 button 9:top 9,30:caption 9,"saisie 2":on_click 9,saisie2 memo 10:top 10,200 button 11:top 11,60:caption 11,"Valide":on_click 11,sauve:inactive 11 END ' =============================== PROGRAMME ==================================== saisie1: left container_date%,100:top container_date%,0:' règlage position du container gosub saisie_date:' Premier appel de la routine pour saisir une date active 11 return
saisie2: ' pour changer la position de la routine left container_date%,250:top container_date%,0:' change la position du container gosub saisie_date:' Deuxième appel de la routine pour saisir une date active 11 return
sauve: if jj$="" or mm$="" or aaaa$="" then message "Soit votre saisie est incomplète, soit vous n'avez pas appuyé sur Entrée à la fin":return ' hide container_date%:' masque (ou pas) la routine ici item_add 10,jj$+"/"+mm$+"/"+aaaa$:' sauve la saisie dans le mémo 10 inactive 11 return
'==========================================================> ROUTINE SAISIE_DATE ' Règlages de sortie de la routine saisie_date sortie_saisie_date: ' hide container_date%:' masque la routine ici (ou pas) caption 0,jj$+"/"+mm$+"/"+aaaa$:' affiche (ou pas) le résultat return
' ==================================================> Routine et gui saisie_date saisie_date: show container_date%:set_focus edit_jour%:' lance la routine pour saisir une date return ' --- DIM,LABEL,GUI ---- initialise_routine_date: dim jj$,mm$,aaaa$,edit_jour%,edit_mois%,edit_annee%,alpha_date1%,alpha_date2% dim alpha_date3%,container_date% label ctrl_date_1,ctrl_date_2,ctrl_date_3,valide,sortie_saisie_date,saisie_date no%=no%+1:container_date%=no% container no%:width no%,140:height no%,50 no%=no%+1:edit_jour%=no%:edit no%:parent no%,container_date% left no%,10:top no%,25:width no%,20:height no%,17:on_change no%,ctrl_date_1 no%=no%+1:edit_mois%=no%:edit edit_mois%:parent no%,container_date% left edit_mois%,50:top edit_mois%,25:width edit_mois%,20:height edit_mois%,17:on_change edit_mois%,ctrl_date_2 no%=no%+1:edit_annee%=no%:edit edit_annee%:parent no%,container_date% left edit_annee%,93:top edit_annee%,25:width edit_annee%,33:height edit_annee%,17:on_change edit_annee%,ctrl_date_3:on_key_up edit_annee%,valide no%=no%+1:alpha_date1%=no%:alpha alpha_date1%:parent no%,container_date% left alpha_date1%,10:top alpha_date1%,10:font_size alpha_date1%,9:font_bold alpha_date1%:caption alpha_date1%," JJ MM AAAA" no%=no%+1:alpha_date2%=no%:alpha alpha_date2%:parent no%,container_date% left alpha_date2%,38:top alpha_date2%,25:font_size alpha_date2%,11:font_bold alpha_date2%:caption alpha_date2%,"/" no%=no%+1:alpha_date3%=no%:alpha alpha_date3%:parent no%,container_date% left alpha_date3%,78:top alpha_date3%,25:font_size alpha_date3%,11:font_bold alpha_date3%:caption alpha_date3%,"/" hide container_date% return ' ----------- routine saisie_date ctrl_date_1: if len(text$(edit_jour%))=0 then return if numeric(right$(text$(edit_jour%),1))=0 or right$(text$(edit_jour%),1)="." then beep_error:message "En chiffres SVP":text ,"":return if val(left$(text$(edit_jour%),1))>3 then beep_error:message "Le jour ne peut être supérieur à 31 SVP":text edit_jour%,"":return if len(text$(edit_jour%))=2 and val(text$(edit_jour%))=0 or val(text$(edit_jour%))>31 then beep_error:message "Erreur jour (00 ou supérieur à 31)":text edit_jour%,"":return if len(text$(edit_jour%))=2 then gosub ctrl_date_2:set_focus edit_mois%:gosub ctrl_date_2 return ctrl_date_2: if len(text$(edit_mois%))=0 then return if numeric(right$(text$(edit_mois%),1))=0 or right$(text$(edit_mois%),1)="." then beep_error:message "En chiffres SVP":text edit_mois%,"":return if val(left$(text$(edit_mois%),1))>1 then beep_error:message "Quantième mois ne peut être supérieur à 12 SVP":text edit_mois%,"":return if len(text$(edit_mois%))=2 and val(text$(edit_mois%))=0 or val(text$(edit_mois%))>12 then beep_error:message "Erreur mois (00 ou supérieur à 12)":text edit_mois%,"":return if text$(edit_jour%)<>"" if (text$(edit_mois%)="02" and val(text$(edit_jour%))>29) then beep_error:message "Erreur: le mois de Février ne peut être supérieur à 29":text edit_jour%,"29" if text$(edit_mois%)="04" or text$(edit_mois%)="06" or text$(edit_mois%)="09" or text$(edit_mois%)="11" and val(text$(edit_jour%))>30 then beep_error:message "Les mois d'Avril, Juin, Septembre et Novembre n'ont que 30 jours":text edit_jour%,"30" end_if if len(text$(edit_mois%))=2 then set_focus edit_annee% return ctrl_date_3: if len(text$(edit_annee%))=0 then return if len(text$(edit_annee%))>4 then beep_error:message "Quatre chiffres maximum pour l'année SVP":text edit_annee%,left$(text$(edit_annee%),4):caret_position edit_annee%,4 if numeric(right$(text$(edit_annee%),1))=0 or right$(text$(edit_annee%),1)="." then beep_error:message "En chiffres SVP":text edit_annee%,"":return if len(text$(edit_annee%))=4 and val(text$(edit_annee%))<1 then beep_error:message "L'année 0000 n'existe pas":text edit_annee%,"":return if text$(edit_jour%)<>"" if len(text$(edit_annee%))=4 and text$(edit_mois%)="02" and val(text$(edit_jour%))>28 if val(text$(edit_annee%))-int(val(text$(edit_annee%))/100)*100=0 if val(text$(edit_annee%))-int(val(text$(edit_annee%))/400)*400>0 then beep_error:message "Il n'y a que 28 jours en Février "+text$(edit_annee%):set_focus edit_jour% end_if if val(text$(edit_annee%))-int(val(text$(edit_annee%))/4)*4>0 then beep_error:message "Il n'y a que 28 jours en Février "+text$(edit_annee%):set_focus edit_jour% end_if end_if return valide: if key_up_code=13 and len(text$(edit_annee%))=4 jj$=text$(edit_jour%):if jj$="" then jj$=" " mm$=text$(edit_mois%):if mm$="" then mm$=" " aaaa$=text$(edit_annee%):if aaaa$="" then aaaa$=" " text edit_jour%,"":text edit_mois%,"":text edit_annee%,"":set_focus edit_jour% gosub sortie_saisie_date end_if return
A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Utilitaire de saisie d'une date Jeu 31 Mai 2012 - 18:11 | |
| Hello Jean Claude. Le bouton ‘Valide’ devient actif dès qu’on saisit une partie de la date, mais n’accepte pas de valider tant que la saisie n’est pas complète. C’est correct. Mais alors on fait une petite gymnastique : on ferme la boite du message d’erreur, on clique dans le champ de la saisie (car on a perdu le focus), on continue la saisie (et si on ne la complète pas : on rentre dans la même boucle), et enfin on valide ! La modification que j’ai faite, moi, ne rend le bouton ‘Valide’ actif qu’une fois la date est saisie correctement. Aussi, j’ai ajouté un bouton ‘Quitter’ qui permet, justement de quitter le programme sans passer par la croix rouge. Ce n’est qu’une question de point de vue différente. - Code:
-
' Routine de saisie d'une date par Jean Claude et Bignono (mai 2012)
label saisie1,saisie2,sauve,quit:' pour l'exemple dim j1$,m1$,a1$:' pour l'exemple
dim no%:' Numéro des objets (sera augmentée de 7) label initialise_routine_date:gosub initialise_routine_date:' mise en place de la routine
' 0+7=8 button 8:caption 8,"saisie 1":on_click 8,saisie1 button 9:top 9,30:caption 9,"saisie 2":on_click 9,saisie2 memo 10:top 10,200 button 11:top 11,60:caption 11,"Valide" : inactive 11 : on_click 11,sauve button 12:top 12,90:caption 12,"Quitter":on_click 12,quit END ' =============================== PROGRAMME ==================================== saisie1: left container_date%,100:top container_date%,0:' règlage position du container gosub saisie_date:' Premier appel de la routine pour saisir une date return
saisie2: ' pour changer la position de la routine left container_date%,250:top container_date%,0:' change la position du container gosub saisie_date:' Deuxième appel de la routine pour saisir une date return
sauve: ' hide container_date%:' masque (ou pas) la routine ici item_add 10,jj$+"/"+mm$+"/"+aaaa$:' sauve la saisie dans le mémo 10
return
'==========================================================> ROUTINE SAISIE_DATE ' Règlages de sortie de la routine saisie_date sortie_saisie_date: ' hide container_date%:' masque la routine ici (ou pas) caption 0,jj$+"/"+mm$+"/"+aaaa$:' affiche (ou pas) le résultat active 11 return
' ==================================================> Routine et gui saisie_date saisie_date: show container_date%:set_focus edit_jour%:' lance la routine pour saisir une date return ' --- DIM,LABEL,GUI ---- initialise_routine_date: dim jj$,mm$,aaaa$,edit_jour%,edit_mois%,edit_annee%,alpha_date1%,alpha_date2% dim alpha_date3%,container_date% label ctrl_date_1,ctrl_date_2,ctrl_date_3,valide,sortie_saisie_date,saisie_date no%=no%+1:container_date%=no% container no%:width no%,140:height no%,50 no%=no%+1:edit_jour%=no%:edit no%:parent no%,container_date% left no%,10:top no%,25:width no%,20:height no%,17:on_change no%,ctrl_date_1 no%=no%+1:edit_mois%=no%:edit edit_mois%:parent no%,container_date% left edit_mois%,50:top edit_mois%,25:width edit_mois%,20:height edit_mois%,17:on_change edit_mois%,ctrl_date_2 no%=no%+1:edit_annee%=no%:edit edit_annee%:parent no%,container_date% left edit_annee%,93:top edit_annee%,25:width edit_annee%,33:height edit_annee%,17:on_change edit_annee%,ctrl_date_3:on_key_up edit_annee%,valide no%=no%+1:alpha_date1%=no%:alpha alpha_date1%:parent no%,container_date% left alpha_date1%,10:top alpha_date1%,10:font_size alpha_date1%,9:font_bold alpha_date1%:caption alpha_date1%," JJ MM AAAA" no%=no%+1:alpha_date2%=no%:alpha alpha_date2%:parent no%,container_date% left alpha_date2%,38:top alpha_date2%,25:font_size alpha_date2%,11:font_bold alpha_date2%:caption alpha_date2%,"/" no%=no%+1:alpha_date3%=no%:alpha alpha_date3%:parent no%,container_date% left alpha_date3%,78:top alpha_date3%,25:font_size alpha_date3%,11:font_bold alpha_date3%:caption alpha_date3%,"/" hide container_date% return ' ----------- routine saisie_date ctrl_date_1: if len(text$(edit_jour%))=0 then return if numeric(right$(text$(edit_jour%),1))=0 or right$(text$(edit_jour%),1)="." then beep_error:message "En chiffres SVP":text ,"":return if val(left$(text$(edit_jour%),1))>3 then beep_error:message "Le jour ne peut être supérieur à 31 SVP":text edit_jour%,"":return if len(text$(edit_jour%))=2 and val(text$(edit_jour%))=0 or val(text$(edit_jour%))>31 then beep_error:message "Erreur jour (00 ou supérieur à 31)":text edit_jour%,"":return if len(text$(edit_jour%))=2 then gosub ctrl_date_2:set_focus edit_mois%:gosub ctrl_date_2 return ctrl_date_2: if len(text$(edit_mois%))=0 then return if numeric(right$(text$(edit_mois%),1))=0 or right$(text$(edit_mois%),1)="." then beep_error:message "En chiffres SVP":text edit_mois%,"":return if val(left$(text$(edit_mois%),1))>1 then beep_error:message "Quantième mois ne peut être supérieur à 12 SVP":text edit_mois%,"":return if len(text$(edit_mois%))=2 and val(text$(edit_mois%))=0 or val(text$(edit_mois%))>12 then beep_error:message "Erreur mois (00 ou supérieur à 12)":text edit_mois%,"":return if text$(edit_jour%)<>"" if (text$(edit_mois%)="02" and val(text$(edit_jour%))>29) then beep_error:message "Erreur: le mois de Février ne peut être supérieur à 29":text edit_jour%,"29" if text$(edit_mois%)="04" or text$(edit_mois%)="06" or text$(edit_mois%)="09" or text$(edit_mois%)="11" and val(text$(edit_jour%))>30 then beep_error:message "Les mois d'Avril, Juin, Septembre et Novembre n'ont que 30 jours":text edit_jour%,"30" end_if if len(text$(edit_mois%))=2 then set_focus edit_annee% return ctrl_date_3: if len(text$(edit_annee%))=0 then return if len(text$(edit_annee%))>4 then beep_error:message "Quatre chiffres maximum pour l'année SVP":text edit_annee%,left$(text$(edit_annee%),4):caret_position edit_annee%,4 if numeric(right$(text$(edit_annee%),1))=0 or right$(text$(edit_annee%),1)="." then beep_error:message "En chiffres SVP":text edit_annee%,"":return if text$(edit_annee%) = "0000" then beep_error:message "L'année 0000 n'existe pas" :text edit_annee%,"":return if text$(edit_jour%)<>"" if len(text$(edit_annee%))=4 and text$(edit_mois%)="02" and val(text$(edit_jour%))>28 if val(text$(edit_annee%))-int(val(text$(edit_annee%))/100)*100=0 if val(text$(edit_annee%))-int(val(text$(edit_annee%))/400)*400>0 then beep_error:message "Il n'y a que 28 jours en Février "+text$(edit_annee%):set_focus edit_jour% end_if if val(text$(edit_annee%))-int(val(text$(edit_annee%))/4)*4>0 then beep_error:message "Il n'y a que 28 jours en Février "+text$(edit_annee%):set_focus edit_jour% end_if end_if
return valide: if key_up_code=13 and len(text$(edit_annee%))=4 jj$=text$(edit_jour%):if jj$="" then jj$=" " mm$=text$(edit_mois%):if mm$="" then mm$=" " aaaa$=text$(edit_annee%):if aaaa$="" then aaaa$=" " text edit_jour%,"":text edit_mois%,"":text edit_annee%,"":set_focus edit_jour% gosub sortie_saisie_date end_if
return quit: terminate return
' ======================================================================
NB : dans le cas où tu approuves ces modifications, je me permets (pour ce programme) de donner 50% à Bignono, 49% à toi et le 1% restant je le garde pour moi ! Ainsi, j’espère gagner le prix Jean Claude. Dernière question : pourquoi 2 boutons de saisie ‘saisie 1’ et ‘saisie 2’ ? quelque chose doit m’échapper. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Utilitaire de saisie d'une date Jeu 31 Mai 2012 - 20:35 | |
| Bravo Papydall, le déplacement de ACTIVE11 dans la partie "sortie_saisie_date" est la solution. Du coup j'ai renommé le bouton "Valide" par "Sauve", çà me semble plus exact. Par contre le bouton 'Quitter" n'a pas sa place car il termine le programme, et c'est pas le but. Je m'explique: ce code est une routine (cela t'as peut-être échappé) donc elle est faite pour être intégrée dans un autre code. On peut imaginer, à la place de "quitter", un bouton "fermer la routine date" et dans ce cas on fait un HIDE sur tout les objets actifs et le programme continue. L'idéal serait d'intégrer les bouton "sauve" et "fermer la routine date" dans le container date. Si j'ai fait 2 boutons pour la saisie, c'est uniquement pour montrer que l'on peut changer la position de la routine autant de fois que l'on veut dans le programme destination. Ce n'est pas un programme en soi, mais une routine. toutefois, je t'accorde le 1% pour le déplacement de ACTIVE 11 au bon LABEL. . Tu as donné 50% à Bignono, mais il mérite plus car la base du code c'est la sienne, moi je n'ai fait que de transformer en routine et l'intéger dans un container. . Je mets le code revu: - Code:
-
' Routine de saisie d'une date par Jean Claude et Bignono (mai 2012) ' et modifié sur une suggestion de Papydall
label saisie1,saisie2,sauve,quit:' pour l'exemple dim j1$,m1$,a1$:' pour l'exemple
dim no%:' Numéro des objets (sera augmentée de 7) label initialise_routine_date:gosub initialise_routine_date:' mise en place de la routine
' 0+7=8 button 8:caption 8,"saisie 1":on_click 8,saisie1 button 9:top 9,30:caption 9,"saisie 2":on_click 9,saisie2 memo 10:top 10,200 button 11:top 11,60:caption 11,"Sauve" : inactive 11 : on_click 11,sauve button 12:top 12,90:caption 12,"Quitter":on_click 12,quit END ' =============================== PROGRAMME ==================================== saisie1: left container_date%,100:top container_date%,0:' règlage position du container gosub saisie_date:' Premier appel de la routine pour saisir une date return
saisie2: ' pour changer la position de la routine left container_date%,250:top container_date%,0:' change la position du container gosub saisie_date:' Deuxième appel de la routine pour saisir une date return
sauve: ' hide container_date%:' masque (ou pas) la routine ici item_add 10,jj$+"/"+mm$+"/"+aaaa$:' sauve la saisie dans le mémo 10
return
'==========================================================> ROUTINE SAISIE_DATE ' Règlages de sortie de la routine saisie_date sortie_saisie_date: ' hide container_date%:' masque la routine ici (ou pas) caption 0,jj$+"/"+mm$+"/"+aaaa$:' affiche (ou pas) le résultat active 11:' ici c'est le bouton sauve return
' ==================================================> Routine et gui saisie_date saisie_date: show container_date%:set_focus edit_jour%:' lance la routine pour saisir une date return ' --- DIM,LABEL,GUI ---- initialise_routine_date: dim jj$,mm$,aaaa$,edit_jour%,edit_mois%,edit_annee%,alpha_date1%,alpha_date2% dim alpha_date3%,container_date% label ctrl_date_1,ctrl_date_2,ctrl_date_3,valide,sortie_saisie_date,saisie_date no%=no%+1:container_date%=no% container no%:width no%,140:height no%,50 no%=no%+1:edit_jour%=no%:edit no%:parent no%,container_date% left no%,10:top no%,25:width no%,20:height no%,17:on_change no%,ctrl_date_1 no%=no%+1:edit_mois%=no%:edit edit_mois%:parent no%,container_date% left edit_mois%,50:top edit_mois%,25:width edit_mois%,20:height edit_mois%,17:on_change edit_mois%,ctrl_date_2 no%=no%+1:edit_annee%=no%:edit edit_annee%:parent no%,container_date% left edit_annee%,93:top edit_annee%,25:width edit_annee%,33:height edit_annee%,17:on_change edit_annee%,ctrl_date_3:on_key_up edit_annee%,valide no%=no%+1:alpha_date1%=no%:alpha alpha_date1%:parent no%,container_date% left alpha_date1%,10:top alpha_date1%,10:font_size alpha_date1%,9:font_bold alpha_date1%:caption alpha_date1%," JJ MM AAAA" no%=no%+1:alpha_date2%=no%:alpha alpha_date2%:parent no%,container_date% left alpha_date2%,38:top alpha_date2%,25:font_size alpha_date2%,11:font_bold alpha_date2%:caption alpha_date2%,"/" no%=no%+1:alpha_date3%=no%:alpha alpha_date3%:parent no%,container_date% left alpha_date3%,78:top alpha_date3%,25:font_size alpha_date3%,11:font_bold alpha_date3%:caption alpha_date3%,"/" hide container_date% return ' ----------- routine saisie_date ctrl_date_1: if len(text$(edit_jour%))=0 then return if numeric(right$(text$(edit_jour%),1))=0 or right$(text$(edit_jour%),1)="." then beep_error:message "En chiffres SVP":text ,"":return if val(left$(text$(edit_jour%),1))>3 then beep_error:message "Le jour ne peut être supérieur à 31 SVP":text edit_jour%,"":return if len(text$(edit_jour%))=2 and val(text$(edit_jour%))=0 or val(text$(edit_jour%))>31 then beep_error:message "Erreur jour (00 ou supérieur à 31)":text edit_jour%,"":return if len(text$(edit_jour%))=2 then gosub ctrl_date_2:set_focus edit_mois%:gosub ctrl_date_2 return ctrl_date_2: if len(text$(edit_mois%))=0 then return if numeric(right$(text$(edit_mois%),1))=0 or right$(text$(edit_mois%),1)="." then beep_error:message "En chiffres SVP":text edit_mois%,"":return if val(left$(text$(edit_mois%),1))>1 then beep_error:message "Quantième mois ne peut être supérieur à 12 SVP":text edit_mois%,"":return if len(text$(edit_mois%))=2 and val(text$(edit_mois%))=0 or val(text$(edit_mois%))>12 then beep_error:message "Erreur mois (00 ou supérieur à 12)":text edit_mois%,"":return if text$(edit_jour%)<>"" if (text$(edit_mois%)="02" and val(text$(edit_jour%))>29) then beep_error:message "Erreur: le mois de Février ne peut être supérieur à 29":text edit_jour%,"29" if text$(edit_mois%)="04" or text$(edit_mois%)="06" or text$(edit_mois%)="09" or text$(edit_mois%)="11" and val(text$(edit_jour%))>30 then beep_error:message "Les mois d'Avril, Juin, Septembre et Novembre n'ont que 30 jours":text edit_jour%,"30" end_if if len(text$(edit_mois%))=2 then set_focus edit_annee% return ctrl_date_3: if len(text$(edit_annee%))=0 then return if len(text$(edit_annee%))>4 then beep_error:message "Quatre chiffres maximum pour l'année SVP":text edit_annee%,left$(text$(edit_annee%),4):caret_position edit_annee%,4 if numeric(right$(text$(edit_annee%),1))=0 or right$(text$(edit_annee%),1)="." then beep_error:message "En chiffres SVP":text edit_annee%,"":return if text$(edit_annee%) = "0000" then beep_error:message "L'année 0000 n'existe pas" :text edit_annee%,"":return if text$(edit_jour%)<>"" if len(text$(edit_annee%))=4 and text$(edit_mois%)="02" and val(text$(edit_jour%))>28 if val(text$(edit_annee%))-int(val(text$(edit_annee%))/100)*100=0 if val(text$(edit_annee%))-int(val(text$(edit_annee%))/400)*400>0 then beep_error:message "Il n'y a que 28 jours en Février "+text$(edit_annee%):set_focus edit_jour% end_if if val(text$(edit_annee%))-int(val(text$(edit_annee%))/4)*4>0 then beep_error:message "Il n'y a que 28 jours en Février "+text$(edit_annee%):set_focus edit_jour% end_if end_if
return valide: if key_up_code=13 and len(text$(edit_annee%))=4 jj$=text$(edit_jour%):if jj$="" then jj$=" " mm$=text$(edit_mois%):if mm$="" then mm$=" " aaaa$=text$(edit_annee%):if aaaa$="" then aaaa$=" " text edit_jour%,"":text edit_mois%,"":text edit_annee%,"":set_focus edit_jour% gosub sortie_saisie_date end_if
return
quit: ' hide pour tout les objets à la place de terminate terminate return
A+ 05/06/2012:Voici une version plus facile à adapter avec toutes les explications: - Code:
-
' Routine saisie_date par Jean Claude (version juin 2012)
' Objectif de cette routine: ' - Saisir une date à partir d'une routine utilisable dans un maximun de cas ' ' - Proposer 3 choix de date par défaut: ' 1) sans date - 2) avec la date du jour - 3) avec la dernière date saisie ' Pouvoir valider la date par défaut en un seul clic ' Pouvoir revenir en arrière pendant la saisie ' Pouvoir changer un seul élément (s'il y a une date par défault) ' ' - Utiliser plusieurs fois la routine dans le même programme ' et pouvoir changer sa position et la date par défaut ' ' - Gérer la sortie de la routine au label RETOUR_DATE ' - A la sortie récupérer 4 variables: ' 1) dat$ = date complète au format JJ/MM/AAAA ' 2, 3, 4) jj$ = jour / mm$ = mois / aaaa$ = année ' ' - Une seule ligne à insérer dans le Programme_destination avant le premier END ' Pas de gestion des dim et label
' - Seulement 2 paramètres facultatifs à renseigner avant de lancer par "gosub date" ' (s'ils ne le sont pas la position sera 0,0 et il n'y aura pas de dates par défaut)
' Remarque: utilise 9 objets panoramic, 18 variables ( dont 4 pour le retour) et 15 labels
' ======================================================================================== dim no%,n%,bouton,x,y:label bouton:' en principe existe déjà dans le programme destination no%=no%+1:button no%:caption no%,"Suite":hide no%:' ici no%=1 label Programme_destination,Programme_destination_suite
' la seule ligne à insérer (AVANT LE PRELIER END) pour disposer de la rouine dim container_date%:label init_saisie_date:gosub init_saisie_date:' Mise en place ' ici no%=10 donc la routine à ajouté 9 objets Panoramic
gosub Programme_destination
END ' ============================== PROGRAMME ====================================== Programme_destination: ' les 3 lignes à placer dans le programme pour démarrer la routine top_date%=100:left_date%=100:' règlage Position container_date% avant de démarrer aaaa$=right$(date$,4):mm$=mid$(date$,4,2):jj$=left$(date$,2):' départ avec date du jour (ou pas) gosub date:' démarre la routine pour une première saisie return
Programme_destination_suite: ' exemple de réutilisation de la routine dans le même programme
top_date%=300:left_date%=100:' Change la Position container_date% avant de continuer
' aaaa$="":mm$="":jj$="":' continu avec date vierge ' OU ' aaaa$=right$(date$,4):mm$=mid$(date$,4,2):jj$=left$(date$,2):' continu avec date du jour ' OU ' ne rien préciser (dans ce cas c'est la dernière date saisie qui est par défault)
gosub date:' 2ème saisie return
' ===================== ROUTINE: Saisie_ date (Partie à gérer) ================= RETOUR_DATE: ' réinitialise le bouton saisie date caption no%,"Saisie Date":on_click bouton_date%,date hint bouton_date%," démarrer la saisie de la Date ":hide bouton_date% hide container_date%:' désactive provisoirement la routine
' RETOUR_DATE: ici choisir l'affichage et récupération des 4 variables (jj$, mm$, aaaa$, dat$) caption 0,dat$:' affichage ou remplissage d'un fichier
show 1:on_click 1,Programme_destination_suite:' gestion du RETOUR au programme return ' ===================== ROUTINE: Saisie_ date (Partie Fixe) ==================== date: top bouton_date%,top_date%+10:left bouton_date%,left_date%+240 show bouton_date%:on_click bouton_date%,sd10 return sd10: inactive bouton_date% gosub saisie_date on_click bouton_date%,RETOUR_DATE return ' ---------- saisie_date: top container_date%,top_date%:left container_date%,left_date%:' Applique Position show container_date%:gosub reinit_saisie_date if aaaa$<>"" and mm$<>"" and jj$<>"" then active alpha_valide% if aaaa$<>"" then text edit_annee%,aaaa$ if aaaa$<>"" then active alpha_suite% if mm$<>"" then text combo_mois%,mm$ if jj$<>"" then text combo_jour%,jj$ if mm$="" then text combo_mois%,"Mois" if jj$="" then text combo_jour%,"Jour" if aaaa$="" then text edit_annee%,"Année" set_focus edit_annee%:on_change edit_annee%,sd1 on_click alpha_suite%,sd3 on_click alpha_retour%,saisie_date on_click alpha_valide%,sd9 return sd1: if numeric(text$(edit_annee%))=0 then text edit_annee%,"":return if text$(edit_annee%)="Année" then return if len(text$(edit_annee%))<4 then return sd2: aaaa$=text$(edit_annee%) goto sd4 sd3: bouton=alpha_suite%:gosub bouton sd4: inactive edit_annee%:inactive alpha_suite%:active alpha_retour% aaaa%=val(aaaa$):bis%=0:IF (FRAC(aaaa%/4)=0 AND FRAC(aaaa%/100)>0) OR FRAC(aaaa%/400)=0 THEN bis%=1:' JL35 if mm$<>"" then active alpha_suite2%:on_click alpha_suite2%,sd6 active combo_mois%:on_click combo_mois%,sd5 inactive bouton_date% return sd5: if text$(combo_mois%)="Mois" then return mm$=item_index$(combo_mois%) goto sd7 sd6: bouton=alpha_suite%:gosub bouton sd7: text combo_mois%,mm$:clear combo_jour%:maxj%=0 if jj$<>"" then text combo_jour%,jj$ if jj$="" then text combo_jour%,"Jour" inactive combo_mois%:inactive alpha_suite2% if mm$="04" or mm$="06" or mm$="09" or mm$="11" maxj%=30 else maxj%=31 end_if if mm$="02" if bis%=1 maxj%=29 else maxj%=28 end_if end_if for n%= 1 to maxj% if n%<10 then item_add combo_jour%,"0"+str$(n%) if n%>9 then item_add combo_jour%,str$(n%) next n% active combo_jour%:on_click combo_jour%,sd8 return sd8: jj$=item_index$(combo_jour%) active alpha_valide% return sd9: dat$=jj$+"/"+mm$+"/"+aaaa$ ' gosub reinit_saisie_date hint bouton_date%," Valider la Date et Quitter " active bouton_date%:caption bouton_date%,"Quitter" goto saisie_date return ' ----------------- reinit_saisie_date: inactive alpha_suite%:inactive alpha_suite2% inactive combo_mois%:' text combo_mois%,"Mois" inactive combo_jour%:' text combo_jour%,"Jour" if jj$<>"" if val(jj$)>28 and mm$="02" then text combo_jour%,"Jour":jj$="" end_if inactive alpha_valide%:inactive alpha_retour% active edit_annee% return ' --------------- init_saisie_date: dim top_date%,left_date%,edit_annee%,alpha_suite%,combo_mois%,alpha_suite2%,bouton_date% dim combo_jour%,alpha_valide%,alpha_retour%,aaaa$,mm$,dat$,jj$,bis%,aaaa%,maxj% label reinit_saisie_date,saisie_date,sd1,sd2,sd3,sd4,sd5,sd6,sd7,sd8,sd9,sd10,date,RETOUR_DATE no%=no%+1:container_date%=no%:container no%:width no%,320:height no%,38:hide no% no%=no%+1:edit_annee%=no%:edit no%:parent no%,container_date% width no%,40:top no%,11:left no%,5:text no%,"Année" no%=no%+1:alpha_suite%=no%:alpha no%:parent no%,container_date% font_name no%,"wingdings 3":font_size no%,14:caption no%,chr$(95) top no%,11:left no%,48:hint no%," Valider l'Année et Continuer ":inactive no% no%=no%+1:combo_mois%=no%:combo no%:parent no%,container_date%:text no%,"Mois" width no%,50:top no%,11:left no%,68:inactive no% for n%=1 to 12 if n%<10 then item_add no%,"0"+str$(n%) if n%>9 then item_add no%,str$(n%) next n% no%=no%+1:alpha_suite2%=no%:alpha no%:parent no%,container_date%:hint no%," Valider le Mois et Continuer " font_name no%,"wingdings 3":font_size no%,14:caption no%,chr$(95) top no%,11:left no%,120:inactive no% no%=no%+1:combo_jour%=no%:combo no%:parent no%,container_date%:text no%,"Jour" width no%,50:top no%,11:left no%,140:inactive no% no%=no%+1:alpha_valide%=no%:alpha no%:parent no%,container_date%:hint no%," Valider la Date " font_name no%,"Symbol":font_size no%,16:caption no%,chr$(197) top no%,7:left no%,193:inactive no% no%=no%+1:alpha_retour%=no%:alpha no%:parent no%,container_date%:hint no%," Recommencer " font_name no%,"Symbol":font_size no%,16:caption no%,chr$(196) top no%,7:left no%,212:inactive no% no%=no%+1:bouton_date%=no%:button no%:caption no%,"Saisie Date":on_click bouton_date%,date height no%,21:hint bouton_date%," démarrer la saisie de la Date ":hide bouton_date% return ' =============================================================================== ' ajouter cette routine d'animation des boutons (si pas déja dans le code destination) bouton: if active(bouton)=0 or show(bouton)=0 or clicked(bouton)=0 then return x=top(bouton):y=left(bouton):top bouton,x+2:left bouton,y+2:wait 200:top bouton,x:left bouton,y return
.
Dernière édition par Jean Claude le Mar 5 Juin 2012 - 16:13, édité 1 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Utilitaire de saisie d'une date Jeu 31 Mai 2012 - 22:40 | |
| Bravo, Jean Claude, pour les explications. Je dois bosser encore plus pour espérer recevoir le prix ! | |
| | | Contenu sponsorisé
| Sujet: Re: Utilitaire de saisie d'une date | |
| |
| | | | Utilitaire de saisie d'une date | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |