Componentes de ConsoleUI y variables relacionadas

Cuando se trabaja con consoleUI, se crean las siguientes clases de variables, las cuales se basan en los componentes de consoleUI relacionados:

La biblioteca ConsoleLib también incluye variables de sistema de tipo PresentationAttributes. Las variables del sistema controlan aspectos visuales de la salida visualizada. Para cambiar aspectos de la pantalla, puede cambiar dichas variables estableciendo los campos color, highlight e intensity de PresentationAttributes. Para obtener información detallada sobre estos campos, consulte el apartado Campos de PresentationAttributes en consoleUI de EGL.

Window

Una ventana es un área rectangular donde puede colocar otras entidades visuales que se representan como variables.

Cuando se visualiza una ventana y no hay otras ventanas activas, la nueva ventana está dentro de la ventana de pantalla, que es un rectángulo que tiene las características básicas de cualquier ventana del sistema operativo. Este no es el caso en UNIX cuando se está utilizando la biblioteca Curses; en este caso, la visualización de una ventana de consoleUI coloca la ventana de terminal existente en modalidad de ventanas.

Cualquier ventana adicional que visualice aparece en la parte de contenido de la ventana de pantalla, normalmente en la parte superior de la ventana que ya ha abierto. También es posible que las ventanas se visualicen una junto a la otra.

Al declarar una ventana, puede establecer varias propiedades. Position, por ejemplo, es la ubicación respecto a la esquina superior izquierda de la pantalla; y size es la altura y anchura de la ventana en número de caracteres. Puede utilizar variables y valores de literal para especificar el tamaño y la posición.

A continuación se proporciona un ejemplo de declaración de ventana:
myWindow WINDOW 
{name="myWindow", position = [2,2],
 size = [18,75], color = red, hasborder=yes};

Una ventana se visualiza utilizando una función EGL cuyo nombre empieza por ConsoleLib.openWindow. Si no ha visualizado una ventana al presentar otros datos, EGL le proporciona automáticamente una ventana.

Prompt

Una solicitud es una sentencia en línea que obtiene la entrada de usuario. A continuación se muestra una declaración de una solicitud:
  myPrompt Prompt { message = "Type your ID: "}; 

Una solicitud se visualiza incluyendo la variable en una sentencia openUI, que enlaza la solicitud a una variable de tipo String, pero sólo para entrada. Puede configurar la solicitud para que acepte un único carácter o una serie.

ConsoleField

Un consoleField es un campo en pantalla que se declara en el contexto de un formulario de consola (como se describe más adelante). El siguiente ejemplo declara un consoleField cuyo contenido puede variar durante la ejecución:
  myField ConsoleField (
    name="myFieldName",
    position=[1,31],
    fieldLen=20, 
    binding = "myVariable" );
Para especificar texto constante, utilice un asterisco (*) en lugar del nombre de variable, como en el siguiente ejemplo:
  *    ConsoleField  
       { position=[2,5], value="Title:  " };

Se recomienda encarecidamente que cuando declare un consoleField con nombre, utilice el mismo nombre para el consoleField y para el valor del atributo de nombre del consoleField. Sin embargo, se permiten nombres distintos para estos dos usos. Podría hacer referencia al nombre de consoleField (como por ejemplo, myField) cuando el acceso al consoleField se resuelve durante la generación. Podría hacer referencia al valor de atributo de nombre (como por ejemplo, myFieldName) cuando el acceso se resuelve durante la ejecución, como ocurre cuando el consoleField se utiliza para definir un evento en la sentencia openUI.

ConsoleForm

Un consoleForm es básicamente un conjunto de consoleFields. Para activar un consoleForm, invoque la función de sistema ConsoleLib.displayForm. Para visualizar un consoleForm de sólo lectura, por ejemplo, puede realizar lo siguiente:
  1. Invoque ConsoleLib.displayForm
  2. Invoque la función de sistema ConsoleLib.getKey para que espere una pulsación de usuario
En cambio, para permitir que el usuario escriba en un consoleField, realice lo siguiente:
  1. Invoque ConsoleLib.displayForm
  2. Emita una sentencia openUI que haga referencia al consoleForm visualizado o a consoleFields específicos del consoleForm.

El consoleForm es un registro de subtipo ConsoleForm y, aparte de incluir consoleFields, también puede incluir cualquiera de los campos que son válidos en cualquier registro EGL.

Para permitir la interacción de usuario con una tabla en pantalla de consoleFields, realice lo siguiente:
  1. En el consoleForm, declare un arrayDictionary que a su vez haga referencia a matrices de consoleField que también estén declaradas en el consoleForm
  2. Utilice dicho arrayDictionary en una sentencia openUI

Para permitir la interacción de usuario con sólo un subconjunto de consoleFields del consoleForm, puede listar los consoleFields en la sentencia openUI, ya sea explícitamente o haciendo referencia a un diccionario. Al igual que el arrayDictionary, el diccionario se declara en el consoleForm y hace referencia a los consoleFields que también están declarados en el consoleForm.

EGL no visualiza ninguna variable primitiva que se declara en el consoleForm. Puede utilizar dicha variable para enlazar un consoleField, ya que se puede utilizar una variable declarada fuera del consoleForm.

En general, puede crear enlaces de consoleForm de una de las dos maneras siguientes:
  • Estableciendo un enlace predeterminado al declarar el consoleForm.
  • Estableciendo un enlace al codificar la sentencia openUI.

Cualquier enlace especificado en la sentencia openUI altera temporalmente el enlace predeterminado en su conjunto; no queda ninguno de los enlaces de la declaración de consoleForm.

Si utiliza la sentencia openUI para enlazar variables, una opción es utilizar la propiedad isConstruct de la sentencia, que actúa de la manera siguiente:
  • Da formato a la entrada de usuario convirtiéndola en una serie apropiada para una cláusula SQL WHERE
  • Coloca dicha serie en una única variable para que pueda codificar fácilmente una sentencia SQL SELECT que recupera los datos solicitados por el usuario de una base de datos relacional, del mismo modo que cuando se codifica una sentencia EGL prepare

Para obtener información detallada sobre la propiedad isConstruct, consulte el apartado Sentencia OpenUI.

El orden de tabulación es el orden en que el usuario pasa de un consoleField a otro. De forma predeterminada, el orden de tabulación es el orden de los consoleFields en la declaración de consoleForm. Si incluye una lista de consoleFields en una sentencia openUI, el orden de tabulación es el orden de los consoleFields en dicha sentencia; de forma similar, si incluye un diccionario o arrayDictionary en una sentencia openUI, el orden de tabulación es el orden de los consoleFields en la declaración del diccionario o arrayDictionary.

De forma predeterminada, el usuario sale de una sentencia openUI relacionada con consoleForm pulsando la tecla Esc.

Menu

Un menú es un conjunto de etiquetas visualizadas horizontalmente. Una etiqueta es para el menú en su conjunto y una para cada menuItem del menú. Para garantizar que se obtiene una respuesta cuando el usuario selecciona un determinado menuItem, haga referencia al menú en su conjunto en la sentencia openUI y haga referencia al menuItem en una cláusula OnEvent de dicha sentencia.

MenuItem

Un menuItem muestra una etiqueta y se utiliza tal como se describe en el apartado anterior.

Comentarios
(C) Copyright IBM Corporation 2000, 2005. Reservados todos los derechos.