lunes, 10 de abril de 2017

Items de no Entrada (Noninput Items)

Objetivos:
 Identificar los tipos de Items que no permiten entrada de datos.
 Crear Items de Visualización (Display Items).
 Crear Items de Imagen (Image Items).
 Crear Botones.
 Crear Items Calculados (Calculated Items).
• Crear Items de Árbol Jerárquico (Hierarchical Tree Item).
 Crear un Bean Area Item.

NOTA: Usamos como ejemplo la Base de Datos: ORCL, la cual viene por defecto en cualquier versión de ORACLE.
______________________________________________________________________________________
¿Qué son los Items de No Entrada?
Algunos tipos de items de Oracle Forms Developer no aceptan entradas por parte del usuario (Noninput Items); Sin embargo, proporcionan un medio eficaz de acceder a los datos y así poder iniciar acciones. A continuación mostramos cómo crear este tipo de Items.

Los Noninput Items.
Noninput Item es un término genérico para referirse a los tipos de Items que no aceptan la entrada directa del usuario. Sin embargo, puede establecer el valor de algunos de estos mediante programación. Se pueden dividir en dos grupos:

Noninput Items que pueden mostrar datos.
• Display Items.
• Image Items.
• Calculated Items.
• Hierarchical tree items.

Noninput Items que no pueden mostrar datos. 
 Botones.

El Bean Area Item puede caer en cualquiera de estas categorías, dependiendo de la funcionalidad del JavaBean implementado.

______________________________________________________________________________________
Usando Noninput Items.
Utilícelos para mejorar su aplicación mostrando datos adicionales (a menudo de una tabla que no sea de base).

______________________________________________________________________________________
Display Items.
Es similar a un Text Item, excepto que no se puede editar, escribir ni navegar sobre él en tiempo de ejecución. Un Display Item es un cuadro de texto de sólo lectura cuyo valor debe buscarse o asignarse mediante programación.

Los Display Items:
 Muestran información adicional.
 Muestran valores de datos derivados.

Creando un Display Item.
Se puede crear un Display Item utilizando:
 El Editor de Diseño (Layout Editor).
 El icono Creardel Navegador de Objetos (se crea un Text Item y luego debe cambiar la propiedad Item Type a Display Item).
 La propiedad Item Type para convertir un Item existente en un Display Item.

Sea cual sea el método que elija, puede establecer las propiedades requeridas  del Item en la Paleta de Propiedades. Establezca la propiedad Database Item end No para un Display Item cuyo valor no se almacena en la tabla base. Puede asignar una máscara de formato a un Display Item de fila única estableciendo su propiedad Format Mask.

______________________________________________________________________________________
Image Items.
Puede utilizar imágenes como objetos gráficos dentro de un módulo de Forms. Una imagen gráfica se muestra automáticamente y no se puede manipular en tiempo de ejecución. Se puede importar desde la base de datos o desde el sistema de archivos.

¿Qué es un Image Item?
Un Image Item es un control de interfaz especial que puede almacenar y mostrar imágenes vectoriales o escaneadas. Al igual que los Text Items almacenan y muestran valores de VARCHAR2, NUMBER DATE, los Image Items almacenan y muestran imágenes.

Al igual que otros Items, los Image Items pueden pertenecer a bloque de datos como bloques de control.

Mostrando Image Items.
Puede rellenar un Image Item mediante uno de los métodos siguientes:
 Leyendo desde una columna de base de datos LONG RAW o BLOB.
 Utilizando un Trigger para rellenarlo mediante programación.

Almacenando Imágenes.
Puede almacenar imágenes en la base de datos o en el sistema de archivos.
Cuando inserta imágenes en la base de datos mediante una función de almacenamiento (commit), se comprimen automáticamente mediante la compresión de imágenes de Oracle.
Donde se Almacena la Imagen
Descripción
Base de Datos
Las Columnas LONG RAW comprimen images que puede ser de hasta dos gigabytes, las BLOB puede comprimir hasta cuatro gigabytes.
Archivo
Cualquier formato de archivo compatible.
Nota: Para conservar memoria del servidor de aplicaciones al mostrar items de imagen grandes, reduzca el número de registros que se almacenan en el búfer manipulando la propiedad Number of Records Buffered.

Nota Técnica.
También puede rellenar un Image Item con un BFILE, pero necesitará utilizar DBMS_LOB para hacerlo.

Formatos de Archivo de Imagen.
Forms Builder admite los siguientes formatos de imagen:
Sufijo
Descripción
Image Items
BMP
MS Windows and OS/2 BitMap Picture
Read/Write
CALS
CALS type raster
Read/Write
GIF
CompuServe
Read/Write
JFIF
JPEG File Interchange Format
Read/Write
TIFF
Tag Image File Format
Read/Write
JPEG
Joint Photographic Experts Group
Read/Write
PICT
Macintosh Quickdraw Picture
Read/Write
RAS
Sun Raster
Read/Write
TPIC
Truevision Raster Graphics Array Picture
Read/Write
Para reducir el tráfico de red, limite el número de Image Items e imágenes de fondo que se deben descargar desde el servidor de aplicaciones. Puede implementarlos como archivos JAR para reducir el tráfico de red o puede descargarlos de una manera alternativa.

Por ejemplo, para mostrar un logotipo de empresa en su aplicación, puede incluir la imagen en la página HTML que se descarga al inicio de la aplicación en lugar de recuperar la imagen de la base de datos o del sistema de archivos. La página HTML se puede almacenar en caché.

Creando un Image Item.
Una imagen se puede crear de tres maneras:
 Mediante el uso de la herramienta Image Itemen el Editor de Diseño.
 El icono Creardel Navegador de Objetos (se crea un Text Item y luego debe cambiar la propiedad Item Type a Image).
 La propiedad Item Type para convertir un Item existente en un Image.

Nota: Recuerde establecer la propiedad Database Item en No para un Image Item cuyo valor no se almacena en la tabla base.

Algunas Propiedades de los Image Items.
Establezca las siguientes propiedades para afectar la apariencia y el comportamiento del Image Item:
 Image Format: Formato en el que la imagen se almacenará en la base de datos.
 Image Depth: Ajuste de profundidad para la imagen que está siendo leída desde, o está siendo escrita en el sistema de archivos (Original, Monochrome, Gray, LUT o RGB).
 Compression Quality: Grado de compresión para un Image Item que se lee desde, o se escribe en un archivo (None, Minimum, Low, Medium, High, or Maximum).
 Display Quality: Resolución utilizada para mostrar el Image Item; Controla el balance entre calidad y rendimiento (High, Medium, or Low).
 Sizing Style: Determina la cantidad de imagen que se muestra cuando el tamaño de la imagen no coincide con el tamaño del Item(Crop- corta los bordes de la imagen para que encaje en el área de visualización del Item; Adjust - Nivela la imagen de modo que quede dentro del área de visualización del Item).
• Show Horizontal/Vertical Scroll Bar: muestra barras de desplazamiento para activar el desplazamiento de la imagen que no encaje en el área de visualización del Item.

Nota: Los Image Items no tienen la propiedad Tipo de Dato (Data Type). Si establece la propiedad Database Item en Sí, Forms Builder entiende que el tipo de datos es LONG RAW.

______________________________________________________________________________________
Los Botones.
Un Botón es un objeto de interfaz al que se hace clic para iniciar una acción. Un botón se muestra normalmente como un rectángulo con una etiqueta descriptiva en su interior. Los botones no pueden almacenar ni mostrar valores.

Puede reforzar su módulo Forms agregando botones para proporcionar acceso rápido y directo a las operaciones más necesarias.

Los Botones y sus Estilos.
Forms Builder admite dos estilos de botones:
• Text Button: Se muestra con una Etiqueta/Label de texto sobre el botón.
• Iconic Button: Se muestra con un gráfico bitmapped en el botón, a menudo se utiliza en las barras de herramientas.

Los Botones y sus Acciones.
Algunas acciones comunes regularmente invocadas por un Botón:
• Mover el foco de entrada.
• Mostrar un LOV.
• Mostrar un editor.
• Mostrar otra ventana.
• Realizar validaciones preliminares.• Guardar datos.
• Emitir una consulta.
• Realizar cálculos.

Nota: En algunos gestores de ventanas (window managers), los botones no aceptan el enfoque de entrada (Input Focus). En estas plataformas, la propiedad Keyboard Navigable no tiene efecto y los usuarios sólo pueden interactuar con los Items utilizando el mouse; Osea, al hacer clic en un botón no se mueve el Focus, sino que este último permanece donde estaba activo antes de que el usuario pulsara el botón.

Creando un Botón.
Se puede crear un Botón mediante:
• La herramienta Botón en el Editor de Diseño.
 El icono Creardel Navegador de Objetos (se crea un Text Item y luego debe cambiar la propiedad Item Type a Push Button).

Notas:
 Puede utilizar el ratón para cambiar el tamaño y mover el botón una vez que lo ha creado.
 Los archivos Image Icon para botones icónicos deben estar en formato GIF o JPEG.

Algunas Propiedades de los Push Buttons.
• Label: Etiqueta de texto que aparece en el botón en tiempo de ejecución.
• Iconic: Especifica si el botón se muestra como un icono en lugar de como una etiqueta.
• Icon Filename: Nombre del archivo que contiene el icono (sólo el nombre de archivo sin la extensión, como "lista", no "lista.gif").
• Default Button: Especifica si el botón debe ser el predeterminado del bloque, que puede seleccionarse implícitamente pulsando [Tab] sin necesidad de navegar ni utilizar el ratón.
• Mouse Navigate: Especifica si Forms navega al Item cuando hace clic con el ratón.
• Tooltip: Texto de ayuda que aparece debajo del botón cuando el ratón se mueve sobre él.
• Tooltip Visual Attribute Group: atributo visual usado para el Tooltip.

Nota: El Default Button puede estar bordeado o resaltado de una manera única para distinguirlo de otros botones pulsadores.

______________________________________________________________________________________
Los Items Calculados.
Con un Item calculado puede de forma declarativa basar valores de ítems en cálculos que implican uno o más valores de variables. Por ejemplo, puede utilizar un Item calculado para mostrar el total acumulado de la compensación total de los empleados.

Cualquier Item capaz de almacenar un valor puede utilizarse como un Item calculado, para ello solo tiene que establecer ciertas propiedades.

Modos de Cálculo.
Los cálculos se pueden expresar como una fórmula o como un resumen de todos los Items de un bloque. Forms Builder admite los siguientes modos de cálculo:
• Fórmula: El valor del Item calculado es el resultado de un cálculo horizontal que implica una o más variables de enlace, como Items del Form, variables globales y parámetros.
• Resumen (Summary): El valor del Item calculado es un cálculo vertical que implica los valores de un único Item sobre todas las filas dentro de un solo bloque.

Nota: Un Item calculado es de sólo lectura. Los usuarios finales no pueden insertar o modificar Items calculados. Por lo tanto, debe utilizar Display Items como Items calculados.

Propiedades del Item Calculado.
A diferencia de los otros Items cubiertos hasta ahora en esta publicación, no existe el valor Calculated Item para la propiedad Item Type. Luego de establecer algunas propiedades de cálculo específicas en un Item, este se convierte en un Item Calculado. Los Text Items y Display Items pueden operar como Items Calculados.

Propiedades:
 Calculation Mode: El método de computo (None, Formula o Summary).
 Fórmula: Expresión PL/SQL que determina el valor calculado (Cuando Calculation Mode es Formula); Puede calcular un valor o llamar un subprograma.
 Summary Function: El tipo de función resumen (Cuando Calculation Mode es Summary).
 Summarized Block: El bloque sobre el cual se resumirán todas las filas y así asignar el valor al ítem calculado; Si no se especifica, se asume el bloque actual.
 Summarized Item: Item cuyo valor se resume para asignar el valor al Item calculado; Requerido si el modo de cálculo es Summary.

Summary Functions.
Puede utilizar las funciones de agregación SQL para Items de resumen:
 AVG: El valor medio (media aritmética) del ítem sumarizado sobre todos los registros del bloque.
 COUNT: Cantidad de todas las instancias no nulas del Item resumido sobre todos los registros del bloque
 MAX/MIN: Valor máximo/mínimo del Item resumido sobre todos los registros del bloque.
 STDDEV: La desviación estándar de los valores del Item resumido sobre todos los registros del bloque.
 SUM: Suma de todos los valores del Item resumido sobre todos los registros del bloque.
 VARIANCE: La varianza (cuadrado de la desviación estándar) de los valores del Item resumido sobre todos los registros del bloque.

Calculated Item basado en una Fórmula.
Para crear un Item calculado basado en una fórmula, realice los pasos siguientes:
1. Cree un nuevo Item.
2. Abra sus propiedades.
3. Establezca la propiedad Calculation Mode a Formula.
4. Haga clic en Más para la propiedad Formula e ingrese la expresión PL/SQL que la define.
Nota: El Item fórmula no puede ser un Item de base de datos porque su valor es calculado por Forms, no consultados desde una columna de base de datos.

Reglas para Fórmulas de Items Calculados.
Al escribir fórmulas para Items Calculados, observe las siguientes reglas:
• La fórmula (y cualquier subprograma definido por el usuario que sea usado) no debe invocar ningún built-in que sea restringido.
• La fórmula (y cualquier subprograma definido por el usuario que sea usado) no puede ejecutar ninguna sentencia DML.
• No termine la expresión de PL/SQL con un punto y coma (;).
• Si la expresión PL/SQL implica una asignación, no introduzca una sentencia completa de PL/SQL. Forms Builder establece el código de asignación internamente.

Ejemplo:
Suponga que tiene un Item fórmula denominado Gross_Comp en el bloque EMPLOYEES de un Forms. Si establece la propiedad Formula en:
NVL(:employees.salary, 0) * NVL(:employees.commission_pct, 0)
Forms Builder convertirá internamente esta expresión a una sentencia completa:
:Employees.gross_comp := (NVL(:employees.salary, 0)*NVL(:employees.commission_pct, 0));

Item Calculado basado en Summary.
Para crear un Item Calculado basado en un resumen, realice los pasos siguientes:
1. Cree un nuevo Item.
2. Abra sus propiedades.
3. Establezca la propiedad Calculation Mode a Summary.
4. Seleccione la función deseada de la lista Summary Function.
5. En la lista Summarized Block, seleccione el bloque sobre el cual se resumirán todas las filas.
6. En la lista Summarized Item, seleccione un Item que será resumido.
Notas:
Un Summary Item es el Item Calculado al que se asigna el valor.
Un Summarized Item es el Item cuyos valores se resumen y luego se asignan al Summary Item.

Reglas para Summary Items.
Al crear Summary Items basados ​​en un resumen, observe las siguientes reglas:
• El Summary Item debe residir en el mismo bloque que el Summarized Item o en un bloque de control cuya propiedad de registro único esté establecida en Yes.
• El Summary Item debe residir en un bloque de control o en un bloque de datos cuya propiedad Query All Records o la propiedad Precompute Summaries está establecida en Yes. Nota: Esto garantiza que los registros mostrados (fetched) en el bloque y el valor resumido sean consistentes. De lo contrario, otro usuario puede posiblemente actualizar un registro que no se ha obtenido (fetched) todavía.
• El Summary Item debe tener la propiedad Data Type establecida en NUMBER, a menos que la función de resumen sea MAX o MIN. En este caso, el tipo de datos debe reflejar el de su Summarized Item asociado. Por ejemplo, un Summary Item que muestra la fecha más reciente (máxima) en la columna HIRE_DATE debe tener un tipo de datos DATE.
• Si los valores de los Summarized Items se basan en una fórmula, el Summarized Item debe residir en un bloque cuya propiedad Query All Records esté establecida en Yes.

______________________________________________________________________________________
Item de Árbol Jerárquico.
Un árbol jerárquico es un Item que muestra datos en forma de un navegador estándar.

Creación.
• En el Editor de Diseño:
---Haga clic en el icono Árbol jerárquico.
---Haga clic y arrastre el ratón sobre el Canvas para crear el objeto de árbol jerárquico.
---Establezca las propiedades relacionadas con el árbol jerárquico según sea necesario.
• En el Navegador de Objetos:
---Cree un nuevo Item con icono Crear.
---Establezca la propiedad Item Type en Hierarchical Tree.
---Establezca las propiedades relacionadas con el árbol jerárquico según sea necesario.

Propiedades del Item Árbol jerárquico.
Las propiedades del árbol jerárquico incluyen las siguientes:
• Item Type: debe establecerse en Hierarchical Tree.
• Allow Empty Branches: Especifica si pueden existir nodos rama sin hijos (si se establece en FALSE, los nodos rama sin hijos se convertirán en nodos hoja, si se establece en TRUE, se mostrará una rama vacía como nodo colapsado).
• Multi Selection: Especifica si se pueden seleccionar múltiples nodos al mismo tiempo.
• Show Lines: Especifica si un árbol jerárquico muestra líneas que conducen a cada nodo.
• Show Symbols: Especifica si un árbol jerárquico debe mostrar símbolos + o - delante de cada nodo de rama.
• Record Group: Nombre del Record Group del cual el árbol jerárquico obtiene sus valores.
• Data Query: Especifica la fuente de datos de la consulta.
Existen varios built-ins disponibles para manipular árboles jerárquicos. Éstos serán analizados en futuras publicaciones.

Nota: Un árbol jerárquico debe ser el único Item en el bloque de datos.

______________________________________________________________________________________
Bean Area Items.
Un JavaBean es un componente escrito en Java que puede conectarse a cualquier applet o aplicación Java. El Bean Area Item le permite ampliar la funcionalidad de Forms añadiendo un JavaBean a su formulario.

Con JavaBeans, puede interactuar con la máquina cliente, realizando funciones como:
• Obtención de información sobre la máquina cliente.
• Cargar archivos del cliente en la máquina del servidor.
• Modificación de la interfaz de usuario en el cliente.
• Comprobación de la ortografía de un Text Item.
• Visualización de una barra de progreso, reloj, calendario o selector de color con el que el operador puede interactuar y seleccionar valores.

Parte de esta funcionalidad, como el calendario, es posible mediante la funcionalidad nativa de Forms. Sin embargo, el uso de un JavaBean permite la interacción del cliente sin generar tráfico de red.

Aunque JavaBeans puede utilizarse para introducir datos, como en el caso del JavaBean de calendario, el Bean Area Item no acepta la entrada del usuario.

Creación de un Bean Area.
Puede crear un Bean Area utilizando su herramienta correspondienteen el Editor de Diseño. Haga clic en la herramienta y arrastre un área del Canvas. Al principio, el área se verá como un rectángulo vacío.  También puede crearlo a partir de cualquier Item existente, esto cambiando la propiedad Item Type a Bean Area.

Propiedades del Bean Area.
La propiedad más importante de Bean Area es la clase de implementación (Implementation Class). Esta propiedad se utiliza para especificar el nombre completo de la clase Java que el Bean Area Item debe instanciar.

Si JavaBean tiene un componente visible, Forms Builder muestra el JavaBean dentro del Bean Area Item en el Editor de Diseño una vez establecida la propiedad Implementation Class. Puede definir el tamaño y la posición del Bean Area visualmente en el Editor de Diseño o cambiando las propiedades X/Y Position, Ancho (Width), y Altura (Height).

Algunos JavaBeans no tienen ningún componente visible. Es por ello que para que estorbe, puede establecer las propiedades para que el bean se muestre como un pequeño punto en la esquina del Canvas. De forma alternativa, puede establecer su propiedad Visible en No, lo que garantiza que el Bean Area no se muestre en tiempo de ejecución, aunque todavía aparezca en el Editor de Diseño.

Nota: con JavaBean mejorado, no es necesario establecer la Implementation Class en tiempo de diseño. En su lugar, puede asignarlo mediante programación en tiempo de ejecución.

El JavaBean en Tiempo de Ejecución.
En tiempo de ejecución, el usuario puede interactuar con el JavaBean para realizar la funcionalidad que ha definido mediante programación.
______________________________________________________________________________________
Ajunto el Módulo Form creado para esta práctica: Link.
______________________________________________________________________________________
Fuente: Oracle Forms Developer 10g: Build Internet Applications.