Comunidad de diseño web y desarrollo en internet online

Cellrenderer

Citar            
MensajeEscrito el 30 Ago 2005 07:00 pm
Que tal como estan :D ... bueno la verdad de las cosas ya saben que este post no es nadamas para saludar, sino tambien para pedir asesoria...

Bueno tengo esta linea de AS

Código :

Estado: pelis_Grid.getColumnAt(5).cellRenderer = "RatingRadioRenderer";


Esta linea forma parte de la construccion de filas para un datagrid

Código :

function datosgrid() {
//Cargamos el XML
miXML.ignoreWhite = true;
miXML.onLoad = function(success){
   //Cargamos y llenamos el array
   if (success){
      for (i=0; i<miXML.firstChild.firstChild.childNodes.length; i++){
pelisGrid.addItem
({ID_Epo:miXML.firstChild.firstChild.childNodes[i].childNodes[0].firstChild, Equipo:miXML.firstChild.firstChild.childNodes[i].childNodes[1].firstChild,
Marca:miXML.firstChild.firstChild.childNodes[i].childNodes[2].firstChild,
Modelo:miXML.firstChild.firstChild.childNodes[i].childNodes[3].firstChild,
Serie:miXML.firstChild.firstChild.childNodes[i].childNodes[4].firstChild,
Estado:pelis_Grid.getColumnAt(5).cellRenderer="RatingRadioRenderer"});         }
}


El asunto es que cuando ejecuto el fla en la columna 5 no me pone los radiobutons, sino que me pone la palabra RatingRadioRenderer. ya he probado la clase con el ejemplo cellrenderer de elecash y me pone muy bien los radiobutons.

Aqui pongo el link de donde baje la clase

http://philflash.inway.fr/dgratingrd/dgratingrd.html

Alguien puede decirme porque me pone unicamente la palabra RatingRadioRenderer y no el conjunto de radiobutons que quiero.

Por manuel_cfe

106 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Ago 2005 07:23 am
Si te fijas en la biblioteca del archivo que te bajas hay un movieclip llamado RatingRadioRenderer, eso ha de estar en tus películas porque es lo que conecta con la clase .as que se ha creado anteriormente.

Deu!! ^^

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

clabbrowser
Citar            
MensajeEscrito el 31 Ago 2005 07:37 pm
Bien lo anterior ya quedo resuelto era un error de "dedo"... :twisted:

Pero tengo una nueva pregunta..... !vaya con la novedad! :lol:

¿Como recupero el valor de lo que seleccione en mi cellrenderer., es decir la clase RatingRadioRenderer.as me pone 5 radiobutons en la columna 5, en cada fila de mi datagrid, Ok.

Lo que yo quiero es meter en una matriz todas mis filas de mi datagrid (eso creo poder hacerlo solo) y tambien el valor del radiobuton que seleccione de esos 5 (esto no).

Como se hace eso?, no se si me explique.

gracias

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 01 Sep 2005 07:37 am
Yo lo que hago es lo siguiente.

Dentro de la clase renderer, en la función createChildren le pongo el addEventListener, por ejemplo así.

Código :

function createChildren():Void{
   //createObject nos permite crear un objeto dentro de otro.
   createObject("ComboBox", "miCombox", 10);
   miCombox._visible = false;
   miCombox.dataProvider = [0,1,2,3,4,5,6,7,8,9,10];
   miCombox.addEventListener("change", _root.alCambiar);
   miCombox.size();
}


Luego dentro del código de Flash pongo el evento y ya está.

Código :

var alCambiar:Object = new Object();
alCambiar.change = function(objeto){
   trace(objeto.target.selectedItem);
}


A ver si te sirve así.

Deu!! ^^

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

clabbrowser
Citar            
MensajeEscrito el 01 Sep 2005 03:58 pm
Ok, mis dudas anteriores ya las despeje.

Ahora quiero hacer que por default el radiobutton [1] me aparezca seleccionado por default, Este es el codigo de la clase RatingRadioRenderer

Código :

class renderer.RatingRadioRenderer extends UIComponent
{
   private var radioTotal:Number = 5;
   private var radioWidth:Number = 18;
   private var startX:Number = 5;
   private var deltaX:Number = 2;
   private var contentWidth:Number;
   
   private var radios:Array; 

    var owner; // The row that contains this cell   
   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 RatingRadioRenderer()
   {
   }
   
   function init(Void):Void
   {
      super.init();
      contentWidth = (startX*2)+(radioWidth*radioTotal)+(deltaX*(radioTotal-1));
      radios = new Array();
   }
   
   function createChildren(Void):Void
   {
      var groupName:String = "group";
      var radio:RadioButton;
      for (var i:Number = 0; i < radioTotal; i++) {
         var indice:Number = i + 1;
         radio = mx.controls.RadioButton(createObject("RadioButton", "ra"+indice, indice));
         radio.label = "";
         radio.data = ""+indice;
         radio.groupName = groupName; 
         radio.labelPlacement = "bottom";
         
         radios.push(radio);
                                      [b]radios[1].selected = true[/b]//Esto es lo que he probado pero no me aparece seleccionado
      }
      
      // Listener sur le group pour prendre en compte 
      // les touches (droite, gauche)
      var g = radio._parent[groupName];
      radio.groupName.selectedData = "ra"+2;
      g.addEventListener("click", this);
   }

   function size(Void):Void
   {
      // layout the content
      doLayout();
   }
   
   function doLayout(Void):Void
   {
      var w:Number = __width;
      var h:Number = __height;
       var x:Number = (__width - contentWidth) / 2;
       x += startX;
      for (var i:Number = 0; i < radioTotal; i++) {
          var radio =   radios[i];
          // 12 : minimal value for radio height
         radio.setSize(radioWidth,12);
          radio._x = x;
          x += radioWidth+deltaX;
      }       
   }
   
   function setValue(value:String, item:Object, sel:Boolean):Void
   {
      if (item == undefined) 
      {
         for (var i:Number = 0; i < radioTotal; i++) {
             var radio =   radios[i];
             radio._visible = false;
          }
          return;
       }
       
      // On rend visible et on cherche le radio à sélectionner
      var selectedRadio = null;
      var noValue:Boolean = true;
      for (var i:Number = 0; i < radioTotal; i++) {
          var radio =   radios[i];
          radio._visible = true;
         
          
          if (radio.selected) {
             selectedRadio = radio;   
          }
          if (radio.data == value) {
             if (!radio.selected) {
                radio.selected = true;   
             } 
             noValue = false;
          } 
          
       }
       // Special case for null value (0)
       // Valeur non connue => on déselectionne si il existe radio sélectioné
       if (noValue && selectedRadio != null) {
          selectedRadio.selected = false;   
       }
   }

   function getPreferredHeight(Void):Number
   {
      if (owner == undefined) return 18;
      return owner.__height - 2;
   }

    //function getPreferredWidth :: only really necessary for menu

   function click(eventObj:Object):Void 
   {
      var target = eventObj.target;
      listOwner.dataProvider.editField(getCellIndex().itemIndex, getDataLabel(), target.selectedData);
   }

}


Esta es la clase limpiecita, pongo todo para que me digan donde demonios debe de ir el


Código :

radios[1].selected = true


Gracias por todo cristalab

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 01 Sep 2005 08:09 pm
Pues no se, no tengo ni idea, los cellrenderer son algo un poco oscuro todavía en el mundo del Flash, sino preguntale a Freddie...

Pero bueno, yo estoy casi seguro que va en algun lado de la función setValue, así que ves probando metiéndolo por ahi, ok? XD

Suerte!! ^^

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

firefox
Citar            
MensajeEscrito el 01 Sep 2005 11:13 pm
uish, hacer un radiogroup en un CellRenderer, se me hace un poco chungo, la verdad, no dudo que sea posible, pero seria cuestión de que crearas en otro "ambito" las variables de los radiobuttons, como por ejemplo _root ... no me preguntes como ahora mismo :P , pero sospecho que con eso y compartiendo el mismo RadioButtonGroup si es posible

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

clabbofh
Citar            
MensajeEscrito el 02 Sep 2005 07:29 am

Freddie® escribió:

uish, hacer un radiogroup en un CellRenderer, se me hace un poco chungo, la verdad, no dudo que sea posible, pero seria cuestión de que crearas en otro "ambito" las variables de los radiobuttons, como por ejemplo _root ... no me preguntes como ahora mismo Lengua , pero sospecho que con eso y compartiendo el mismo RadioButtonGroup si es posible


Suerte que el señor Phil tiene respuestas para todo XD

http://philflash.inway.fr/dgratingrd/dgratingrd.html

Por Elecash

Claber

8126 de clabLevel

37 tutoriales
19 articulos
13 ejemplos

  Bastard Operators From Hell Desarrollador de GAIA Premio_Secretos Héroes

BarnaCity

clabbrowser
Citar            
MensajeEscrito el 02 Sep 2005 12:05 pm
Ah, pero ese es otro tema, porque los radios son de selección vertical ... aunque si eso es lo que buscabas pues tanto mejor, pero siendo vertical es mucho mas facil

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

clabbofh
Citar            
MensajeEscrito el 02 Sep 2005 03:47 pm
Jovenes :D :

Lo resolvi, practicamente la clase quedo intacta... trabaje en el fla que llama la clase y solo puse esto:

Como recordaran yo queria que un radiobutton me apareciera seleccionado por default en este caso el [1].

Código :

miXML.onLoad = function(success){
   //Cargamos y llenamos el array
   _global.total_equipos = miXML.firstChild.firstChild.childNodes.length;
   otro_txt.text = total_equipos;
   if (success){
      for (i=0; i<miXML.firstChild.firstChild.childNodes.length; i++){
pelisGrid.addItem({ID_Epo: miXML.firstChild.firstChild.childNodes[i].childNodes[0].firstChild,
Equipo: miXML.firstChild.firstChild.childNodes[i].childNodes[1].firstChild,
Marca: miXML.firstChild.firstChild.childNodes[i].childNodes[2].firstChild,
Modelo: miXML.firstChild.firstChild.childNodes[i].childNodes[3].firstChild,
Serie: miXML.firstChild.firstChild.childNodes[i].childNodes[4].firstChild,
 Estado: "1"});
//Estado: "RatingRadioRenderer"});   
}


Y agregue una funcion que ejecuto despues de que se carga todo el datagrid

Código :

function ponerradios() {
pelis_grid.getColumnAt(5).cellRenderer = "RatingRadioRenderer";
pelis_grid.getColumnAt(5).headerRenderer = "Estado";
}


Como ven ya hasta personalize el encabezado de la columna con la opcion "headerRenderer". Llo utilizo para poner 2 renglones ya que con el header normal del datagrid solo permite un renglon y no acepta mas de 2 palabras.

Gracias al Sr. Phil y a ustedes Elecash y Freddie.

Por cierto creen que os componentes de flash y esta nueva version 8 sean mas rapidos y robustos que los de la version mx2004, lo digo por esto...

http://www.macromedia.com/cfusion/knowledgebase/index.cfm?id=tn_15512

Por manuel_cfe

106 de clabLevel



 

msie
Citar            
MensajeEscrito el 02 Sep 2005 08:37 pm

manuel_cfe escribió:

Por cierto creen que os componentes de flash y esta nueva version 8 sean mas rapidos y robustos que los de la version mx2004, lo digo por esto...

No he experimentado aun con ellos muy a fondo, pero toma mi palabra, son lo mismo, exactamente igual, nada cambio, ni siquiera hay nuevos...

Por Freddie

BOFH

53 tutoriales
597 articulos
43 ejemplos

Genero:Masculino   Admin

Conserje de Cristalab

clabbofh

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.