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
» Bataille terrestre
contrôler contenu d'un edit Emptypar Marc Aujourd'hui à 16:20

» item_index
contrôler contenu d'un edit Emptypar Marc Aujourd'hui à 16:13

» SineCube
contrôler contenu d'un edit Emptypar Marc Hier à 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
contrôler contenu d'un edit Emptypar Marc Hier à 12:22

» Philharmusique
contrôler contenu d'un edit Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
contrôler contenu d'un edit Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
contrôler contenu d'un edit Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
contrôler contenu d'un edit Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
contrôler contenu d'un edit Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
contrôler contenu d'un edit Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
contrôler contenu d'un edit Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
contrôler contenu d'un edit Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
contrôler contenu d'un edit Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
contrôler contenu d'un edit Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
contrôler contenu d'un edit Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -40%
Tefal Ingenio Emotion – Batterie de cuisine 10 ...
Voir le deal
59.99 €

 

 contrôler contenu d'un edit

Aller en bas 
5 participants
AuteurMessage
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

contrôler contenu d'un edit Empty
MessageSujet: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 8:59

Bonjour,
Je voudrais contrôler le contenu entré dans un edit, en particulier pour vérifier le bon format d'une date. Voici un essai de code :
Code:

dim objet% , edit1$ , i%  , c$(10) , j%
label verifier_date

left 0,176
top 0,128
width 0,1010
height 0,720

objet% = 1
alpha objet%
left objet%,150
top objet%,100
width objet%,200
caption objet%,"Date (format : JJ/MM/AAAA) :"

objet% = 2
edit objet%
left objet%,400
top objet%,100
width objet%,200
text objet%,""

objet% = 3
alpha objet%
left objet%,150
top objet%,200
width objet%,200
caption objet%,"Lieu : "

objet% = 4
edit objet%
left objet%,400
top objet%,200
width objet%,200
text objet%,""
on_change objet%, verifier_date

end

verifier_date:
edit1$ = text$(2)
if len(edit1$) <> 10
message "Le format de la date doit être JJ/MM/AAAA"
else
j% = 0
for i%=1 to len(edit1$)
c$(j%) = mid$(edit1$,i%,1)
j% = j% + 1
next i%
if c$(2) <> "/"  or  c$(5) <> "/"  then message "Le format de la date doit être JJ/MM/AAAA"
end_if
return
Le contrôle se déclenche quand l'utilisateur remplit le second edit. Y a-t-il mieux à faire ?

Merci pour vos idées.
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 10:11

Tu peux optimiser ta routine de vérification de la manière suivante:
Code:
verifier_date:
if len(edit1$)<>10 or mid$(edit1$,3,1)<>"/" or mid$(edit1$,6,1)<>"/"
  message "Le format de la date doit être JJ/MM/AAAA"
end_if
return
à moins que tu aies besoin de ta variable c$ pour d'autres raisons.

Il serait évidemment plus intéressant de faire un ON_CHANGE sur le EDIT de la date lui-même. Mais cela devient très compliqué si l'on essaie de modifier une date saisie en cliquant au milieu pour effacer un caractère... Ta solution est la solution raisonnable. Et voici une version plus sophistiquée de ta routine de contrôle:

Code:

dim objet% , edit1$ , i%  , c$(10) , j%
dim jour%, mois%, annee%, moistab%(12)
moistab%(1)=31 : moistab%(2)=29 : moistab%(3)=31
moistab%(4)=30 : moistab%(5)=31 : moistab%(6)=30
moistab%(7)=31 : moistab%(8)=31 : moistab%(9)=30
moistab%(10)=31 : moistab%(11)=30 : moistab%(12)=31
label verifier_date

left 0,176
top 0,128
width 0,1010
height 0,720

objet% = 1
alpha objet%
left objet%,150
top objet%,100
width objet%,200
caption objet%,"Date (format : JJ/MM/AAAA) :"

objet% = 2
edit objet%
left objet%,400
top objet%,100
width objet%,200
text objet%,""

objet% = 3
alpha objet%
left objet%,150
top objet%,200
width objet%,200
caption objet%,"Lieu : "

objet% = 4
edit objet%
left objet%,400
top objet%,200
width objet%,200
text objet%,""
on_change objet%, verifier_date

end

verifier_date_ancien:
edit1$ = text$(2)
if len(edit1$) <> 10
message "Le format de la date doit être JJ/MM/AAAA"
else
j% = 0
for i%=1 to len(edit1$)
c$(j%) = mid$(edit1$,i%,1)
j% = j% + 1
next i%
if c$(2) <> "/"  or  c$(5) <> "/"  then message "Le format de la date doit être JJ/MM/AAAA"
end_if
return

verifier_date:
j% = 0
edit1$ = trim$(text$(2)) : ' enlever d'éventuels espaces
if len(edit1$)<>10 then j% = 1
if mid$(edit1$,3,1)<>"/" then j% = 1
if mid$(edit1$,6,1)<>"/" then j% = 1
if numeric(mid$(edit1$,1,2))=0 then j% = 2
jour% = val(mid$(edit1$,1,2))
if jour%<1 or jour%>31 then j% = 2
if numeric(mid$(edit1$,4,2))=0 then j% = 3
mois% = val(mid$(edit1$,4,2))
if mois%<1 or mois%>12 then j% = 3
if j%=0 then if jour%>moistab%(mois%) then j%=3
if numeric(mid$(edit1$,7,4))=0 then j% = 4
annee% = val(mid$(edit1$,7,4))
' if annee%<1900 or annee%>2012 then j% = 4 : ' tester ici la validité de l'aannée
if (annee%-int((annee%/4))*4)>0
  if mois%=2 and jour%=29 then j%=3
end_if
if j%=1 then message "Le format de la date doit être JJ/MM/AAAA"
if j%=2 then message "Le jour est invalide"
if j%=3 then message "Le mois est invalide"
if j%=4 then message "L'année est invalide"
return
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 13:28

Merci Klaus pour ton code. Tu as même pris la peine de compléter le contrôle. A noter une erreur à la ligne jour% = val(mid$(edit1$,1,2)), lorsque l'utilisateur entre un jour sur 1 seul chiffre (par exemple : 7 au lieu de 07). Ce qui se comprend puisque le programme, dans ce cas, analyse 7/ et que le second caractère n'est pas un numeric. J'ai corrigé en ajoutant un else après le if len(edit1$)<>10 .

Merci et bonne journée ... jusqu'à la prochaine !

Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 13:54

J'étais parti sur le format jj/mm/aaaa tel que tu l'avais mis dans ton source. Si tu acceptes le jour sur un seul caractère, pourquoi pas le mois aussi / Alors, 3/5/2012 serait possible aussi. Il faut alors d'abord éclater edit1$ comme suit:
Code:

dim j$, m$, a$

i% = instr(edit1$,"/")
if i%=0
  j% = 1
else
  j$ = left$(edit1$,i%-1)
  edit1$ = mid$(edit1$,i%+1,len(edit1$)
  i% = instr(edit1$,"/")
  if i%=0
    j% = 1
  else
    m$ = left$(edit1$,i%-1)
    a$ = mid$(edit1$,i%+1,len(edit1$))
' ici, effectuer les tests sur j$, m$ et a$
...
  end_if
end_if
Ainsi, tu peux tester une date de ce genre-là.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 14:06

Non, pas de jour ni de mois sur un seul chiffre. Obligation d'entrer les dates sous le format JJ/MM/AAAA. Mais il me fallait prévoir une entrée sur un seul chiffre et avertir l'utilisateur pour qu'il complète son entrée. Peut-être, faire corriger la date incomplète par le programme, du style :
Code:

if len(jour$) = 1 then jour$  = "0"+jour$
if len(mois$) = 1 then mois$  = "0"+mois$
Mais il me paraît plus simple d'indiquer clairement à l'utilisateur le format à respecter, de le rappeler à l'ordre avec un avertissement, et de le coincer sur l'edit jusqu'à ce qu'il obtempère... non mais !
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Klaus

Klaus


Nombre de messages : 12295
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 14:15

Tu as raison ! Il faut imposer une certaine rigueur.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 14:33

Bonjour Ambroise, bonjour Klaus, Smile

J'ai fait un petit programme qui oblige un edit à n'accepter que des dates au format jj/mm/aaaa. On peut rentrer des dates qui vont du 01/01/0001 au 31/12/9999!
Pour aller plus loin, il n'y a plus qu'à y rajouter les tests de 28 ou 29 jours en février les années bisextiles ou non!
Code:
label verif
edit 1:on_change 1,verif
end

verif:
if len(text$(1))=1 or len(text$(1))=4
  if numeric(right$(text$(1),1))=0 or right$(text$(1),1)="." then text 1,"":return
end_if
if len(text$(1))=2
  if numeric(right$(text$(1),1))=0 or right$(text$(1),1)="." then text 1,"":return
  if val(text$(1))>31 or val(text$(1))<1 then text 1,"":return
end_if
if mid$(text$(1),3,1)<>"/" then text 1,left$(text$(1),2):return
if len(text$(1))=5
  if numeric(right$(text$(1),1))=0 or right$(text$(1),1)="." then text 1,"":return
  if val(right$(text$(1),2))>12 or val(right$(text$(1),2))<1 then text 1,"":return
end_if
if mid$(text$(1),6,1)<>"/" then text 1,left$(text$(1),5):return
if len(text$(1))>6
  if numeric(right$(text$(1),1))=0 or right$(text$(1),1)="." then text 1,"":return
end_if
if len(text$(1))=10
  if val(right$(text$(1),4))<1 then text 1,left$(text$(1),6):return
end_if
if len(text$(1))>10 then text 1,"":return
return
Et on peut certainement l'améliorer encore!
A+ Wink
Revenir en haut Aller en bas
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 15:45

Merci Bignono pour ce long code. Je le découvre à l'instant et vais le tester.
Auparavant j'ai un petit souci avec un exit_for qui n'exit_for rien du tout ! Je veux contrôler l'âge entré dans un edit qui ne doit recevoir qu'un nombre (je ne veux pas que l'utilisateur entre le mot "ans" par exemple).
Code:

dim objet% , edit2$ , i%  , j%
label  verifier_age , avertir_age

left 0,176
top 0,128
width 0,1010
height 0,720


objet% = 1
alpha objet%
left objet%,150
top objet%,200
width objet%,200
caption objet%,"Age : "

objet% = 2
edit objet%
left objet%,400
top objet%,200
width objet%,200
text objet%,""

objet% = 3
alpha objet%
left objet%,150
top objet%,300
width objet%,200
caption objet%,"Lieu : "

objet% = 4
edit objet%
left objet%,400
top objet%,300
width objet%,200
text objet%,""
on_change objet%, verifier_age

end


verifier_age:
edit2$ = trim$(text$(2))
j% = 0
for i%=1 to len(edit2$)
if numeric(mid$(edit2$,i%,1))=0 then j% = 5
if j% = 5 then exit_for
next i%
if j% = 5 then gosub avertir_age

return

avertir_age:
text 4, ""
message "AGE : Ecrivez uniquement le nombre d'années"
set_focus 2
j% = 0
return

Tentez d'entrer K125 par exemple dans l'edit âge. On obtient 2 fenêtres d'erreur plutôt qu'une. Je ne comprends pas l'affichage de la deuxième fenêtre, alors que j'ai placé un exit_for dans la boucle et en ayant j% remis à 0.


Dernière édition par ambroise le Mar 22 Mai 2012 - 15:57, édité 2 fois
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 15:52

@Bignono

L'effaçage de l'edit si le jour et le mois ne comptent pas 2 chiffres est bien intéressant. Merci à toi. Toutefois il faudrait donner une explication à l'utilisateur si on ne veut pas qu'il pête les plombs... En effet, du fait que la date s'efface, il ne peut pas se rendre compte de ce qui foire...
A noter que l'année sur 2 chiffres ne déclenche pas de réaction de la part du programme.
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Jicehel

Jicehel


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

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 15:57

Tu peux remplacer:
if numeric(mid$(edit2$,i%,1))=0 then j% = 5
if j% = 5 then exit_for

par :
if numeric(mid$(edit2$,i%,1))=0 then j% = 5 : i% = len(edit2$)

Par contre je placerais un if len(edit2$) > 0 avant ta boucle for pour blinder ton test de saisi
Ce qui donnerait:

Code:

j% = 0
if len(edit2$) > 0
  for i%=1 to len(edit2$)
      if numeric(mid$(edit2$,i%,1))=0 then j% = 5 : i% = len(edit2$)
  next i%
else
    j% = 6
end_if
if j% = 5 then gosub avertir_age
if j% = 6 then gosub avertir_saisie_vide
Revenir en haut Aller en bas
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 16:06

Merci Jicehel.

J'ai testé ton code et c'est le même topo : 2 fenêtres d'erreur s'ouvrent à la suite alors que je ne tente d'entrer qu'une seule erreur (exemple : K125)
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
bignono

bignono


Nombre de messages : 1127
Age : 66
Localisation : Val de Marne
Date d'inscription : 13/11/2011

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 16:23

Ambroise, dans ton 1er programme, j'ai tenu compte du message "Le format de la date doit être JJ/MM/AAAA", donc c'est normal que l'année ne réagit pas sur 2 chiffres! J'ai prévu 4 chiffres sur l'année, parce que je pense que tu es en train de faire un programme ayant trait à la généalogie et que 1758, ce n'est pas la même chose que 1958! Pour avoir fait de la généalogie et en faire toujours, je sais qu'il faut être précis, surtout avec les dates! Et puis il suffit d'afficher au dessus de ton edit "Format date: JJ/MM/AAAA" et je pense que l'utilisateur du programme ne pourra pas se tromper!
A+ Wink
Revenir en haut Aller en bas
Jicehel

Jicehel


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

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 16:31

Dis moi, le problème ne vient pas du fait que tu traite l'objet 2 et non 4 dans ton code quand tu fais:
edit2$ = trim$(text$(2)) ?
pour moi à la première lecture rapide (et oui, je bosse en même temps ... le 2 devrait être 4)
Revenir en haut Aller en bas
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 16:42

bignono a écrit:
Et puis il suffit d'afficher au dessus de ton edit "Format date: JJ/MM/AAAA" et je pense que l'utilisateur du programme ne pourra pas se tromper!
A+ Wink
Les utilisateurs sont fantaisistes et tu as beau leur dire d'écrire comme ceci ou comme cela, si le programme ne contrôle pas les entrées, les bases de données risquent bien de devenir inutilisables.

bignono a écrit:

Dis moi, le problème ne vient pas du fait que tu traite l'objet 2 et non 4 dans ton code quand tu fais:
edit2$ = trim$(text$(2)) ?
pour moi à la première lecture rapide (et oui, je bosse en même temps ... le 2 devrait être 4)
Je veux bien traiter l'edit 2 (âge). L'edit 4 ne pose pas de problème (tous les noms de lieu sont acceptables).
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Jicehel

Jicehel


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

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 17:12

OK, je disais ça car dans ta procédure, tu vides le 4 et je ne voyais pas pourquoi tu travaillais sur le 2 et vidais le 4 en cas de problème
avertir_age:
text 4, ""

Revenir en haut Aller en bas
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 17:19

C'est pour obliger l'utilisateur à retourner à l'edit 2 et lui interdire de continuer tant que l'âge n'est pas entré correctement.
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Jicehel

Jicehel


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

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 17:39

OK, c'est ça de regarder en bossant, les subtilités peuvent échapper. Bon, si ce n'est pas résolu quand je rentrerais ce soir cehz moi, je regarderais ça à tête reposée Wink
Revenir en haut Aller en bas
Jean Claude

Jean Claude


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

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 19:48

@ambroise

Pas simple de suivre 2 problèmes à la fois dans le même poste...

Pour ton problème de date, je vais vais mettre un post "Utilitaire de saisie d'une date", tu pourras aller voir si çà peut te servir

Pour ton problème de saisie de l'age dans un Edit, tu pourrais utiliser NUMERIC
Code:
if numeric(age$)=0 then message "Pas de lettres SVP":return:' ou goto suivant le cas.

Bon je vais de suite poster l'utilitaire "Saisie d'une date"

A+
Revenir en haut Aller en bas
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 19:58

Jean Claude a écrit:

Pour ton problème de saisie de l'age dans un Edit, tu pourrais utiliser NUMERIC
En effet... j'ai honte ! Moi qui m'évertuais à vérifier si chaque caractère était un numéric ! Embarassed
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Jean Claude

Jean Claude


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

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyMar 22 Mai 2012 - 20:12

Il n'y a pas de honte à avoir, Panoramic propose tellement de Mots-Clé qu'il est assez difficile de les connaitre tous. C'est en demandant de l'aide, comme tu le fais, qu'on découvre.
Et même pour les anciens.... Very Happy

A+
Revenir en haut Aller en bas
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyVen 25 Mai 2012 - 18:12

Voilà le résultat après avoir lu vos propositions et avoir glané ici ou là vos bonnes idées :
Code:

dim annee$ , mois$ , jour$ , annee_util$ , mois_util$ , jour_util$ , mil$ , aujourdhui$ , date_util$ , annee% , bissex% , bissex100% , bissex400% edit1_objet%
label verif

annee$ = right$(date$,4)
mil$ = mid$(annee$,1,1)
edit1_objet% = 1

alpha 2
caption 2, "Entrez une date sous le format JJ/MM/AAAA"+chr$(13)+"Faute de quoi vous serez rappelé à l'ordre !"+chr$(13)+"Toutes les erreurs sont théoriquement signalées..."+chr$(13)+"Celui qui trouvera une faille gagnera... ce code gratuit !"
top 2,30
left 2, 100

edit 1:on_change 1,verif
top 1,100
left 1, 100

alpha 3
caption 3, "Ce code s'est largement inspiré des codes et/ou de l'aide de Klaus, Bignono, Jean-Claude, Jicehel, JL35"+chr$(13)+"Merci à eux..."
top 3,150
left 3, 100

end

verif:
if len(text$(edit1_objet%))=1
  if numeric(right$(text$(edit1_objet%),1))=0 or right$(text$(edit1_objet%),1)="."
    text edit1_objet%,""
    message "Quantième du jour en chiffres"
    return
    end_if
 if val(right$(text$(edit1_objet%),1))>3
    text edit1_objet%,""
    message "Quantième du jour sur 2 chiffres"
    return
    end_if
end_if
if len(text$(edit1_objet%))=2
  if numeric(right$(text$(edit1_objet%),1))=0 or right$(text$(edit1_objet%),1)="."
    text edit1_objet%,left$(text$(edit1_objet%),1)
    message "Quantième du jour sur 2 chiffres"
    return
    end_if
  if val(text$(edit1_objet%))>31 or val(text$(edit1_objet%))<1
    text edit1_objet%,""
    message "Le quantième du jour ne peut être supérieur à 31"
    return
    end_if
end_if

if mid$(text$(edit1_objet%),3,1)<>"/" and len(text$(edit1_objet%))= 3
  text edit1_objet%,left$(text$(edit1_objet%),2) + "/"
  message "Le signe de séparation / doit être accolé aux chiffres"
  return
end_if

if len(text$(edit1_objet%))=4
  if numeric(right$(text$(edit1_objet%),1))=0 or right$(text$(edit1_objet%),1)="."
    text edit1_objet%,left$(text$(edit1_objet%),3)
    message "Quantième du mois en chiffres"
    return
    end_if
  if val(right$(text$(edit1_objet%),1))>1
    text edit1_objet%,left$(text$(edit1_objet%),3)
    message "Quantième du mois sur 2 chiffres"
    return
    end_if
end_if

if len(text$(edit1_objet%))=5
  if numeric(right$(text$(edit1_objet%),1))=0 or right$(text$(edit1_objet%),1)="."
    text edit1_objet%,left$(text$(edit1_objet%),4)
    message "Quantième du mois en chiffres"
    return
    end_if
  if val(right$(text$(edit1_objet%),2))>12
    text edit1_objet%,left$(text$(edit1_objet%),3)
    message "Le quantième du mois ne peut être supérieur à 12"
    return
    end_if
  if val(left$(text$(edit1_objet%),2))>30 and (val(mid$(text$(edit1_objet%),4,2))=4 or val(mid$(text$(edit1_objet%),4,2))=6 or val(mid$(text$(edit1_objet%),4,2))=9 or val(mid$(text$(edit1_objet%),4,2))=11)
    if val(mid$(text$(edit1_objet%),4,2))=4 then message "Le mois d'avril ne compte que 30 jours."
    if val(mid$(text$(edit1_objet%),4,2))=6 then message "Le mois de juin ne compte que 30 jours."
    if val(mid$(text$(edit1_objet%),4,2))=9 then message "Le mois de septembre ne compte que 30 jours."
    if val(mid$(text$(edit1_objet%),4,2))=11 then message "Le mois de novembre ne compte que 30 jours."
    return
    end_if
end_if

if mid$(text$(edit1_objet%),6,1)<>"/"  and len(text$(edit1_objet%))= 6
  text edit1_objet%,left$(text$(edit1_objet%),5) + "/"
  message "Le signe de séparation / doit être accolé aux chiffres"
  return
end_if
if len(text$(edit1_objet%))=7
  if numeric(right$(text$(edit1_objet%),1))=0 or right$(text$(edit1_objet%),1)="."
    text edit1_objet%,left$(text$(edit1_objet%),6)
    message "Quantième de l'année en chiffres"
    return
    end_if
  if val(right$(text$(edit1_objet%),1))>val(mil$)
    text edit1_objet%,left$(text$(edit1_objet%),6)
    message "Le quantième de l'année ne peut être supérieur à "+annee$
    return
    end_if

end_if
if len(text$(edit1_objet%))=8
  if numeric(right$(text$(edit1_objet%),1))=0 or right$(text$(edit1_objet%),1)="."
    text edit1_objet%,left$(text$(edit1_objet%),7)
    message "Quantième de l'année en chiffres"
    return
    end_if

end_if
if len(text$(edit1_objet%))=9
  if numeric(right$(text$(edit1_objet%),1))=0 or right$(text$(edit1_objet%),1)="."
    text edit1_objet%,left$(text$(edit1_objet%),8)
    message "Quantième de l'année en chiffres"
    return
    end_if

end_if
if len(text$(edit1_objet%))=10
  annee% = val(right$(text$(edit1_objet%),4))
  bissex% = annee% - int((annee% / 4))*4
  bissex100% = annee% - int((annee% / 100))*100
  bissex400% = annee% - int((annee% / 400))*400

  if numeric(right$(text$(edit1_objet%),1))=0 or right$(text$(edit1_objet%),1)="."
    text edit1_objet%,left$(text$(edit1_objet%),9)
    message "Quantième de l'année en chiffres"
    return
    end_if
  if val(right$(text$(edit1_objet%),4))>val(annee$)
    text edit1_objet%,left$(text$(edit1_objet%),6)
    message "Le quantième de l'année ne peut être supérieur à "+annee$
    return
    end_if
  if val(mid$(text$(edit1_objet%),4,2))=2 and val(left$(text$(edit1_objet%),2))>28 and bissex% > 0
    message "Le mois de février "+ right$(text$(edit1_objet%),4) + " ne compte que 28 jours."
    return
    end_if
  if val(mid$(text$(edit1_objet%),4,2))=2 and val(left$(text$(edit1_objet%),2))>29 and bissex% = 0
    message "Le mois de février "+ right$(text$(edit1_objet%),4) + " ne compte que 29 jours."
    return
    end_if
  if val(mid$(text$(edit1_objet%),4,2))=2 and val(left$(text$(edit1_objet%),2))>28 and bissex100% = 0 and bissex400% > 0
    message "Le mois de février "+ right$(text$(edit1_objet%),4) + " ne compte que 28 jours."
    return
    end_if
  if val(mid$(text$(edit1_objet%),4,2))=2 and val(left$(text$(edit1_objet%),2))>29 and bissex100% = 0 and bissex400% = 0
    message "Le mois de février "+ right$(text$(edit1_objet%),4) + " ne compte que 29 jours."
    return
    end_if

end_if
if len(text$(edit1_objet%))>10
  text edit1_objet%,left$(text$(edit1_objet%),10)
return
end_if

if len(text$(edit1_objet%))=10
if val(left$(text$(edit1_objet%),2))>30 and (val(mid$(text$(edit1_objet%),4,2))=4 or val(mid$(text$(edit1_objet%),4,2))=6 or val(mid$(text$(edit1_objet%),4,2))=9 or val(mid$(text$(edit1_objet%),4,2))=11)
    if val(mid$(text$(edit1_objet%),4,2))=4 then message "Le mois d'avril ne compte que 30 jours."
    if val(mid$(text$(edit1_objet%),4,2))=6 then message "Le mois de juin ne compte que 30 jours."
    if val(mid$(text$(edit1_objet%),4,2))=9 then message "Le mois de septembre ne compte que 30 jours."
    if val(mid$(text$(edit1_objet%),4,2))=11 then message "Le mois de novembre ne compte que 30 jours."
end_if

mois$ = mid$(date$,4,2)
jour$ = left$(date$,2)
jour_util$ = left$(text$(edit1_objet%),2)
mois_util$ = mid$(text$(edit1_objet%),4,2)
annee_util$ = right$(text$(edit1_objet%),4)

aujourdhui$ = annee$+mois$+jour$
date_util$ = annee_util$+mois_util$+jour_util$

if val(date_util$) > val(aujourdhui$) then message "Vous avez entré une date du futur !"

return
end_if

return


C'est l'occasion pour moi de vous remercier tous...

Modification du code le 26/05/2012 : Le code précédent posait problème lors de corrections de la date.


Dernière édition par ambroise le Sam 26 Mai 2012 - 11:09, édité 4 fois
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Jean Claude

Jean Claude


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

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyVen 25 Mai 2012 - 18:26

J'ai gagné le code gratuit,

1900 n'a pas de 29 février. Bon, j'ai aucun mérite c'est JL35 qui me l'a fait découvrir.
Tu trouvera la formule dans l'autre poste.

Je vois que tu commences à t'accrocher dur à Panoramic, continu....

A+
Revenir en haut Aller en bas
ambroise




Nombre de messages : 264
Localisation : Haute-Savoie
Date d'inscription : 29/04/2012

contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit EmptyVen 25 Mai 2012 - 18:31

Oui, tu as raison... Faut que je me remette au boulot...

J'ai corrigé dans le code ci-dessus....
Revenir en haut Aller en bas
http://genealogie.cwebh.org/index.html
Contenu sponsorisé





contrôler contenu d'un edit Empty
MessageSujet: Re: contrôler contenu d'un edit   contrôler contenu d'un edit Empty

Revenir en haut Aller en bas
 
contrôler contenu d'un edit
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» comment contrôler la saisie d'un EDIT ?
» Voir le contenu d'un fichier .zip
» Comment copier le contenu d'un dossier vers un autre ?
» Operation d'Edit
» PRINT_TARGET efface le contenu d'un PICTURE

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: