Controle textbox avec proprietes de masque de saisie, plus d'options que inputmask de access

Soyez le premier à donner votre avis sur cette source.

Vue 19 222 fois - Téléchargée 1 850 fois

Description

Mon idée est de créer un contrôle qui a toutes les propriétés, méthodes et évènements d'un TEXTBOX mais qui permette aussi une saisie par masque de saisie. En bref de reproduire le contrôle "Zone de Texte" d'ACCESS, mais avec encore plus de possibilités.

Donc il s'agit d'un contrôle TEXTBOX doté de 3 nouvelles propriétés:
- MasqueSaisie (Il s'agit de la syntaxe du masque saisie)
- SauveLitteraux (Permet de définir si le résultat retourne les littéraux du masque de saisie)
- IndZoneSaisie (Caractère permettant d'indiquer une zone de saisie, uniquement pour affichage)

Description de la syntaxe
-------------------------------------
0 : Chiffre (0 à 9, saisie obligatoire; signes plus [+] et moins [-] non autorisés).
9 : Chiffre ou espace (saisie facultative; signes plus et moins non autorisés).
# : Chiffre ou espace (saisie facultative; blancs convertis en espaces, signes plus et moins autorisés).
L : Lettre (A à Z, saisie obligatoire).
? : Lettre (A à Z, saisie facultative).
A : Lettre ou chiffre (saisie obligatoire).
a : Lettre ou chiffre (saisie facultative).
& : Tout caractère ou espace (saisie obligatoire).
C : Tout caractère ou espace (saisie facultative).
< : Implique la conversion en minuscules de tous les caractères qui suivent.
> : Implique la conversion en majuscules de tous les caractères qui suivent.
[ : Implique les caractères entre crochets comme possibilités à cette position (*option que n'a pas ACCESS)
\ : Implique l'affichage du caractère qui suit comme caractère d'affichage littéral. Sert à afficher tout caractère compris dans ce tableau comme caractère d'affichage littéral (par exemple, \A s'affiche sous la simple forme A).
' ou " : Implique l'affichage des caractères entre côtes ou guillemets comme caractères d'affichage littéral
Tous autre chose : Implique l'affichage du caractère comme caractère d'affichage littéral.

Je commence en précisant mon idée parce que c'est la première fois que je réalise un OCX, j'ai été guidé en consultant le contenu de quelques uns download sur ce site, si quelqu'un a la doc là dessus (référence site) ça me sera utile.

Le code est facilement compréhensible parce que tout est presque géré par une classe.

Source / Exemple :


'Tout est dans le ZIP

Conclusion :


Toutes les critiques sont les bienvenues, veuiller me signaler des bugs si vous en trouvez, ainsi que des propositions d'améliorations.

Asimengo

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
280
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
18 mars 2009

Pour info, VB possède un contrôle presque aux mêmes fonctionnalités "Microsoft Masked Edit Control 6.0 (SP3)" avec comme chemin d'accès "$System32\msmask32.ocx", sauf qu'il a une limitation de 64 caractères.
Messages postés
280
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
18 mars 2009

Merci ScSAMI c'est reconfortant et encourageant, en effet voilà une information capitale (la gestion d'erreur que je prends en compte). Néanmoins pour certaines erreurs j'utilise "ERR.RAISE <N° erreur>" qui déclenche une erreur VB.

A+
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
23
Pour tout dire je n'ai pas testé ce code et je ne saurais dire s'il est utile sou Access (ou autre) n'utilisant pas ce dernier.
Mais tout ce que je peux dire c'est qu'il faut continuer à nous faire partagé tes sources qui sont d'assez bonne facture pour l'instant ^v^
Note cependant que le manque de commentaires n'est pas à lier à un quelconque manque d'intéret de la part des codesourciens! En effet, note que ta source a déjà été vue plus de 600 fois! Mais elle est sans doute un peu trop spécifique et utile pour générer des comments.
Si tu veux beaucoup de commentaires, fait un truc totalement courant et purement inutile du style : "Chiffres Premiers Sans 'For'" ou encore "Afficher du texte sans police" ;-)

Sinon, le code a l'air visiblement soigné, propre et, de ce que j'en ai vu, clair. Cependant, un OCX digne de ce nom se doit de posséder une gestion d'erreur!!!

Property Set/Let|Get MaPropriete(...) ...
On Error Goto GestionDesErreurs
...
'Dans le cas d'un Let/Set
If argumentTransmit IsNot dansLesValeursAdmisesMini THEN
'P.Ex. : If vMaPropriete < 1 OR vMaPropriete > 147 Then
'Génère une erreur qui est renvoyée...
Err.Raise 508 'Valeur Incorrecte!
...
Exit Property
GestionDesErreurs:
...
Err.Raise vbObjectError + 513, Err.Source, "Mon Erreur Perso vient de l'erreur intrinsèque : " & Err.Description
End Property

Dans ton projet teste, il faut jouer avec l'une des 3 options de gestion d'erreur de ton VB (Menu Outils > Options ...) afin de voir la réaction réèle du VB face à ces erreurs!

Sinon le reste, ça va ;-)

@++ lors de prochaines sources ^_~
Messages postés
280
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
18 mars 2009

ça ne sert à rien de mettre une note (surtout pas bonne) sans commentaire. Le but pour moi en publiant c'est de pouvoir avoir des critiques bonnes ou mauvaises afin de faire mieux et de produire une mise à jour plus convenable.

Dommage y'a jamais de commentaire sur mes sources, tout seul j'y arriverai quand même.
Messages postés
280
Date d'inscription
jeudi 24 mars 2005
Statut
Membre
Dernière intervention
18 mars 2009

Voici quelques utilisations de la propriétés MasqueSaisie

.MasqueSaisie = "99[/]99[/]9999" pour les dates
.MAsqueSaisie = "[oOnN]" pour un champ booléen (Oui ou Non)
.MAsqueSaisie = "(9) 00-00-00-00" pour un numéro de téléphone
.MAsqueSaisie = ">58LLL000" pour un texte commençant par 58, puis 3 lettres et 3 chiffres.
.MAsqueSaisie = "CCCCCCCCCCCCC" pour un texte quelconque de 10 caractères.
.MAsqueSaisie = "# 999999" pour un chiffre signé inférieur en valeur absolue à 1 000 000.

Merci de mettre vos commentaires et faites moi un mail afin de recevoir la plus recente mise à jour de mes sources.

Asimengo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.