OVH Cloud OVH Cloud

Masque de saisie

3 réponses
Avatar
Wanadoo
Bonjour,

je désire réaliser un masque de type : Tout caractère sauf l'apostrophe (
' ) et point virgule ( ; )

Certains champs n'ont pas de limite de caractères car leurs contenu sera
stocké dans un champ mémo

Si quelqu'un à une idee

D'avance Merci
@+

3 réponses

Avatar
Eric Demeester
dans (in) fr.comp.developpement.agl.windev, "Wanadoo"
ecrivait (wrote) :

Bonjour,

je désire réaliser un masque de type : Tout caractère sauf l'apostrophe (
' ) et point virgule ( ; )

Certains champs n'ont pas de limite de caractères car leurs contenu sera
stocké dans un champ mémo



Moi, je ne mettrais aucun masque de saisie, mais avant d'enregistrer le
contenu du champ, je l'analyserais et remplacerais les apostrophes et
les point-virgules par des espaces.

Tu peux aussi inclure un truc de ce genre dans le code « à chaque
modification du champ » :

Ch est une chaine = Droite(MON_CHAMP,1)
Lg = Taille(MON_CHAMP)

SI Ch="," OU Ch=";" ALORS
Erreur("Vous n'avez pas le droit d'entrer le caractère "+CH)
MON_CHAMP=Gauche(MON_CHAMP,Lg-1)
FIN

Deux façons simples de résoudre ton problème.

HTH.

--
* WindevAsso : sources, ressources, trucs et astuces, FAQ :
* http://www.windevasso.org
Avatar
Pierre-Yves Tavernier
"Eric Demeester" a écrit dans le message news:

dans (in) fr.comp.developpement.agl.windev, "Wanadoo"
ecrivait (wrote) :

Bonjour,

> je désire réaliser un masque de type : Tout caractère sauf l'apostrophe


(
> ' ) et point virgule ( ; )
>
> Certains champs n'ont pas de limite de caractères car leurs contenu sera
> stocké dans un champ mémo

Moi, je ne mettrais aucun masque de saisie, mais avant d'enregistrer le
contenu du champ, je l'analyserais et remplacerais les apostrophes et
les point-virgules par des espaces.

Tu peux aussi inclure un truc de ce genre dans le code « à chaque
modification du champ » :

Ch est une chaine = Droite(MON_CHAMP,1)
Lg = Taille(MON_CHAMP)



Le seul problème : si l'utilisteur reprends la saisie au milieu du champs.
Il vaudrait mieux regarder le caractère avant la position du curseur.

Ou filtrer sur le WM_KEYDOWN ou WM_KEYPRESS.

SI Ch="," OU Ch=";" ALORS
Erreur("Vous n'avez pas le droit d'entrer le caractère "+CH)
MON_CHAMP=Gauche(MON_CHAMP,Lg-1)
FIN



PYT
Avatar
Wanadoo
Voici la solution que j'ai trouvé
j'ai créé cette procedure globale

PROCEDURE gInitChamp(ps_Fen)
//Balaye tous les champs de la fenêtre ps_Fen
//Si un champ et de type Zone de Saisie Texte et qu'il n'a pas de masque
//On remplace les apostrophes du champ par un espace et les point-virgule
par une virgule
ls_Objet est une chaîne
ls_Onglet est une chaîne

ls_Onglet = EnumèreSousElément(ps_Fen,enumPremier+enumVolet)
TANTQUE ls_Onglet <> ""
SI {ls_Onglet}..Type = typOnglet ALORS //Car dans ma charte graphique, les
champs de saisie d'une fiche se trouve dans un onglet
ls_Objet = EnumèreSousElément(ps_Fen + "." + ls_Onglet,enumPremier)
TANTQUE ls_Objet <> ""
SI {ls_Objet}..Type = typTexte ALORS
SI {ls_Objet}..MasqueSaisie = maskAucun OU {ls_Objet}..MasqueSaisie maskMajus ALORS
{ls_Objet} = Remplace({ls_Objet},"'"," ")
{ls_Objet} = Remplace({ls_Objet},";",",")
FIN
FIN
ls_Objet = EnumèreSousElément(ps_Fen + "." + ls_Onglet)
FIN
FIN
ls_Onglet = EnumèreSousElément(ps_Fen)
FIN

Ainsi, avant d'enregistrer un client par exemple, il me suffit de faire
juste avant d'enregistrer
gInitChamp(F_FicheClient..Nom)

@+