Affectation MaskEdit

cs_bonanux Messages postés 11 Date d'inscription lundi 21 avril 2003 Statut Membre Dernière intervention 19 février 2012 - 17 févr. 2012 à 22:51
cs_bonanux Messages postés 11 Date d'inscription lundi 21 avril 2003 Statut Membre Dernière intervention 19 février 2012 - 19 févr. 2012 à 14:40
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

pierrotk10d Messages postés 110 Date d'inscription mardi 13 novembre 2007 Statut Membre Dernière intervention 2 février 2024 3
18 févr. 2012 à 21:46
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
0
Rejoignez-nous