2010-06-30 32 views
0

是否可以在Flex TextArea中更改插入TAB字符的寬度?如何更改Flex TextArea中TAB字符的寬度?

我正在捕獲FocusEvent.KEY_FOCUS_CHANGE事件並手動將"\t"插入到使用嵌入的等寬字體樣式的文本區域中。默認情況下,TAB將顯示兩個半等寬字符......我需要它們顯示五個等寬字符。

有關如何做到這一點的任何想法?

+0

正在使用Flex4 RichEditableText選項嗎? – 2010-06-30 15:26:30

+0

這不是一個特定於操作系統的東西嗎?或者可能與字體有關。我不希望任何Flash API允許你改變它。 – JeffryHouser 2010-06-30 15:32:32

+0

@Marty - 感謝您的建議。不幸的是,我的日程安排很緊,因此與Flex 3綁定在一起。 @ www.Flextras.com - 我試圖創建一個5字符寬的自定義字體字形,但文本區域似乎並不那麼喜歡。我希望能夠在AS中實現解決方案。 – Bryan 2010-06-30 15:43:55

回答

0

這樣的事情呢?

<mx:Canvas> 
    <mx:Script> 
     [Bindable] 
     public var myText:String; 
    </mx:Script> 
    <mx:TextArea id="textArea" text="{TabUtil.expand(myText)}" valueCommit="myText = TabUtil.contract(myText))" /> 
</mx:Canvas> 



    public class TabUtil 
    { 
     public static const SPACE:String = "  "; // Five spaces; 
     public static function expand(text:String):String 
     { 
      return text.replace("\t",SPACE); 
     } 
     public static function contract(text:String):String 
     { 
      return text.replace(SPACE,"\t"); 
     } 
    } 

我忘了替換的參數,可以,但我認爲它可能需要一個正則表達式,在這種情況下,你需要調整上述。但它應該工作。

0

textFormat的tabStops屬性是您正在查找的內容。您可以設置要放置每個選項卡的位置的像素值。

var tf:TextFormat = new TextFormat(); tf.tabStops = [100, 200, 300, 400]; myTextArea.mx_internal::getTextField().defaultTextFormat = tf;

相關問題