2012-05-23 52 views
-1

有谁知道一种方法将样式应用于Spark DataGrid中的选定文本?更改Spark DataGrid单元格上的选定文本颜色

我认为最好的方法是用textarea制作一个itemrenderer,但之后我不知道该怎么做。

我的目标是不改变颜色标签,如果单元格被选中。 事实上,在我的梦中,项目是可编辑的,您只能选择单元格中的一些单词,并将特定样式应用于选定部分的文本(通过单击按钮,一个用于粗体,一个用于斜体...)。相比之下,文本可能像HTML文本一样存储在数据库中。

我想使用单元格itemrenderer像一个RichTextEditor,但没有ControlBar。在我的情况下,我想在datadgrid外只有一个控制栏。

我会很高兴,如果你能帮助我。

谢谢

回答

2

Spark的最佳方法通常是皮肤。

有通过性能,如改变所选颜色不完善的控制:

cell

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
       xmlns:s="library://ns.adobe.com/flex/spark"> 

    <s:DataGrid selectionColor="0xff0000"> 
     <s:dataProvider> 
      <s:ArrayList> 
       <fx:String>a</fx:String> 
       <fx:String>b</fx:String> 
       <fx:String>c</fx:String> 
      </s:ArrayList> 
     </s:dataProvider> 
    </s:DataGrid> 

</s:Application> 

要实现的的GridColumn项目渲染器,使用States定义选定状态如何出现

cell-renderer

GridColumnItemRenderer

<?xml version="1.0" encoding="utf-8"?> 
<s:GridItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" 
        xmlns:mx="library://ns.adobe.com/flex/mx" 
        clipAndEnableScrolling="true"> 

    <s:states> 
     <s:State name="normal" /> 
     <s:State name="selected" /> 
    </s:states> 

    <fx:Script> 
     <![CDATA[ 
      override public function prepare(hasBeenRecycled:Boolean):void 
      { 
       lblData.text = data[column.dataField] 
      } 
     ]]> 
    </fx:Script> 

    <s:Label id="lblData" 
      color.selected="0x00ff00" 
      top="9" 
      left="7" /> 

</s:GridItemRenderer> 

的DataGrid

的项目渲染以上是从星火的GridColumn规定,如:

<s:DataGrid> 
    <s:columns> 
     <s:ArrayList> 
      <s:GridColumn itemRenderer="GridColumnItemRenderer" /> 
     </s:ArrayList> 
    </s:columns> 
</s:DataGrid> 
+0

我认为我的解释是不好的,因为我的目标是不会改变颜色标签,如果单元格被选中。事实上,在我的梦中,项目是可编辑的,您只能选择单元格中的某些单词,并将特定样式应用于选定的文本部分。相比之下,文本可能像HTML文本一样存储在数据库中。 – Flex60460

+0

您编辑的问题本质上是一个新问题,与您最初的问题完全不同。 –

相关问题