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.