2009-06-11 7 views
0

Existe-t-il un moyen de restreindre le nombre de caractères dans Flex Rich Text Editor? Je suppose qu'il devrait y avoir, car il est possible dans une zone de texte. Donc, si je pouvais mettre la main de la zone de texte contenu dans l'éditeur de texte enrichi , je serais capable de le faireFlex Rich Text Editor - Limitation du nombre de caractères

Répondre

2

Je pense que ce serait assez facile à actionscript, bien que je ne sais pas exactement comment on pourrait faites-le en mxml. Il semble qu'il y ait deux enfants contenus dans le RichTextEditor, l'un d'entre eux étant TextArea. Selon la documentation (http://livedocs.adobe.com/flex/3/langref/mx/controls/RichTextEditor.html#propertySummary), vous pouvez accéder aux sous-contrôles comme ceci:

myRTE.toolBar2.setStyle("backgroundColor", 0xCC6633); 

Avec Myrte étant l'instance de votre éditeur de texte. Donc, ma conjecture serait quelque chose comme ça fonctionnerait:

myRTE.textArea.maxChars = 125; 

Avec 125 étant le nombre a les caractères que vous voudriez restreindre.

+0

En mxml ce serait simplement adamcodes

0

J'ai juste couru dans ceci.

La définition de votre maxChars sur textArea fournira une limite à la zone de texte, mais cela ne sera pas représentatif du nombre de caractères que l'utilisateur peut taper. Lorsque l'utilisateur tape, le balisage est ajouté en coulisse, ce qui augmente considérablement le nombre de caractères.

par exemple, si je tape la lettre « a » dans un RichTextEditor, je reçois un nombre de caractères de 142 et ce htmlText:

<TEXTFORMAT LEADING="2"><P ALIGN="LEFT"><FONT FACE="Verdana" SIZE="10" COLOR="#0B333C" LETTERSPACING="0" KERNING="0">a</FONT></P></TEXTFORMAT>

je ne pouvais pas voir un moyen simple d'obtenir un bon maxChar pour travailler hors de la boîte, alors j'ai étendu RichTextEditor et lui ai donné un maxChar. si maxChar> 0, j'ai ajouté un auditeur à « changement » et fait quelque chose comme ça dans le gestionnaire d'événements:

protected function handleTextChange(event:Event) : void 
    { 
     var htmlCount:int = htmlText.length; 

     // if we're within limits, ensure we reset 
     if (htmlCount < maxChars) 
     { 
      textArea.maxChars = 0; 
      this.errorString = null; 
     } 
     // otherwise, produce an error string and set the component so the user 
     // can't keep typing. 
     else 
     { 
      var textCount:int = textArea.text.length; 
      textArea.maxChars = textCount; 

      var msg:String = "Maximum character count exceeded. " + 
       "You are using " + htmlCount + " of " + maxChars + " characters."; 

      this.errorString = msg; 
     } 
    } 

l'idée est d'appliquer une maxChars à la zone de texte que dans l'état d'erreur, de sorte que le l'utilisateur ne peut rien saisir de plus et sera invité à effacer certains caractères. une fois que nous quittons l'état d'erreur, nous devons mettre le textArea.maxChars à zéro afin qu'ils puissent continuer.

Questions connexes