Comunidad de diseño web y desarrollo en internet online

Añadir un objeto propio mediante un addChild()

Citar            
MensajeEscrito el 28 Feb 2011 08:52 pm
Hola a todos y sigo con mis preguntas:

Estoy añadiendo campos a un formulario dinámicamente, es decir, al darle al botón "AÑADIR", automaticamente aparecen un campo de texto y dos botones, uno para incluir el contenido de dicho campo en un fichero y otro para eliminar los elementos recien creados, por si nos hemos equivocado y no queriamos introducir más datos... El caso es que me parece un rollo crear los 3 elementos en cada llamada, así que pensé en crear una clase que lo hiciera, tal que así:

Código Flex :

package FormPlus
{

   import spark.components.Button;
   import spark.components.TextInput;

   public class Competencias extends Object
   {
      public var bot:Button;
      public var bot2:Button;
      public var prueba:TextInput;
      
      public function Competencias(bot:Button, bot2:Button, prueba:TextInput)
      {
         this.bot = bot;
         this.bot2 = bot2;
         this.prueba = prueba;
         bot.label = "Eliminar";
         bot2.label = "Incluir";
      }
   }
}


Luego he intentado modificar el código AS3 para incluir los campos de formulario, pero me dice que no puedo incluir un objeto de tipo Competencias en un addChild, tal que así...

Código Flex :

public function crearFormP(event:Event): void {
            var bot:Button = new Button();
            var bot2:Button = new Button();
            var prueba:TextInput = new TextInput();
            var pp:Competencias = new Competencias(bot,bot2,prueba);
            this.addElement(pp); //Aquí falla
         }


Description Resource Path Location Type
1067: Implicit coercion of a value of type FormPlus:Competencias to an unrelated type mx.core:IVisualElement. DIPeval.mxml /DIPeval/src line 364 Flex Problem

Perdonad mi ignorancia, soy nueva en Flex, y voy aprendiendo por días, ¿qué estoy haciendo mal?

Por Claudi2011

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Feb 2011 10:25 pm
BuenAS:

El problema viene de que la clase Competencias extiende a Objet, y no se puede añadir un Object a un componente spark. Haz que extienda, por ejemplo, a Group, que sí soporta el layout spark.

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome
Citar            
MensajeEscrito el 28 Feb 2011 10:42 pm
Con la corrección no me da fallos de compilación, GRACIAS!!!

Pero no sé porqué no me lo muestra en el formulario, al darle a añadir, se queda igual, si lo hago uno por uno en vez de a través del nuevo objeto (ahora grupo) funciona, pero si lo hago a través de la clase no. ¿Teneis idea de a qué se debe esto?

Por Claudi2011

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 28 Feb 2011 10:51 pm
...en la clase Competencias no haces el addElement y por tanto no se añaden los elementos que pasas.

Por otro lado, quizá te convenga utilizar un VGroup, si quieres un alineamiento vertical; o HGroup si quieres un alineamiento horizontal. Si utilizas Group, dale un layout, o posiciona los elementos dando valores a x, y de cada elemento que añadas. Como veas más conveniente.

Y quizá sea interesante que lo hagas primero "visualmente": añadiendo en la vista de diseño un Group (VGroup o HGroup) e ir jugando con su layout hasta que sea el que andas buscando. Cuando te guste, lo generas por código, y puede que te ahorres bastantes ensayos prueba/error :)

Un saludo.

Por Lukánicos

Claber

468 de clabLevel



Genero:Masculino  

chrome

 

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