Foros del Web » Creando para Internet » Flash y Actionscript »

Comunicar entre clases DataGrid cellRenderer

Estas en el tema de Comunicar entre clases DataGrid cellRenderer en el foro de Flash y Actionscript en Foros del Web. Hola: Estoy haviendo un DataGrid con cellrenderer en una columna hay un NumericStepper y en la otra un TextInput y dentro del la clase NumericStepperCellRenderer ...
  #1 (permalink)  
Antiguo 24/10/2008, 21:30
Avatar de Kravitz  
Fecha de Ingreso: julio-2005
Ubicación: Edo. de México
Mensajes: 121
Antigüedad: 12 años, 4 meses
Puntos: 2
Comunicar entre clases DataGrid cellRenderer

Hola:

Estoy haviendo un DataGrid con cellrenderer en una columna hay un NumericStepper y en la otra un TextInput y dentro del la clase NumericStepperCellRenderer estoy haciendo una funcion que me hace un calculo dentro del Listener del mismo Numeric.

Necesito meter este resultado dentro del TextInput de la otra columna Hay alguna forma de hacerse???

gracias
  #2 (permalink)  
Antiguo 25/10/2008, 18:31
Avatar de Kravitz  
Fecha de Ingreso: julio-2005
Ubicación: Edo. de México
Mensajes: 121
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Comunicar entre clases DataGrid cellRenderer

Se me ocurren 2 escenarios uno: que se importe una clase denro de la otra como en java o dos: obtener el nombre de la instancia con getItemAt: culaquier informacion al respecto sera bien recibida ya qu ees el unico dilema que me falta por resolver para terminar mi proyecto gracias

btw estas son las clases si le quieren echar un lente

NumericStepperRenderer.as
Código:
import mx.core.UIComponent
import mx.controls.NumericStepper

class com.flashdb.NumericStepperRenderer extends UIComponent
{

   var step : MovieClip;
   var listOwner : MovieClip; // the reference we receive to the list
   var getCellIndex : Function; // the function we receive from the list
  // var   getDataLabel : Function; // the function we receive from the list
   
   function NumericStepperRenderer()
   {
   }

   function createChildren(Void) : Void
   {   
      //Creates a ComboBox object and listen to changes
      attachMovie("NumericStepper", "step", 1, {styleName:this, owner:this});
      step.addEventListener("change", this);
      size();
   }

   // note that setSize is implemented by UIComponent and calls size(), after setting
   // __width and __height
   
   function size(Void) : Void
   {
     // step.setSize(30, 22);
      //step._x = (__width-150)/2;
      //step._y = __height;
   
   var h = __height;
    var w = __width;      
    //  step.setSize(w - 2, Math.max(h, listOwner.rowHeight - 2));
       step.setSize(w - 2, 22);
   }

   function setValue(str:String, item:Object, sel:Boolean) : Void
   {   //Get values from the dataProvider
      //item.Model is an array of labels/data pairs
      step.visible = (item!=undefined);
      //combo.dataProvider = item.Model;
   }
/*
   function getPreferredHeight(Void) : Number
   {
      return 20;
   }

   function getPreferredWidth(Void) : Number
   {
      return 16;
   }
*/   
   function calculaFcn(cnt:Number,costo:Number)
{
	//var val = 429.00;
	var resultado:Number = cnt*costo;
	//var numero:Number = Math.round (resultado * 100) / 100;
	//this[inst].text = "$"+resultado;
trace("$"+resultado);
	//inpt.text = resultado;
	_global.res = resultado;//¿¿¿¿¿¿¿¿¿¿¿¿COMO ASIGNO EL RESAULTADO AL TEXTINPUT?????????????????????????????
	}
   
   
   function change()   
   {
      //trace("Changed");
 //  var index = getCellIndex();
//var colName = listOwner.selectedItem.getCellIndex();
//.getColumnAt(index.columnIndex).columnName;
//trace(colName); 
   var index = getCellIndex();
var colName = listOwner.getColumnAt(index.columnIndex).columnName;
trace("Nombre de la columna: "+colName);
//listOwner.dataProvider.editField(index.itemIndex, colName, someVal);
trace("no de columna: "+ index.columnIndex);
trace("no de celda: "+ index.itemIndex);
trace("cantidad: "+step.value);
   trace("Nombre de la columna 4: " + listOwner.getColumnAt(4).columnName);
   trace("Precio contenido en la columna "+ index.columnIndex + " Celda " + index.itemIndex + ": " + listOwner.getItemAt(index.itemIndex).Precio);
   
   calculaFcn(step.value, listOwner.getItemAt(index.itemIndex).Precio);
   
   }

}

TextInputRenderer.as
Código:
import mx.core.UIComponent
import mx.controls.NumericStepper

class com.flashdb.TextInputRenderer extends UIComponent
{
   var inpt : MovieClip;
   var listOwner : MovieClip; // the reference we receive to the list
   var getCellIndex : Function; // the function we receive from the list
	
	
	function TextInputRenderer()
   {
   }

  function createChildren(Void) : Void
   {   
      //Creates a ComboBox object and listen to changes
     inpt =createObject("TextInput", "inpt", 1, {styleName:this, owner:this});
     inpt.addEventListener("change", this);
      size();
   }  
   
    function size(Void) : Void
   {
     // step.setSize(30, 22);
      //step._x = (__width-150)/2;
      //step._y = __height;
   
    var h = __height;
    var w = __width;      
    //  step.setSize(w - 2, Math.max(h, listOwner.rowHeight - 2));
       inpt.setSize(w - 2, 22);
   }

function setValue(str:String, item:Object, sel:Boolean) : Void
   {   //Get values from the dataProvider
      //item.Model is an array of labels/data pairs
      inpt.visible = (item!=undefined);
      inpt.editable = false;
	  //combo.dataProvider = item.Model;
   //inpt.text = str;
   }
function change()
{
	inpt.text = _global.res;  //SE ME OCURRIA QUE AÑADIENDO UN LISTENER AL INPUT SIN EMBARGO NO SIRVE PORQUE NO ES EL INPUT EL QUE CAMBIA SINO EL NUMERIC
	}
}
  #3 (permalink)  
Antiguo 27/10/2008, 10:36
Avatar de Kravitz  
Fecha de Ingreso: julio-2005
Ubicación: Edo. de México
Mensajes: 121
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Comunicar entre clases DataGrid cellRenderer

por cierto se me olvidaba asi es como creo el datagrid

Código:
stockResultObj.onResult = function(result) { 
     
	 for (var i=0; i<result.length; i++)
	 {
	 // example result values.  The result is a decoded actionscript object 
        //version of the xml returned by the operation. 
		
	my_dg.rowHeight = 25;
	my_dg.addItem({Marca:result[i].marca, Sustancia_Activa:result[i].activo, Presentacion:result[i].presentacion, Mg:result[i].mg, Precio:result[i].precio, Cantidad:1, Importe:"0"});
	
	my_dg.getColumnAt(5).cellRenderer = "Symbol 1";
    my_dg.getColumnAt(6).cellRenderer = "Symbol 2";
  }
donde Symbol 1 y Symbol 2 son los clips vacios que me enlazan a las clases

gracias
  #4 (permalink)  
Antiguo 28/10/2008, 14:11
Avatar de Kravitz  
Fecha de Ingreso: julio-2005
Ubicación: Edo. de México
Mensajes: 121
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Comunicar entre clases DataGrid cellRenderer

Ok ya lo solucioné sin embargo cambia el valor hasta que pongo el cursor encima del registro(que cambia a color verde) del DataGrid alguna idea???? de cualquier forma seguiré investigndo el porque de esto gracias
  #5 (permalink)  
Antiguo 28/10/2008, 15:37
Avatar de Kravitz  
Fecha de Ingreso: julio-2005
Ubicación: Edo. de México
Mensajes: 121
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Comunicar entre clases DataGrid cellRenderer

Bueno despues de todo este autoresponder al fin encontre la solución aqui dejo un link que me ayudo mucho por si alguie tiene algun problema similar:


Flash CellRender how to

de antemano gracias a quien se molesto en ver mi tema
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:55.