abracadabraPDF › Forums › PDF – Général › Taille d’une zone de texte variable en fonction de son contenu › Répondre à : Taille d’une zone de texte variable en fonction de son contenu
Sur la page, j’ai créé deux champs texte:
Le champ « Reference », caché en lecture seule qui est placé sur la future zone de saisie.
Le champ « MonBeauChampQuiGrandit », future zone de saisie n’importe où, elle sera redimensionnée par le script pour couvrir le champ précédant.
En ouverture de page on ajoute le script suivant:
fsaisie=this.getField(« MonBeauChampQuiGrandit »);
fref=this.getField(« Reference »);
fsaisie.rect=fref.rect;
lg=fsaisie.value;
Dans le champ « MonBeauChampQuiGrandit », onglet « Format>Personnalisé>Format de touche personnalisé » j’ai saisi le script suivant:
if(!event.willCommit)
{
console.clear();
rectangle=fref.rect;
//calcul de la largeur de référence
larg=rectangle[2]-rectangle[0];
//lecture du contenu du champ
lg=this.event.value;
//calcul de la nouvelle abscisse, il faudrait ajouter une limite
newlarg=(lg.length)*larg/10;
rectangle[2]=Math.max((rectangle[0]+newlarg),(rectangle[0]+larg));
//Pour les curieux:
console.println(« Chaîne de caractères= »+lg);
console.println(« Longueur chaine de caractères= »+lg.length);
console.println(« Longueur variable du champ de saisie= »+newlarg);
console.println(« Longueur mini du champ de saisie= »+larg);
//On dimensionne si nécessaire
if(event.change)
{
fsaisie.rect=rectangle;
}
}
Au delà de 10 caractères le champ est redimensionné proportionnellement à la longueur de la saisie. On peut faire mieux mais c’est déjà ça.