-1

Spark DataGrid で選択したテキストにスタイルを適用する方法を知っている人はいますか?

私は最善の方法は、テキストエリアを備えたアイテムレンダラーを持つことだと思いますが、その後、どうすればよいかわかりません。

セルが選択されている場合、私の目標は色ラベルを変更することではありません。確かに、私の夢では、アイテムは編集可能で、セル内のいくつかの単語のみを選択し、テキストの選択した部分に特定のスタイルを適用できます (ボタンをクリックすることで、太字、斜体など)。それよりも、テキストは html テキストのようにデータベースに保存される場合があります。

RichTextEditor のようにセル itemrenderer を使用したいのですが、ControlBar は使用しません。私の場合、datadgrid の外側にコントロール バーを 1 つだけ配置したいと考えています。

助けていただければ幸いです。

ありがとう

4

1 に答える 1

2

Spark での最善のアプローチは、一般的にスキンです。

選択した色を変更するなど、プロパティを介した基本的な制御があります。

細胞

<?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して、選択した状態がどのように表示されるかを定義します。

セルレンダラー

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>

データグリッド

上記のアイテム レンダラーは、次のように Spark GridColumn から指定されます。

<s:DataGrid>
    <s:columns>
        <s:ArrayList>
            <s:GridColumn itemRenderer="GridColumnItemRenderer" />
        </s:ArrayList>
    </s:columns>
</s:DataGrid>
于 2012-05-23T02:44:00.530 に答える