Reputation: 173
I want to set a gradient background for the selected item in my AdvancedDataGrid
How can I do it?
Thanks a lot Vladimir
Upvotes: 0
Views: 825
Reputation: 1379
You could extend AdvancedDataGrid as in the example below:
import flash.display.GradientType;
import flash.display.Graphics;
import flash.display.Sprite;
import flash.geom.Matrix;
import mx.controls.AdvancedDataGrid;
import mx.controls.listClasses.IListItemRenderer;
import mx.core.mx_internal;
use namespace mx_internal;
public class CustomAdvancedDataGrid extends AdvancedDataGrid
{
public var secondaryColor : uint = 0xFFFFFF;
protected override function drawSelectionIndicator(
indicator:Sprite, x:Number, y:Number,
width:Number, height:Number, color:uint,
itemRenderer:IListItemRenderer) : void
{
if (isRowSelectionMode())
width = unscaledWidth - viewMetrics.left - viewMetrics.right;
var mat : Matrix = new Matrix();
mat.createGradientBox(width,height,-90*Math.PI/180);
var g:Graphics = Sprite(indicator).graphics;
g.clear();
g.beginGradientFill(GradientType.LINEAR, [color, secondaryColor], [1, 1], [0, 255], mat);
g.drawRect(0, 0, width, height);
g.endFill();
indicator.x = x;
indicator.y = y;
}
}
Other functions you could consider overriding are: drawHighlightIndicator and drawCaretIndicator (which have the same structure). As for the secondaryColor you could leave it hard-coded, or define a style for it.
Upvotes: 3