Bonjour,
Je cherche à séparer un numéro de téléphone lorsque ce dernier est en cours de saisi.
Une fois le numéro de tel est saisi, au lieu d'afficher 0606060606, il afficherait : 06 06 06 06 06
La saisi se fait dans un TEdit, j'ai essayé de faire l'ajout de l'espace sur l'évènement sur l'évènement KeyPress, avec plusieurs méthode différentes, mais ca marche pas correctement ou pas du tout![]()
Voila ce que j'ai testé :
Un autre défaut avec ce que j'ai fait (dans le cas ou ca fonctionnerais correctement), c'est que si l'utilisateur modifie un numero en plein milieu du telephone, ca créera des problemes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 bool test; test=true; //Désactive toutes les touches sauf les touches numériques, backspace et supprime if ((Key==8) || (Key==127) || ((Key>='0') && (Key<='9'))) test=false; if (test) Key=0; if((Key>='0') && (Key<='9')) { if((EditTel1->Text.Length()==2) || (EditTel1->Text.Length()==5) || (EditTel1->Text.Length()==8) || (EditTel1->Text.Length()==11)) { //1ere méthode : Coller a la chaine existante un espace, mais ca met le curseur du clavier au début, et le caractére taper se met au début de l'ansi (faudrai délacer le curseur a la fin du TEdit) EditTel1->Text=EditTel1->Text+" "; //2eme méthode : Insérer un espace à la fin de l'ansistring, mais ca n'ajoute rien du tout EditTel1->Text.Insert(" ",EditTel1->Text.Length()); /*ou*/ EditTel1->Text=EditTel1->Text.Insert(" ",EditTel1->Text.Length()); //3eme méthode : ajouter le caractére espace après le dernier caractére, avant que le caractére taper se s'affiche EditTel1->Text[EditTel1->Text.Length()+1]=' '; //ca plante (normal) /*ou*/ EditTel1->Text[EditTel1->Text.Length()]=' '; //le derniere caractère n'est pas remplacer par un espace } }
J'ai aussi chercher au niveau du TEdit, s'il avait un mask tout pres, mais j'ai rien trouvé à se niveau la.
Si vous avez une solution, ou une méthode pour séparer le num, je suis preneur ^^
Merci
Partager