Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/01/2006, 03:39
night.noise
 
Fecha de Ingreso: octubre-2003
Mensajes: 7
Antigüedad: 20 años, 6 meses
Puntos: 0
CellRenderer en Datagrid y comportamiento anómalo

Hola a todos. Tengo un mal problema del que no he encontrado referencias (ni buenas ni malas) en Internet.

He creado un archivo .AS (clase para CellRenderer) para dar a mi Datagrid la posibilidd de mostrar un color de texto distinto en algunas celdas de dos columnas. Mostrará un color diferente en la columna 'D0p' si el valor en 'E0p' es 1, y mostrará otro color diferente en la columna 'D0s' si el valor en 'E0s' es 1. En el resto de casos el color de texto será el de defecto. Incluyo el código de la clase.

Nada difícil en principio. Funciona bien, pero el problema reside en las filas que no se muestran en pantalla porque están por debajo del área de visualización o rowCount en la carga del fotograma. Para las filas que estan en posiciones superiores al rowCount (que no se ven) se les aplica mal el color. Y por distintas pruebas que he hecho se les aplica mal cualquier CellRenderer que sea condicional en el setValue.

Pido ayuda. Necesito solucionar el tema porque tengo todo acabado y se me está echando el tiempo encima. No tengo ideas ni encuentro nada relacionado.


Gracias
Un saludo


/******* Inicio código *******/
class EleCntDat extends mx.core.UIComponent{

var lblDato;
var owner;
var listOwner;
var getCellIndex : Function;

//Constructor
function EleCntDat(){

}

function createChildren():Void{
lblDato = createLabel("lblDato", 10);

//Estilo de la etiqueta
lblDato.styleName = listOwner;
lblDato.selectable = false;
lblDato.tabEnabled = false;
lblDato.background = false;
lblDato.border = false;
}

function size():Void{
lblDato._width = __width;
lblDato._height = __height;
}

function getPreferredHeight():Number{
return owner.__height - 4;
}

function setValue(suggested:String, item:Object, selected:Boolean):Void{
if(item!=undefined){
var index = getCellIndex();
var sAux=listOwner.getColumnAt(index.columnIndex).colu mnName;

if((sAux=="D0p")&&(item.E0p==1)) lblDato.color=0x0000FF;
else if((sAux=="D0s")&&(item.E0s==1)) lblDato.color=0xFF0000;
}
lblDato.text = suggested;
}
}
/****** Fin Código ******/