apache-flex 在Flex/AS 3中,如何突出显示数据网格行?

ryoqjall  于 2022-11-01  发布在  Apache
关注(0)|答案(1)|浏览(214)

我正在编写一个应用程序,使用数据网格。不同的行是不同的颜色基于数据。当用户选择一行的颜色变得浅一些阴影。
不幸的是,其中一个用户认为它的对比度不够,希望有一个更明显的视觉指示器。
A)围绕选定的整行绘制一个矩形。B)添加一个带有图像的列,该图像根据该行是否被选中而隐藏或显示。
我沿着路径A走了一段时间,到达了函数中的点;
覆盖受保护的函数drawHighlightIndicator
当我看到特定的行时,我能够识别,但我不能确定如何绘制矩形。
因此,我回溯并查看了B。我可以创建带有箭头的项呈示器,但无法确定如何在选中时打开和关闭它。我在主模块中有一个单击事件,但无法引用回项呈示器组件。
我可以在数组集合中设置一个值,然后进行刷新,这可能会起作用,但这往往会将选定的行移动到datagrid显示区域的顶部。
因此,如果有人能在A或B上帮助我,我将不胜感激。这是一个数据网格,而不是高级数据网格。

kfgdxczn

kfgdxczn1#

因为您使用的是mx.controls.DataGrid,所以覆写drawHighlightIndicator可能会像下列范例一样,在选取范围标记周围绘制1px的红色框缐:

protected function drawHighlightIndicator(
    indicator:Sprite, x:Number, y:Number,
    width:Number, height:Number, color:uint,
    itemRenderer:IListItemRenderer):void
{
    var width:int = unscaledWidth - viewMetrics.left - viewMetrics.right;
    var borderColor:uint = 0xff0000;
    var g:Graphics = Sprite(indicator).graphics;
    g.clear();
    g.beginFill(borderColor);
    g.drawRect(0, 0, width, height);
    g.beginFill(color);
    g.drawRect(1, 1, width - 2, height - 2);
    g.endFill();
    indicator.x = x;
    indicator.y = y;
}

相关问题