2011-06-21 58 views
1

我想將項目管理器集成到TextArea中。其目的是使用他們自己的簡單界面直觀地顯示關鍵字,而用戶仍然可以將整個事物視爲正常文本來選擇字體,字體大小等。在mx.controls.TextArea中使用Flex ItemRenderer

E.g.這可能是TextArea的的htmlText:

<TEXTFORMAT LEADING="2"> 
    <P ALIGN="RIGHT"> 
     <FONT FACE="Century Gothic" SIZE="24" COLOR="#999999"> 
     The temperature is {TEMP|DEGREES}°. 
     </FONT> 
    </P> 
</TEXTFORMAT> 

在這個例子中,部分{TEMP |學位}應該用的ItemRenderer其中顯示了與可能的關鍵字(溫度,時間,...)和一個下拉列表中被替換第二個下拉菜單,其參數取決於所選關鍵字(對於溫度,即華氏度)。

有關如何處理此問題的任何想法或建議?

非常感謝, 弗蘭克

+1

如果你想用mx TextArea做到這一點,你將處於一個痛苦的世界。 Spark TextArea會更容易。這是一個選擇嗎? – RIAstar

+1

我認爲即使是火星TextArea這將是艱難的。這聽起來像你實際上並不想要TextArea;但是一些自定義組合是一種多重控制的混合動力,它是動態創建的。 – JeffryHouser

+0

不,項目仍然在Flex3中,所以沒有Spark ... – Frank

回答

1

呀,絕對不可能沒有majorly黑客文本區域,這到底不會真的是一個TextArea了。

但是我做了類似的事情。這很簡單,只需創建一個簡單而健壯的數據結構(比如說一個包含具有某種不可知數據屬性和'類型'的自定義模型的數組,以便知道如何處理它),迭代並添加它到一個容器(如HBox)。根據數據類型的不同,您需要一些知道如何處理它的算法(要創建哪個「項目渲染器」)。

這絕對是可能的,因爲我創建了一種基於數據的動態複雜形式,但這不是最簡單的事情。您需要對其進行相當多的測試,並考慮數據結構以及如何對其進行抽象。我會與你分享代碼,但IP不是我的。

+0

這可能確實是最好的辦法。但是這種方法的問題是,你不能像在textarea中那樣在不同的渲染器中選擇文本。我需要此功能,以便用戶可以輕鬆應用字體,文本大小等。 – Frank

+1

難題。那麼,這個'解決方案'真的只是爲了顯示最終結果。如果您需要用戶修改結果或文本,您應該嘗試使用具有適當用戶界面的全文驅動方法(比如stackoverflow如何)。例如,一切都只是文本,如果他們想要一個組合框,只需在文本區域的頂部插入一個按鈕「{ComboBox [value1,value2]}」或其他類似的東西。然後,您需要解析文本並創建適當的數據模型進行顯示。 –