18 enero 2013

Omnis Studio 6: Subformularios dinámicos

 

Otra interesante novedad consiste en un tipo especial de subformulario (subform) o grupo de subformularios que (a efectos visuales) se comportan como si se tratara de ventanas separadas para el cliente de JavaScript. No debemos confundir los nuevos subformularios con los ya conocidos subformularios, ya que éstos no tienen nada que ver con los anteriores, de hecho se muestran con barra de título y bordes de tamaño variable, de modo que el usuario puede desplazarlos o cambiar su tamaño dinámicamente dentro de del espacio acotado en la ventana del navegador por el "remote form" principal o contenedor del grupo de subformularios. Esto nos permite crear interfaces de usuario altamente flexibles en nuestras aplicaciones para la web y dispositivos móviles, permitiendo un alto grado de interoperatividad con el usuario.

Los nuevos subformularios son mostrados al cliente en tiempo de ejecución (runtime) sobre el "remote form" principal, pudiendo ser abiertos en el contexto de un "paged pane" o sobre el "remote form" directamente. El subformulario o grupo de subformularios estará disponible bajo un nuevo objeto denominado "Subform Set" (SFS), creado por el "JavaScript client" en tiempo de ejecución, a fin de permitir la gestión del grupo de subformularios. Individualmente cada subformulario es tratado en su librería como una clase "remote form" estándar, pero debe ser añadida y referencia bajo un objeto SFS.

Orden del grupo SFS

Los subformularios en un grupo SFS mantienen un "orden de apilamiento" determinado por su disposición en la pantalla, así el subformulario de nivel superior en el conjunto aparecerá al frente o superpuesto sobre el resto. Al hacer clic sobre un "form" inferior el orden de apilamiento cambiará para situarse en el primer nivel de la pila. Sólo permanecerán activos los controles sobre el "form" situado al frente. Existe un límite de 256 instancias "remote form" incluyendo las correspondientes a los subformularios controlados desde una única instancia "remote task". Es posible trabajar con varios conjuntos SFS al mismo tiempo (permitido pero no muy recomendable) pero, no existe un orden o tipo de agrupamiento con relación al total de los grupos.

¿Cómo se crea un SFS?

Un nuevo conjunto de comandos nos permitirá abrir y gestionar los subformularios sobre un conjunto SFS mediante métodos $clientcommand(), pero deberán ser ejecutados por el servidor de aplicaciones Omnis y en el contexto de la instancia actual del "remote form" ($cinst), el $clientcommand() no funcionará si el método es ejecutado en el cliente. El método $clientcommand() requiere de dos parámetros: el cCommand a ejecutar y una variable wRow con los parámetros del comando, su sintaxis es:

Do $cinst.$Clientcommand(cCommand,wRow)

donde $cinst es la instancia actual de "remote form".

No hay comentarios: