Bonjour
Je mets au point un nouveau compo hérité de TMaskEdit que je nomme MaskFloat
Je lui adjoint 3 nouvelles property published
- LgEntiere qui contient la longueur en nombre de caractères de la partie gauche du mask, avant un point décimal
- LgDecimale qui contient la longueur en nombre de caractères de la partie droite du mask, après un point décimal
- SymbolMonnaie qui est le caractère littéral qui apparait à droite
Dans la procedure constructor TMaskFloat.Create, je donne une valeur à ces 3 property, puis je définis la propriété EditMask en fonction de ces valeurs
Je compile et J'installe mon composant
Code : Sélectionner tout - Visualiser dans une fenêtre à part editmask:=stringofchar('9',LgEntiere)+'.'+stringofchar('9',LgDecimale)+SymbolMonnaie+';1;_';
Tout va bien
A la conception d'une nouvelle form, l'occurence de TMaskFloat que j'y dépose a un mask qui correspond aux valeurs de mes 3 property
Le pb est que si à la conception de cette nouvelle form je modifie une de ces 3 valeurs de mon MaskFloat dans l'inspecteur dobjet (ces 3 propriétés sont published), le mask garde les valeurs par défaut et les nouvelles valeurs saisies dans l'inspecteur d'objet ne sont pas prises en compte, sauf si je modifie aussi la propriété EditMask dans l'inspecteur d'objet... pas terrible
Ouille ! j'espère que c'est clair
En fait, je voudrais qu'au lancement de ma form, le TMaskFloat affiche un mask qui soit conforme aux valeurs des 3 property
La seule soluce que j'ai trouvée est de (re)définir la propriété EditMask dans une procedure DoEnter dans le code du compo
L'inconvénient est que le mask n'est pas modifié tant que le compo n'a pas reçu le focus
Autre mystère : si j'enlève l'affectation des 3 propriétés dans la procedure constructor TMaskFloat.Create, le compo est inutilisable, la propriété EditMask reste vide, même si elle est définie dans la procédure DoEnter du compo
C'est à s'arracher les cheveux et faut pas que je fasse ça, y m'en restera plus
Si qqn a une piste, je suis preneur et bonne année à tou(te)s
Partager