Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Adapter la taille d'un textbox à son contenu... c'est possible ?

Envoyé par : Raphael

Date : 07/11/2006 15:50

Bonjour, je me retrouve devant un petit problème esthétique...

En fait, j'ai un script qui créé dynamiquement une liste de textbox dans un vbox, et je les remplis avec des données plus ou moins longues...

Comme je ne sais pas combien de textbox seront créés à l'avance, j'applique le style "overflow: auto" à mon vbox afin d'y placer une scrollbar lorsque le nombre de textbox est tel qu'ils ne rentrent pas dans l'affichage de base.

A mes textbox, j'applique un multiline="true" mais je ne connais pas la taille du texte qui va y être donc je ne peux pas définie de rows a priori...

Le problème, c'est qu'ainsi, mes textbox font toujours 2 lignes, et ce, qu'il y ait 1 mot ou bien 15 lignes de texte (et dans ce cas, j'ai une scrollbar qui se met automatiquement dans mon textbox).

J'ai bien pensé à affecter un flex="1" à tous mes textbox générés, mais c'est pire...

Bref, il me faudrait une astuce (JS ou peut-être au niveau du CSS ?) qui fasse que mes textbox s'adaptent à mon texte...

Est-ce réalisable ? Merci d'avance =)

# Re: Adapter la taille d'un textbox à son contenu... c'est possible ?

Envoyé par : hhf

Date : 08/11/2006 21:05

si tu les crée dynamiquement, teste les "\n" (retour à la ligne) puis adapte les textbox en fonction. nb de ligne, multiline ou pas etc...

# Re: Adapter la taille d'un textbox à son contenu... c'est possible ?

Envoyé par : Raphael

Date : 10/11/2006 22:14

Euh, j'ai un peu de mal à comprendre... Tu veux que j'essaie de calculer le nombre de lignes dont je vais avoir besoin pour afficher mon texte et que j'applique ensuite la propriété rows à mon textbox ?

Je vois pas trop comment faire...

Je vais tester du côté du CSS pour voir ce que je peux faire. Si quelqu'un a une solution, merci d'avance :)

# Re: Adapter la taille d'un textbox à son contenu... c'est possible ?

Envoyé par : chBok

Date : 10/11/2006 22:46

J'ai un peu regardé ton problème, mais j'avoue ne pas avoir trouvé de solution pour le moment.

# Re: Adapter la taille d'un textbox à son contenu... c'est possible ?

Envoyé par : hhf

Date : 10/11/2006 23:56

ben quand tu dis que tu construit dynamiquement tes textbox, c'est via javascript ou via un code serveur style php.

si c'est coté client, (javascript), tu as donc ton text dans une variable, que tu stocke dans le textbox fraichement créé. cette variable, tu texte via une expressio reguliere et la methode match, pour savoir le nombre de "\n" que comporte la chaine, puis tu positionne le multiline et le row en fonction.

Si c'est coté serveur, mauvais choix (il faut separer les données de l'interface) tu peux faire la meme chose, mais coté serveur, mais d'apres ce que tu dis et ce que j'ai compris tu serais plutot dans le premier cas.

Sinon, j'ai pas bien compris ton PB, precise...

# Re: Adapter la taille d'un textbox à son contenu... c'est possible ?

Envoyé par : Raphael

Date : 11/11/2006 10:48

Oui, je vois ce que tu veux dire (même si je ne connais pas trop la méthode "match")... Mais le problème, c'est que mon texte qui fait par exemple 8 lignes ne comporte qu'un seul saut de ligne ! Comment peut-on faire un test de la sorte ?

Pour moi, cette technique est inapplicable non ? Pour plusieurs raisons :

  • Le vbox qui contient tous mes textbox s'étire en horizontal selon la résolution de l'écran de l'utilisateur.
  • Mon contenu peut contenir des paragraphes très long sans aucun saut de ligne.

C'est pourquoi, je ne pense pas que calculer le nombre de saut de ligne puisse me permettre de déterminer le nombre de rows à appliquer, non ?

Sinon, j'ai essayé du overflow:visible; mais sans aucun résultat probant... A priori, impossible donc de m'en sortir en CSS.

Pour l'instant, j'ai donc 2 solutions :

  • Mettre un nombre de rows "moyen" pour une bonne lecture des texte, avec une scrollbar auto si ça dépasse...
  • Ne pas mettre mon texte dans un texbox mais plutôt dans un <description>, mais par souci d'esthétique et d'uniformisation graphique pour mon logiciel, j'aurais préféré utiliser des textbox.

PS : Oui, je travaille en JS (et non en PHP)

# Re: Adapter la taille d'un textbox à son contenu... c'est possible ?

Envoyé par : thefab

Date : 12/11/2006 15:42

Ne pas mettre mon texte dans un texbox mais plutôt dans un <description>, mais par souci d'esthétique et d'uniformisation graphique pour mon logiciel, j'aurais préféré utiliser des textbox.

Si tu peux remplacer tes textbox pas des description ça veut dire que tu n'as pas besoin d'éditer le texte ? Si c'est le cas, effectivement je pense que c'est une bonne solution d'utiliser des <description> et pour uniformiser l'aspect de l'interface graphique tu appliques les styles CSS de textbox à tes éléments description.

# Re: Adapter la taille d'un textbox à son contenu... c'est possible ?

Envoyé par : simboy

Date : 12/11/2006 17:41

Alternativement, voici un petit textbox que j'ai pompé sur http://xulsolutions.blogspot.com/2006/07(..) et qui pourrait répondre à tes besoins:

<textbox class="plain" style="background-color: transparent;" flex="1"
              multiline="true" readonly="true"
              onoverflow="this.height = this.inputField.scrollHeight;"
              DOMAttrModified="if(event.attrName == 'value') this.value  = event.newValue; return true;"
              value="du texte" />

# Re: Adapter la taille d'un textbox à son contenu... c'est possible ?

Envoyé par : Raphael

Date : 13/11/2006 13:33

Merci pour les idées...

thefab > Effectivement, j'avais pensé à utiliser un <description> puis y appliquer un peu de CSS pour le faire ressembler à un <textbox> mais je m'étais dit que se résoudre à une telle solution serait un peu la porte ouverte à une multitude de petits raffistolages esthétiques dans le futur...

simboy > Merci bien pour ton exemple, je vais essayer de l'adapter à mon code (car mes textbox sont générés dynamiquement...).

# Re: Adapter la taille d'un textbox à son contenu... c'est possible ?

Envoyé par : thefab

Date : 14/11/2006 10:47

Sinon il y a aussi <richlistbox> qui est vraiment sympa, bon d'accord ce n'est plus du tout des <textbox> mais a essayer:

<richlistbox>
  <richlistitem>
    <description>Texte</description>
    <description>Texte beaucoup plus long</description>
  </richlistitem>
</richlistbox>

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.