Самый надежный способ сделать эту работу - использовать пользовательский рендерер элементов, где при переопределении функции OnUpdateDisplay вы используете графический объект для рисования горизонтальной линии прямо между меткой элемента сетки данных на основе по логическому параметру.
Я могу записать что-то вроде этого для метки, если хотите, но вам придется выяснить, как это работает с компонентом элемента Datagrid.
Пожалуйста, дайте мне знать, если вы хотите, чтобы я вставил пример для этикетки.
РЕДАКТИРОВАТЬ (ПРИМЕР ВСТАВКИ)
Создайте новый проект flex, добавьте новый класс, расширяющий метку. Имя класса: StrikeThroughLabel . Поместите это в пакет по умолчанию на данный момент (т.е. оставьте поле пакета пусто)
package
{
import mx.controls.Label;
public class StrikeThroughLabel extends Label
{
private var isStriked:Boolean = false;
public function StrikeThroughLabel()
{
super();
}
public function set striked(aIsStriked:Boolean):void{
isStriked = aIsStriked;
this.updateDisplayList(this.width, this.height);
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void{
super.updateDisplayList(unscaledWidth, unscaledHeight);
if(isStriked){
graphics.lineStyle(1,0x0000FF,1,false,"normal",null,null,3.0);
graphics.lineTo(unscaledWidth,unscaledHeight);
}else{
graphics.clear();
}
}
}
}
Как только это будет сделано, зайдите на ваш main.mxml и используйте следующий код для mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="windowedapplication1_creationCompleteHandler(event)"
xmlns:local="*">
<local:StrikeThroughLabel id="strikeThrough" text="Hello" x="129" y="128"/>
<mx:Script>
<![CDATA[
import mx.events.FlexEvent;
private var isLabelStriked:Boolean = false;
protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void
{
// TODO Auto-generated method stub
//this.strikeThrough.striked = true;
}
protected function button1_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
isLabelStriked = !isLabelStriked;
this.strikeThrough.striked = isLabelStriked;
}
]]>
</mx:Script>
<mx:Button click="button1_clickHandler(event)" id="myButton" label="Toggle"/>
</mx:WindowedApplication>
Выше показаны кнопка и метка, нажатие на кнопку включает зачеркивание на метке.
Пожалуйста, обратите внимание, что в настоящее время проход по диагонали, но всего несколько настроек с логином рисования линии, и вы должны получить горизонтальный удар.