Comunidad de diseño web y desarrollo en internet online

mi radio buton trabaja en equipo

Citar            
MensajeEscrito el 09 Jun 2010 06:42 pm
Hola amigos, un saludo a todos. Les cuento tengo un problema, he creado en flex un componente llamado Opcion basado en un hbox compuesto con un radio y un text, ademas le he agregado una propiedad de seleccionado de tipo bolean. Aqui esta el code.

Código Flex :

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="24" creationComplete="iniciar(event)">
<mx:Script>
   <![CDATA[
      import mx.events.FlexEvent;
      public var seleccionado:Boolean=false

      public function iniciar(event:FlexEvent):void{
      radio.addEventListener(MouseEvent.CLICK,seleccionar)
      }
      private function seleccionar(event:MouseEvent):void{
   
            event.target.selected=true;
            seleccionado=true;
            
      }
      public function deseleccionar():void{
         seleccionado=false;
         radio.selected=false;
      }
   ]]>
</mx:Script>
   <mx:RadioButton width="22" id="radio"/>
   <mx:TextInput width="348" id="tituOpcion"/>
</mx:HBox>

Bien este componente va a ser requerido en tiempo de ejecucion por otro componente, al tener varias Opciones, todos se pueden seleccionar y luego nadie se puede deseleccionar para ello he creido conveniente hacer una funcion que haga ese trabajo, pero esta funcion debe ser llamado desde cada una de las Opciones.
Aqui el code de Pregunta, el componente que utiliza las Opciones.

Código Flex :

<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="464" height="300" title="Pregunta Objetiva" creationComplete="iniciar(event)">
   <mx:Script>
      <![CDATA[
         import componentes.opciones;
         import mx.events.FlexEvent;
         private var numOpciones:Number=0
         public function iniciar(event:FlexEvent):void{
         masOp.addEventListener(MouseEvent.CLICK,agregarOpcion);
         menOp.addEventListener(MouseEvent.CLICK,quitarOpcion);
         }
         private function agregarOpcion(event:MouseEvent):void{
            numOpciones+=1
            if (numOpciones<6){
            var opcion:opciones=new opciones
            listaOp.addChild(opcion);
            }
         }
         private function quitarOpcion(evnet:MouseEvent):void{
            
         }
         public function evaluar():void{
            trace('evalua')//aqui iria mi codigo que evalua a quienes hay desactivar
         }
      ]]>
   </mx:Script>
   <mx:Label x="10" y="19" text="Titulo de Pregunta"/>
   <mx:TextInput x="10" y="45" width="360"/>
   <mx:Button x="74" y="75" label="+" id="masOp"/>
   <mx:Button x="122" y="75" label="-" id="menOp"/>
   <mx:Label x="10" y="77" text="Opciones"/>
   <mx:VBox x="10" y="103" height="147" width="424" id="listaOp">
   </mx:VBox>
   
</mx:Panel>

Bueno espero haya sido claro y me puedan ayudar mi objetivo es que se puedan crear opciones y que la persona que los crea determine cual de ellas es la respuesta. espero me entiendan gracias a todos de ante mano. un Saludo a Cristalab.

Por FlexandFlash

48 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Jun 2010 07:36 pm
especificamente que es lo que necesitas que el Radiobutton se pueda desactivar o activar las veces que quieras ?

Por novita123

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Jun 2010 08:08 pm
ya le mejore un poco tu componente y tu proyecto para que puedas eliminar el ultimo objeto insertado y ademas que se pueda seleccionar o deseleccionar al RadioButton


Codigo Del Componente

Código ActionScript :

<?xml version="1.0" encoding="utf-8"?> 
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="24" creationComplete="iniciar(event)"> 
<mx:Script> 
   
<![CDATA[  
      import mx.events.FlexEvent; 
      public var seleccionado:Boolean=false 
 
      public function iniciar(event:FlexEvent):void{ 
      radio.addEventListener(MouseEvent.CLICK,seleccionar) 
      } 
      private function seleccionar(event:MouseEvent):void{ 
    
       if (seleccionado==false)
       {
            event.target.selected=true; 
            seleccionado=true; 
        }
        else
        this.deseleccionar();    
      } 
      public function deseleccionar():void{ 
         seleccionado=false; 
         radio.selected=false; 
      } 
    
]]>
 
</mx:Script> 
   <mx:RadioButton width="22" id="radio"/> 
   <mx:TextInput width="348" id="tituOpcion"/> 
</mx:HBox>




y aca esta el codigo del proyecto



Código ActionScript :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="464" height="300" title="Pregunta Objetiva" creationComplete="iniciar(event)"> 
   <mx:Script> 
   <![CDATA[
       import comun.Opciones;  
         import mx.events.FlexEvent; 
         private var numOpciones:Number=0; 
         public function iniciar(event:FlexEvent):void{ 
         masOp.addEventListener(MouseEvent.CLICK,agregarOpcion); 
         menOp.addEventListener(MouseEvent.CLICK,quitarOpcion); 
         } 
         private function agregarOpcion(event:MouseEvent):void{ 
            if (numOpciones<5){ 
              numOpciones+=1
            var opcion:Opciones = new Opciones;
            listaOp.addChild(opcion);
            this.Activar(); 
            } 
         } 
         private function quitarOpcion(evnet:MouseEvent):void{ 
            listaOp.removeChildAt(numOpciones-1);
            numOpciones-=1
            this.Activar();
         } 
         public function Activar():void{ 
            if (numOpciones<=0)
            menOp.enabled = false;
            else
            menOp.enabled = true;
         } 
       
]]>
 
   </mx:Script> 
   <mx:Label x="10" y="19" text="Titulo de Pregunta"/> 
   <mx:TextInput x="10" y="45" width="360"/> 
   <mx:Button x="74" y="75" label="+" id="masOp"/> 
   <mx:Button x="122" y="75" label="-" id="menOp" enabled="false"/> 
   <mx:Label x="10" y="77" text="Opciones"/> 
   <mx:VBox x="10" y="103" height="147" width="424" id="listaOp"> 
   </mx:VBox> 
    
</mx:Panel>   
</mx:Application>





espero que te sirva xD


Cualquier Duda o pregunta aca esta mi msn [email protected]

Por novita123

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Jun 2010 08:15 pm
Hola, gracias por tus ganas de ayudarme, disculpame si no fui claro.
Mi cada vez que yo agrego una opcion, todas aparecen, el problema es que cuando selecciono uno los otros se ben de deseleccionar, pero eso no pasa con mi componente Opciones. Como hago para que ellos los radios de cada instancia de mi componente sincronicen entre si. Gracias..

Por FlexandFlash

48 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Jun 2010 08:54 pm
ya te entendi compadre si lo que necesitas es eso pues no hay necesidad de crear un componente xD


aca esta el codigo xD no utilizo componentes :)

Código ActionScript :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="464" height="300" title="Pregunta Objetiva" creationComplete="iniciar(event)"> 
   <mx:Script> 
   <![CDATA[
      import mx.containers.HBox;
      import mx.controls.TextInput;
      import mx.controls.RadioButton;
        import mx.events.FlexEvent; 
         private var numOpciones:Number=0; 
         public function iniciar(event:FlexEvent):void{ 
         masOp.addEventListener(MouseEvent.CLICK,agregarOpcion); 
         menOp.addEventListener(MouseEvent.CLICK,quitarOpcion); 
         } 
         private function agregarOpcion(event:MouseEvent):void{ 
            if (numOpciones<5){ 
                 numOpciones+=1
              var opcion:RadioButton = new RadioButton();
              var texto:TextInput = new TextInput();
              texto.width=348;
              opcion.groupName='grupo';
              var Contedor:HBox = new HBox();
              Contedor.addChild(opcion);
              Contedor.addChild(texto);
              listaOp.addChild(Contedor);
              this.Activar(); 
            } 
         } 
         private function quitarOpcion(evnet:MouseEvent):void{ 
             listaOp.removeChildAt(numOpciones-1);
            numOpciones-=1
            this.Activar();
         } 
         public function Activar():void{ 
            if (numOpciones<=0)
            menOp.enabled = false;
            else
            menOp.enabled = true;
         } 
       
]]>
 
   </mx:Script> 
   <mx:Label x="10" y="19" text="Titulo de Pregunta"/> 
   <mx:TextInput x="10" y="45" width="360"/> 
   <mx:Button x="74" y="75" label="+" id="masOp"/> 
   <mx:Button x="122" y="75" label="-" id="menOp" enabled="false"/> 
   <mx:Label x="10" y="77" text="Opciones"/> 
   <mx:RadioButtonGroup id="grupo"/>
   <mx:VBox x="10" y="103" height="147" width="424" id="listaOp">  
   </mx:VBox>  
</mx:Panel>   
</mx:Application>



si necesitas algo cuenta conmigo

Por novita123

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Jun 2010 09:30 pm
y aca esta la otra solucion que es con el componente cualquiera de las dos formas te funciona xD


Codigo del Componente xD

Código ActionScript :

<?xml version="1.0" encoding="utf-8"?> 
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="24" creationComplete="iniciar(event)"> 
<mx:Script> 
   
<![CDATA[
   import mx.controls.RadioButtonGroup;
   import mx.core.Application;  
      import mx.events.FlexEvent; 
      public var seleccionado:Boolean=false;
      
      [Bindable]
      private var _nombreGrupo:RadioButtonGroup;
      
      public function set asignargrupo(value:RadioButtonGroup):void
      {
         this._nombreGrupo = value;
      }
      
      public function iniciar(event:FlexEvent):void{ 
         radio.addEventListener(MouseEvent.CLICK,seleccionar) 
      } 
      private function seleccionar(event:MouseEvent):void{ 

            
      }
]]>
 
</mx:Script> 
   <mx:RadioButton width="22" id="radio" group="{_nombreGrupo}"/> 
   <mx:TextInput width="348" id="tituOpcion"/> 
</mx:HBox>




y aca esta el Codigo del proyecto que tiene incluido el componente :)

Código ActionScript :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="464" height="300" title="Pregunta Objetiva" creationComplete="iniciar(event)"> 
   <mx:Script> 
   <![CDATA[
      import comun.Opciones;
      import mx.containers.HBox;
      import mx.controls.TextInput;
      import mx.controls.RadioButton;
        import mx.events.FlexEvent; 
         private var numOpciones:Number=0; 
         public function iniciar(event:FlexEvent):void{ 
         masOp.addEventListener(MouseEvent.CLICK,agregarOpcion); 
         menOp.addEventListener(MouseEvent.CLICK,quitarOpcion); 
         } 
         private function agregarOpcion(event:MouseEvent):void{ 
            if (numOpciones<5){ 
                 numOpciones+=1
            var opcion:Opciones = new Opciones();
            opcion.asignargrupo = this.grupo;
              listaOp.addChild(opcion);
              this.Activar(); 
            } 
         }
         
         private function quitarOpcion(evnet:MouseEvent):void{ 
             listaOp.removeChildAt(numOpciones-1);
            numOpciones-=1
            this.Activar();
         } 
         public function Activar():void{ 
            if (numOpciones<=0)
            menOp.enabled = false;
            else
            menOp.enabled = true;
         } 
       
]]>
 
   </mx:Script> 
   <mx:Label x="10" y="19" text="Titulo de Pregunta"/> 
   <mx:TextInput x="10" y="45" width="360"/> 
   <mx:Button x="74" y="75" label="+" id="masOp"/> 
   <mx:Button x="122" y="75" label="-" id="menOp" enabled="false"/> 
   <mx:Label x="10" y="77" text="Opciones"/> 
   <mx:RadioButtonGroup id="grupo"/>
   <mx:VBox x="10" y="103" height="147" width="424" id="listaOp">  
   </mx:VBox>  
</mx:Panel>   
</mx:Application>





Cualquier duda me cuentas :cool: [email protected] Solo para messenger no respondo correos


cualquiera de las dos formas te sirven pruebalas y me cuentas como te fue


Saludos desde Colombia :)

Por novita123

19 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Jun 2010 09:54 pm
Gracias novita123, te pasaste, muchas gracias es la solucion a mi problema, ya estaba llegando a la solucion de otra forma un poco mas larga. pero con tu ayuda ya esta todo listo. Habia creado una funcion en el componente principal que evalua la situacion de las opciones si estan o no seleccionados . esta funcion era invocada desde cada radio buton de mi componente, enviando ademas una varible diciendole que el era que el que lo invocaba y al resto lo desabilite. Solo me faltaba deseleccionar a resto. AL parecer flex nos facilita bastante solo es cuestion de conocer mucho mas, la solucion anterior la utilizaba en as3 para el caso de los menus, donde se selecciona un boton y los otros se deseleccionan. Gracias muchas graciass...Desde Peru. Tocache.

Por FlexandFlash

48 de clabLevel



 

firefox
Citar            
MensajeEscrito el 09 Jun 2010 10:06 pm
tranquilo para eso estan los amigos xD

Por novita123

19 de clabLevel



 

firefox

 

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