Un post sur un problème bien connu dans InfoPath Forms Services 2007 qui est l'utilisation des zone de texte multiligne. En saisie, cette zone comportera obligatoirement une barre de scroll lorsque votre texte va dépasser la taille attribuée au contrôle.
Le problème devient encore plus gênant lorsque vous souhaitez afficher ce champ en lecture dans une vue spécifique ou dans une vue d'impression du formulaire.
En effet:
- Si vous utilisez une zone d'expression, vos retours à la ligne seront convertis en espace, ce qui n'est tout simplement pas acceptable.
- Si vous laissez la zone de texte multiligne en lecture, vous risquez d'avoir des problèmes lors de l'impression du formulaire car le texte dans le champ zone de texte multiligne qui sera tronqué.
- La solution de contournement habituelle reste de prévoir un encart assez grand afin d'accueillir les données saisies par l'utilisateur sans nécessiter de scroll.
Il existe malgré tout une astuce qui consiste à modifier la code xsl de la vue associée afin de définir les styles suivants sur votre zone de texte multiligne : "height : 100%; overflow-x : visible".
Par défaut le overflow-x est à none, ce qui bloque le bon fonctionnement.
Ainsi le contrôle affichera à présent la totalité du texte saisi précédemment par l'utilisateur (même sur la vue d'impression).
Pour réaliser la modification du fichier xsl, vous pouvez employer une des méthodes suivantes au choix :
- Si vous avez du code managé dans le formulaire : Au travers de la solution Visual Studio, il faudra ouvrir le fichier xsl correspondant à votre vue et réaliser la modification ci-dessus,
- Le cas échéant, il faudra réaliser une extraction du modèle de formulaire (Ouverture en mode conception puis Fichier / Extraire les fichiers). Il faudra ensuite modifier le fichier xsl nécessaire puis repackager le formulaire en ouvrant le fichier "manifest.xsf"
- en mode conception (clic droit sur le fichier puis "Concevoir").
Simple, mais efficace... Reste à savoir pourquoi cela n'est pas incorporé nativement dans l'interface!