1

flexアプリケーションでmx:DataGridコンポーネントを使用しています。私はこのようなグリッドを示しています:

ここに画像の説明を入力してください

選択した青色を透明に変更したい。私は次のコードを使用しています:

<mx:DataGrid id="dg" dataProvider="{arrDg}" width="100%" height="100%" 
    draggableColumns="false" rowCount="{arrDg.length}" click="dgClickHandler(event)" 
    variableRowHeight="true" resizableColumns="false" sortableColumns="false" 
    selectionColor="#00000000" verticalScrollPolicy="off">

しかし、これは色を透明ではなく黒に変更しています。

助けてください。

4

2 に答える 2

1

[編集[

おっと、その色に 8 個のゼロがあることに気が付きませんでした。Flash は RGBA (またはアルファ/透明度を含むカラー値) をサポートしていません。

[編集終了]

選択時にハイライトをまったく表示したくない場合は、(mx) の選択可能なプロパティを に設定してみDataGridてくださいfalse。クリックハンドラーがあるようです。選択をオフにすると、クリックハンドラーがその仕事をするのを妨げる可能性があります:(

ある種の選択インジケーターが必要であるが、たとえば、選択色のアルファ (透明度) を変更したい場合、そのスタイル設定は存在しません (つまり、「selectionAlpha」スタイルはありません)。これを行うには、カスタム データ グリッド クラスを作成する必要があります。

于 2012-07-31T10:47:52.077 に答える
0

を選択可能にする必要があるmx:DataGridが、選択色がセル/行の色に影響を与えないようにしたい場合は、次のアプローチを使用できます。

DataGrid関数のオーバーライドを拡張し、関数drawSelectionIndicatorの内容を空のままにします (関数のオーバーライドにも興味があるかもしれませんdrawHighlightIndicator) 。

public class CustomRowColorDataGrid extends DataGrid
{
    public function CustomRowColorDataGrid()
    {
        super();
    }

    override protected function drawSelectionIndicator(indicator:Sprite, x:Number, y:Number, w:Number, h:Number, color:uint, itemRenderer:IListItemRenderer):void
    {
        //If you want a rectangle arround the selected row use call this method 
        //Rectangle(indicator,x,y,0xFF9900, 2,h) ;
    }

    override protected function drawHighlightIndicator(indicator:Sprite, x:Number, y:Number, w:Number, h:Number, color:uint, itemRenderer:IListItemRenderer):void
    {
        Rectangle(indicator,x,y,highlight, 2,h) ;
    }

    private function Rectangle(indicator:Sprite, xx:int, yy:int,colorBorde:uint,grosor:int, h:int):void
    {
        var g:Graphics ;
        var w:int ;

        w = this.width - this.verticalScrollBar.width-1 ;

        g = Sprite(indicator).graphics;
        g.clear();
        g.lineStyle(grosor,colorBorde) ;
        g.drawRect(0,1,w-grosor,h-grosor) ;

        indicator.x = xx;
        indicator.y = yy;
    }       
}
于 2014-03-05T14:57:09.207 に答える