sábado, 22 de abril de 2017

Las Ventanas (Windows) y los Canvas de Contenido (Content Canvases)

Objetivos:
 Describir la relación entre las Ventanas (Windows) y los Canvases.
 Crear ventanas y Canvases de Contenido (Content Canvases).
 Mostrar un módulo Forms en varias ventanas.
 Mostrar un módulo Forms  en varios Layouts.



NOTA: Usamos como ejemplo la Base de Datos: ORCL, la cual viene por defecto en cualquier versión de ORACLE.
______________________________________________________________________________________
Los Canvases y Los Windows.
Con Forms Builder puede mostrar una aplicación en varias ventanas utilizando sus objetos de visualización: Windows Canvases.

¿Qué es un Window?
Un Window es un contenedor para todos los objetos visuales que forman una aplicación Forms. Es similar a un marco de imagen vacío. El gestor de Windows proporciona los controles de una ventana que permiten que se desplace, se mueva, cambie el tamaño y se minimice. Un solo Form puede incluir varias ventanas.

¿Qué es un Canvas?
Un Canvas es una superficie dentro de un Window en el que coloca objetos visuales como Items de interfaz y gráficos. Es similar al lienzo sobre el que se pinta un cuadro. Para ver un Canvas y su contenido en tiempo de ejecución, debe mostrarlo en una ventana. Un Canvas siempre aparece en el Window al que está asignado.

Nota: Cada Item debe referirse a no más de un Canvas. Los Items aparecen en el Canvas al que están asignados, a través de su propiedad Canvas. Recuerde que si la propiedad Canvas de un Item no se especifica, dicho Item se dice que es un Null-Canvas Item  y no se mostrará en tiempo de ejecución.

¿Qué es un Viewport?
Un viewport es un atributo del Canvas. Representa la porción visible o la vista sobre él.
______________________________________________________________________________________
El Content Canvas.
Forms Builder ofrece diferentes tipos de Canvas. Un Canvas de Contenido (Content Canvas) es el Canvas Base que ocupa todo el panel de contenido de la ventana (Window) en la que se muestra. El Content Canvas es el tipo de Canvas predeterminado.

Relación entre los Windows y los Content Canvases.
Debe crear al menos un Content Canvas para cada Window en su aplicación. Cuando ejecuta un Form, solo se puede mostrar un Content Canvas en un Window a la vez, aunque se puede asignar más de un Content Canvas al mismo Window en tiempo de diseño.

En tiempo de ejecución, un Content Canvas abarca totalmente su ventana. A medida que el usuario cambia el tamaño de la ventana, Forms cambia el tamaño del Canvas automáticamente. Si la ventana es demasiado pequeña para mostrar todos los Items del Canvas, Forms desplazará automáticamente el Canvas para que el Item actual se visualice.

Nota: Puede asignar varios Content Canvases a un Window; Sin embargo, sólo se puede mostrar un Content Canvas a la vez.
______________________________________________________________________________________
La Ventana Predeterminada (Default Window).
Cuando crea un módulo Form, Forms Builder crea una ventana implícitamente. Por lo tanto, cada módulo Form nuevo tiene una ventana predefinida que se denomina WINDOW1. Puede eliminar, cambiar el nombre y/o modificar sus atributos.

Usos y Ventajas de las Ventanas.
Puede crear ventanas adicionales en las que desea mostrar su aplicación Forms. Las ventanas proporcionan la capacidad de hacer lo siguiente:
 Mostrar dos o más imágenes de contenido a la vez.
 Modularizar el contenido del Forms.
 Cambiar entre Canvas sin reemplazar el inicial.
 Aprovechar la funcionalidad del gestor de ventanas, Eje: minimizar.
______________________________________________________________________________________
Mostrando un módulo Forms en varias ventanas.
Con varias ventanas puede:
 Mostrar más de un Content Canvas al mismo tiempo.
 Cambiar entre Content Canvases sin necesidad de reemplazar el primero.
 Separar el módulo Forms en varios diseños.
 Utilizar las funciones del administrador de ventanas, como permitir al usuario cambiar el tamaño o cerrar una ventana.

Puede crear dos tipos diferentes de ventanas:
 Una ventana modal (modal window) es una ventana restringida a la que el usuario debe responder antes de mover el foco de entrada a otra ventana. Ventanas modales:
---Debe descartarse antes de que se pueda devolver el control a una ventana no-modal.
---Se activa tan pronto como se muestra.
---Requiere algún medio de salida.
 Una ventana no-modal (modeless window) es una ventana sin restricciones de la cual el usuario puede salir libremente. Ventanas no-modal:
---Es posible mostrar varias ventanas no-modal simultáneamente.
---Puede mostrarse y no estar activas.
---Son el tipo de ventana predeterminada.
______________________________________________________________________________________
Creando Ventanas.
Para crear una nueva ventana, realice los pasos siguientes:
1. Seleccione el nodo Windows en el Navegador de objetos y haga clic en Crear.
2. Aparecerá una nueva entrada de ventana con un nombre predeterminado de WINDOWXX.
3. Configure las propiedades de la ventana según sus necesidades.

Nota: Para que su nueva ventana se muestre, debe especificar su nombre en la propiedad Windows del Canvas en cuestión. Para mostrar una consola a los usuarios finales, establezca la propiedad Console Window del Form con la ventana en la que desea mostrarla. Para ocultar la consola, establezca la propiedad en <Null>.
Las Propiedades del Window.
Las propiedades de las ventanas se establecen para determinar su comportamiento y apariencia. Algunas de estas propiedades son:
1. X/Y Position: Especifica la ubicación de la ventana dentro de su contenedor.
2. Title: Es el título a mostrar; Si no se especifica, utiliza el nombre indicado en la propiedad Name.
3. Horizontal/Vertical Toolbar Canvas: Especifica la barra de herramientas del Canvas que se mostrará horizontalmente en la parte superior o verticalmente en la izquierda de la ventana.
4. Modal: Especifica si la ventana es modal, lo que obliga al usuario a descartar la ventana antes de que pueda continuar cualquier otra interacción en las demás ventanas.
5. Show Horizontal/Vertical Scroll Bar: Especifica si una barra de desplazamiento horizontal o vertical debe mostrarse en la ventana.
6. Hide on Exit: Especifica si Forms oculta la ventana automáticamente cuando el usuario navega a un Item de otra ventana.

Para obtener una descripción de otras propiedades que afectan al comportamiento de las ventanas, haga clic en la propiedad en la paleta de propiedades y presione [F1].

______________________________________________________________________________________
Sugerencias GUI.
También llamadas GUI Hints son recomendaciones del administrador de ventanas sobre la apariencia y funcionalidad de la ventana. Bajo el grupo Funcional hay algunas propiedades que permiten hacer estas recomendaciones:
 Close Allowed: Habilita el mecanismo para cerrar la ventana (Forms responde a los intentos de cerrar la ventana disparando el Trigger: WHEN-WINDOW-CLOSED).
• Move/Resize Allowed: Especifica si sera posible mover y/o cambiar el tamaño de la ventana.
• Maximize/Minimize Allowed: Especifica si el usuario puede ampliar o iconificar la ventana.
 Inherit Menu: Especifica si la ventana muestra el menú de Forms actual.
______________________________________________________________________________________
Visualización de un Módulo Forms en varios diseños.
Puede tener más de un Content Canvas en su aplicación Forms. Sin embargo, recuerde que solo uno puede mostrarse en un Windows a la vez. Para mostrar más de uno al mismo tiempo, puede asignar cada Content Canvas a una ventana diferente y así poder mostrar el módulo Form en múltiples diseños o superficies.

Creación de un Content Canvas.
Puede crearlo de forma implícita o explícita.

Forma Implícita:
Hay dos maneras de crear implícitamente un Content Canvas:
1. Layout Wizard: Cuando utiliza el Asistente de diseño para organizar Items en un Canvas, el asistente le permite seleccionar en que Canvas desea colocar los Items. Asimismo puede optar por crear un nuevo Canvas cuyo nombre tendría el siguiente patron:  CANVASXX.
2. Layout Editor: Cuando no existen Canvases en un módulo y se invoca el Editor de diseño; Forms Builder crea un Canvas predeterminado en el que puede colocar Items.

Forma Explícita:
Puede crear un nuevo Content Canvas de forma explícita mediante el icono Crear en el Navegador de objetos.
Realice los pasos siguientes:
1. Haga clic en el nodo Canvas del Navegador de objetos.
2. Haga clic en el icono Crear.
3. Se muestra un nuevo Canvas con un nombre predeterminado de CANVASXX.
4. Establezca las propiedades según sus necesidades.

Nota: Si hace doble clic en el icono de un Canvas en el Navegador de objetos, invocará el Editor de diseño en lugar de la Paleta de propiedades.
______________________________________________________________________________________
Las Propiedades de los Content Canvases.
Puede establecer propiedades que determinan cómo se mostrará el Canvas. Para que se muestre un Canvas en tiempo de ejecución, debe especificar su propiedad Window.

En el grupo General, puede elegir el Tipo de Canvas. Esta entrega cubre el tipo Content Canvas; Otros tipos de Canvases se presentan en futuras publicaciones.

En el grupo Funcional, puede establecer Raise on Entry para especificar si el Canvas se muestra al frente de la ventana (Por encima de los demás Canvases) cuando el usuario navega hacia un Item contenido en dicho Canvas. Utilice esta propiedad cuando el Canvas comparte la misma ventana con otros Canvases.

Nota: Forms siempre asegura que el Item actual sea visible. Incluso si Raise on Entry está establecido en No, Forms traerá el Canvas al frente de la ventana si el usuario navega a un Item que se oculta detrás de otros Canvases.

Sugerencia de Rendimiento: Para reducir el tiempo requerido en mostrar la pantalla inicial, mantenga el número de Items inicialmente visualizados en un mínimo. Puede ocultar Items, como Canvases, que no sean necesarios en lo inmediato. Para ello, establezca la propiedad Raise on Entry en y Visible en No.
______________________________________________________________________________________
Ajunto el Módulo Form creado para esta práctica: Link.

Nota: Se crearon algunos Triggers tipo: WHEN-BUTTON-PRESSED y un WHEN-NEW-FORM-INSTANCE que muestran ventanas y sus contenidos.
______________________________________________________________________________________
Fuente: Oracle Forms Developer 10g: Build Internet Applications.