Formulario dinámico IV

Ejemplo de campos dinámicos. Añadir campos según una estructura fija.

Ejemplo de campos dinámicos. Añadir campos según una estructura fija.

Asi se ve en el formulario en PDF.

Así se ve en el formulario en PDF.

En este ejemplo, vamos a ver cómo, teniendo unos campos que se pueden repetir indefinidamente, sólo aparezcan en el formulario una vez, y la persona que lo rellene añada tantas repeticiones como le sean necesarias. Para ello, tendremos los campos necesarios, un botón para añadir el grupo de elementos, un botón para eliminar el exceso de elementos y un campo invisible donde se unirá el contenido de todos los grupos de elementos con el formato que queramos darle.

Primero habrá que crear un subformulario («Form1») donde incluir todos los elementos de este ejemplo. Ese subformulario contendrá otro subformulario («destacado») en el que estarán incluidos los campos de texto que queremos tomar de base para luego ir repitiendo con la acción del botón y un botón para eliminar cada una de las repeticiones independientemente. Este botón tendrá incluído el siguiente script:

----- Root.Form1.destacado.btn_Delete::click: - (JavaScript, cliente) ------------------------------
this.resolveNode("destacado").instanceManager.removeInstance(this.parent.index);

Aquí sólo tendremos que cambiar el texto «destacado» por el nombre del subformulario donde están incluídos los campos.

Luego insertaremos otro subformulario («addDestacado») con un botón, al que le daremos la función de repetir el grupo de elementos anterior («destacado») tantas veces como clicks le demos. Para añadir esa función, escribimos este script:

----- Root.Form1.addDestacado.btn_AddDestacado::click: - (JavaScript, cliente) ---------------------
xfa.form.Root.Form1.destacado.instanceManager.addInstance(true);
En este script habría que modificar la ruta del subformulario que queremos repetir («Root.Form1.destacado»).
Para terminar, insertamos un campo de texto, que haremos invisible, donde recopilaremos la información que contengan todos los campos, unidos como queramos (espacios, tabuladores, puntos, retornos…).  Para hacer esto, tendremos que escribir este script:
----- Root.Form1.LoMasDestacado::calculate: - (JavaScript, cliente) --------------------------------
var nTexto = "";
for (var i = 0; i < _destacado.count; i++)
{
var oObjeto = Form1.resolveNode("destacado[" + i + "]");
nTexto = nTexto+"\u0009"+oObjeto.pagina.rawValue+"\u0009"+oObjeto.titulo.rawValue+"\u000a"+oObjeto.comentario.rawValue+"\u000a";
}
nTexto;

Dentro de este script, habrá que cambiar las palabras «pagina, titulo y comentario» en función del nombre que hayamos dado a los campos de texto y el texto entrecomillado por los caracteres o símbolos con los que queramos unir dichos campos. «\u0009» corresponde al código para el retorno de carro.

Este último campo será con el que hagamos la conexión de datos con InDesign.

~ por dmartinr en noviembre 27, 2008.

4 comentarios to “Formulario dinámico IV”

  1. joer, genial, tuve que adaptar un poco la lógica a mi caso en particular pero la idea me funcionó. Muchas gracias por la ayuda

  2. Estimados
    queria saber como hago para seleccionar un elemento de una lista de estos y que cada uno de estos me traiga mas campos para completar segun el elemento que halla escogido.

    Es posible esto?

    gracias, slds

  3. Buenas noches…. estoy intentando aprender paso a paso con tu web, y la verdad me parece un lujo….. pero de todos modos no encuentro la manera de hacer una formulario, que mas o menos si he visto en la web donde nos mandas bajar para aprender ejemplos, pero que lo intento hacer y no sale y solo quiero hacer unas tablas como si fuera de almacen dejando el precio fijo para esa fila de celdas…. la distribucion seria, concepto. Descripcion (todo metido a mano) cantidad (numerico) precio fijo (aqui es donde tengo el problema no se como dejar el precio incluido fijo) y la ultima celda es importe que es la multiplicacion de la cantidad por el precio fijo, No se como hacerlo, por favor me puedes orientar??????

    Gracias y un abrazo

  4. Buenos días, he publicado una entrada en la que trato de explicarte cómo hacer lo que quieres. No he podido prepararla demasiado bien, pero espero que te sea de utilidad. Si tienes cualquier duda me puedes escribir a etiquetaxml@gmail.com.

    https://etiquetaxml.wordpress.com/2012/05/23/formulario-dinamico-iv-2/

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: