Affectation MaskEdit

Signaler
Messages postés
11
Date d'inscription
lundi 21 avril 2003
Statut
Membre
Dernière intervention
19 février 2012
-
cs_bonanux
Messages postés
11
Date d'inscription
lundi 21 avril 2003
Statut
Membre
Dernière intervention
19 février 2012
-
Bonjour à tous,

J'ai une question toute bête : comment affecte t-on une valeur incomplète non formaté à un TMaskEdit ?
Je tourne en rond avec notre cher amis Google depuis une bonne partie de l'après midi en me disant que ça doit bien être possible sans se lancer dans une usine à gaz ... Je suis quasiment sur que quelqu'un à déjà du faire ça ...

Pour bien comprendre, je souhaite ajouter le début d'un code INSEE non formaté (infos générée avec le sexe et la date de naissance) dans un MaskEdit qui dispose du masque suivant : '!0\.00\.00\.00\.000\.000\.00;1;_'

Le mieux que je sois arrivé à faire est :
var EditMask:String;
begin
EditMask:=MaskEditINSEEIndiv.EditMask;
MaskEditINSEEIndiv.EditMask:='';
MaskEditINSEEIndiv.Text := Individu.CommonIndiv.NumINSEE;
MaskEditINSEEIndiv.EditMask:=EditMask;
end;


Le problème étant que la valeur (si non complète) se met en fin de chaine dans le MaskEdit.
=> Il y a troncature si le EditMask n'est pas mis à vide au début
=> Pas mieux si on rempli avec des espaces pour combler la fin de la chaine

J'ai envisagé injecter directement les caractères un à un avec l'Offset ou bien formater ma chaine à affecter... mais ça me semble pas très propre ..

Vos avis éclairés m’intéresses !


bonanux

2 réponses

Messages postés
105
Date d'inscription
mardi 13 novembre 2007
Statut
Membre
Dernière intervention
8 avril 2019
2
Bonjour,
Le sexe et la date de naissance sont présent dans des champs d'une table si j'ai bien compris.
Voici ce que j'écrirai

Var cS: string; // Va recevoir le sexe, l'année et le mois de naissance
begin
// Je simplifie l'affectation des valeurs des champs à la variable cS
// car je pense qu'il faudra décoder le champs date de naissance
cS := FieldValues['Sexe'] + FieldValues['Année'] + FieldValues['Mois'];
MaskEdit1.EditMask := '\' + cs + '00000000\-99;1;';
MaskEdit1.SetFocus; // Donner le focus au MaskEdit
// et positionner le curseur après les 5 premiers caractères 17208
MaskEdit1.SelStart := Length(cS);
end;
En espérant que ce soit bien ce que veux faire.
Amicalement
pierrot
Messages postés
11
Date d'inscription
lundi 21 avril 2003
Statut
Membre
Dernière intervention
19 février 2012

Bonjour Pierrot,
Merci pour ta réponse.

En fait la provenance des informations sexe et dateNaissance n'a pas trop d'importance: elles proviennent :
- soit de la base champs INSEE si celui ci est rempli ou partiellement rempli (stocké sans formatage)
- soit de la base champs Sexe + date naissance (tout ou partiellement)
- soit des composants d'édition (non DB) présents sur la fiche ...
Bref, il faut partir du principe que j'ai des chaines de caractères à traiter ..

Ta solution est inintéressante, elle me permet d'envisager le problème sur un nouvel angle, mais engendre 2 complications (qui sont évidement traitables) :
- Cas des caractères "0" et "9" qui demanderont à être concaténés avec un "" devant.
- Cas ou la chaine dispose du sexe mais pas de la date de naissance ou inversement (voir l'absence d'un tronçon comme la clé par ex.)

Je vais procéder ainsi dans un premier temps, avec quelques "if" ;-)

Si des fois quelqu'un à encore des idées ...

bonanux