Construyendo Ventanas (Windows)

        Las aplicaciones PowerBuilder consisten en ventanas (windows) que interactúan con el usuario.

        EL OBJETO WINDOWS ( Ventana )

        Las ventanas son la interface entre el usuario y una aplicación Power Builder. Muestran información requerida e interactúan con el usuario.

        Un Ventana consta de:

        • Atributos: Son los que definen el comportamiento y apariencia de la ventana. Estos pueden ser cambiados . Ejm (color, título, etc).

        • Eventos: Especifican lo que sucede cuando un window es manipulado. Ejem: evento close (ocurre al cerrar una ventana)

        • Controles: Colocados sobre un windows, para recibir y brindar información al usuario. Ejm (command button, singleline edit, radio button, etc).


        Entorno Windows (Ventana)

        Un window (ventana) es un término para una pantalla. Se puede tener múltiples ventanas en la pantalla al mismo tiempo y cada ventana trabaja independientemente.

        En PowerBuilder se crean ventanas usando el Pintor de Windows. Se puede abrir el pintor de windows haciendo click con el mouse sobre el botón () situado en el PowerBar, o presionando Shift + F2.

        La barra de herramientas de este painter (pintor) es mucho más compleja que la del objeto aplicación.

        Los botones que tienen una flecha negra a la derecha despliegan una lista con más botones al pinchar sobre ella.

        Uno de los botones más importantes es el cuarto empezando por la izquierda.

        Al pulsar sobre la flecha negra que despliega la lista, muestra todos los objetos que podemos pegar encima de la ventana (controles que describiremos más adelante).

        Estos controles se pueden pegar en la ventana y al pulsar el boton derecho del mouse sobre ellos, aparece un menú, qué entre otras opciones muestra la opción properties (propiedades) y la opción de script (código). Estas dos son las más utilizadas, nos permiten cambiar algunas propiedades y codificar los eventos con las instrucciones de PowerScript que describiremos más adelante.


        Construyendo una Ventana

        A continuación se describirá cómo construir una ventana que no esté basada en una ya existente.

        Al acceder al pintor de window () , se displaya el select window y lista los window de la librería actual.

        Las ventanas (windows)
        pueden ser heredadas (Inherit).

         

        Para construir una nueva ventana, seguir los siguientes pasos:

        • Hacer click en botón New o dar click en el botón de la barra de herramientas del pintor window.

        • A continuación, se displayará el workspace (espacio de trabajo ) y es aquí donde se definirá la apariencia y comportamiento del window (ventana).


        Tipos de Ventanas (Windows)

        Hay varios tipos de ventanas

        Windows Main : Son ventanas que son independientes de otros windows. La primera ventana (window) abierta en la aplicación es el window Main, a menos que sea una aplicación MDI.

        Window Popup : Un popup tiene una ventana de origen como la ventana pequeña pero no tiene todas las limitaciones.

        Window Child : Los windows Child son siempre abiertos desde un window main o popup, los que llegan a ser su window parent.

        Un window Child sólo existe dentro de su parent. No puede tener asociado un menú y nunca son considerados como el window activo. Un window child se cierra cuando su parent se cierra.

        Window Response : Los window response piden información al usuario, siempre son abiertos dentro de otro window ( su pariente ).

        MDI Frame : Un MDI window es un frame window, y es usado cuando el usuario necesita organizar los trabajos con múltiples ventanas

        Ejemplo :

            Ventana de impresión ( típico ejemplo de una ventana Response )
         


        Propiedades del Window (Ventana)

        Cada ventana y cada uno de sus controles tiene un estilo que determina la apariencia para el usuario.

        Cuando define un estilo para una ventana (window) se le asigna valores a las propiedades de dicha ventana.

        Para el ejemplo: la ventana será visible, de tipo main, de color silver, entre otros.

         

        Para definir el estilo de windows, realizar los siguientes pasos:

        • Hacer doble click sobre el window (aparecerá una pantalla similar a la superior).
        • Especifique el tipo de window (Window Type).
        • Especifique otras propiedades del window.
        • Asociar un menú con el window (si lo desea).
        • Escoger el color para el background del window (Window Color).
        • Finalmente, hacer click en OK.

         


        ESPECIFICANDO EL TIPO DE WINDOW

        Lo primero que se debe hacer después de crear un window es especificar su tipo, para ello:

        • Escoger el tipo de ventana en la lista desplegable Window Type, en la ventana de propiedades de la ventana.

        • Definiendo el tipo de window se habilitarán o deshabilitarán ciertas propiedades del window Ejemplo:

          Si se crea un window de tipo Main el Title Bar Check box y el border check box () aparecerán deshabilitados.

         

        ESPECIFICANDO OTRAS PROPIEDADES BASICAS

        También puede especificar si el window se maximiza, tiene Scrollbars, visible, enabled, resizable, entre otros.

        ()

          Notitas:

        • Un window main debe tener un título.
        • Un window child no puede tener menú.
        • Un window response no puede tener menú, maximize box, minimize box, ni resizable (es decir, su tamaño no puede variar).


        ASOCIANDO UN MENU A LA VENTANA

        Para asociar un menú a un window, digitar el nombre del menú a asociar en el campo Menu Name de la ventana de propiedades.

        En el caso que el menú que se desea seleccionar no aparezca en la lista (P.B. lista todo los menúes de la aplicación), hacer click en el botón y escoja el menú deseado.

        Se puede cambiar un menú asociado con un window durante ejecución con la función ChangeMenu.

         

        ESCOGIENDO EL COLOR DE LA VENTANA

        Para cambiar el color de la ventana, seguir los siguientes pasos:

        • Seleccionar un color en el Listbox Window color de la ventana de propiedades de la ventana.
         

        CAMBIANDO EL TAMAÑO Y LA POSICION

        En la ventana de propiedades de la ventana (ingresar haciendo doble click sobre la ventana), escoger la carilla y seguir los siguientes pasos :


        • Seleccionar el estado inicial del window (Normal, Minimizado o Maximizado).

        • Mover el window a un lugar apropiado con el mouse o dando valores a X e Y.

        • Hacer click en «OK»

          Para window Main, Popup, Response y MDI frame, X e Y son relativos a la esquina superior izquierda del y para window child, X e Y son relativos al parent).

        Para cambiar el tamaño del window (ventana):

         

        • Usar el mouse para modificar el tamaño o cambiar los atributos Width y Height.

        GRABANDO EL WINDOW

        VISTA PREVIA DEL WINDOW

        Mientras construye el window, se pueden ir haciendo vistas previas. Para ello hacer click en () de la barra de herramientas del pintor de Window.

          El window (ventana) creado se guarda en una de las librería PBL. Para ello, selecionar SAVE del File Menu, o hacer click en el icono () de la barra de herramientas del pintor window , a continuación aparecerá una pantalla digitar el nombre del window.


        Eventos de una Ventana

          Al igual que se ha visto en el Painter Application y tal como se verá en el resto de objetos de PowerBuilder, al pulsar el botón derecho sobre la ventana y escoger la opción script, se abre la ventana de edición de código.

        Los eventos más utilizados a la hora de codificar en una ventana son:

        Evento
             Descripción

        Activate: Ocurre inmediatamente después de abrirse la ventana. La ventana activa se muestra con un título sumamente iluminado.

        Clicked: Ocurre cuando se hace un click en una ventana, pero no dentro de los controles (así como un command Bottom).

        Close:Ocurre antes de que la ventana esté desactivada y cerrada.

        Close Query: Los query de una ventana le dan una oportunidad de manejar cualquier último detalle, así como guardar cualquier cambio actual a un archivo o una tabla. El evento ocurre antes del cierre de eventos y es posible que reuse a permitir que la ventana se cierre.

        Desactivate: Este evento es impulsado antes de que la ventana llegue a estar inactiva.

        Double Clicked: Ocurre cuando se hace doble click en una ventana, pero no dentro de los controles.

        DragDrop: Ocurre cuando el modo drag y el puntero drop están en un objeto de la ventana (no dentro de un control)

        DragEnter: Ocurre cuando el modo drag está en un objeto de entrada de la ventana.

        DragLeave: Ocurre cuando el modo drag está en los objetos que van a salir de la ventana.

        DragWithin: Cuando el modo drag está en los eventos que son impulsados periódicamente mientras que un objeto está dentro de la ventana.

        Hide: Esta ventana se hace invisible.

        HotLinkAlarm: Ocurre después que una conexión DDE ha sido efectuada.

        Key: Ocurre cuando el teclado es presionado y el foco no está dentro de un control de edición.

        MouseDown: Ocurre cuando se da click al botón izquierdo del mouse.

        MouseMove: Ocurre cuando el mouse se ha movido dentro de la ventana.

        Mouse Up: Ocurre cuando el botón del mouse es soltado dentro de la ventana y el señalador no está localizado dentro de cualquier control activado.

        Open: Este evento ocurre al abrirse, antes de que el usuario vea nada.

        Other: Todo los eventos de la otra ventana que han sido señalados por los eventos del PB, están ruteados en este evento, raramente se usará este evento.

        Rbutton Down: Ocurre cuando se presiona el botón derecho del mouse.

        Resize: Ocurre al cambiar el tamaño de la ventana.

        Show: Este evento es impulsado antes de llamar a la función show.

        SystemKey: Evento impulsado antes que el usuario presione la tecla Alt (usualmente en combinación con otra tecla) y el foco no estará dentro de un tipo de edición activa del control.

        Timer: Ocurre con intervalos específicos como colocar la función de tiempo. El evento del tiempo es solamente impulsado si la función del timer fue llamada.


        Funciones de una Ventana

        Las funciones que se mencionan a continuación se aplican específicamente a los objetos de las ventanas:

        ArrangSheets: Organiza a las hojas de las ventanas en un estilo específico, como tiled o cascada.

        Change Menu: Asigna el menú asociado con una ventana a una named menú

        ClasName: Retorna el nombre de la ventana.

        GetActiveSheet: Retorna cual es la ventana que está actualemente activa en la ventana de hoja.

        Hide: Hace que la ventana se haga invisible.

        Move: Cambia la ventana a una nueva posición.

        ParentWindow: Retorna cual es la ventana padre.

        Pointer X: Devuelve la actual posición horizontal del puntero.

        Pointer Y: Devuelve la actual posición vertical del puntero.

        Postevent: Adiciona un evento a la cola de mensaje de un objeto (un mensaje asincrónico).

        Resize: Cambia el actual tamaño de la ventana.

        SetFocus: Activa el foco de la ventana, haciendo que ésta sea la actual ventana activa.

        Setmicrohelp: Asigna un texto en línea de status del MDI y lo displaya.

        SetPosition: Mueve la ventana al frente o posterior a otra ventana.

        SetRedraw: Enciende o apaga el estado de actualización para una ventana.

        Show : Displaya una ventana.

        TriggerEvent: Envía un mensaje para un evento del objeto.

        TypeOff: Retorna el tipo de objeto


        Introducción a los Controles

        Cuando se ejecuta la aplicación los usuarios interactúan generalmente con los controles colocados en la ventana (window).

        Hay dos tipos de controles :

        - Controles que tienen eventos
        - Controles sin eventos (Group Boxes y los drawing objects (objetos para dibujar)).

        Hay controles para:

        Mostrar y / o manipular valores:

        ª Static text  

        ª SingleLineEdit  

        ª MultilineEdit  

        ª EditMask  

        ª CommandButton  

        ª Data Window (control especial para la presentación de datos)

        ª PictureButton  

        ª User Object

        ª TreeView, ListView, Tabs.


        Hacer cambios: Incluyen los siguientes controles

        ª CheckBox

         

        ª List Box  

        ª DropDownListBox  

        ª RadioButton  

        Mostrar Información Gráfica :

        Incluyen los siguientes controles

        ª Graph  

        ª HScrollBar  

        ª VScrollBar  

        Para Dibujar sobre la Ventana

        ª GroupBox  

        ª Line  

        ª Oval  

        ª Rectangle  

        ª RoundRectangle  

        ª Picture  


        Colocando Controles en una Ventana

        Para colocar un control en la ventana (window), seguir los siguientes pasos:

        • Seleccionar el control del window PainterBar o del MenuControl.

        • Hacer click donde se quiere colocar el control.

        Después de colocar el control puede cambiar de tamaño, definir su apariencia y comportamiento, y asociar scripts para los eventos.

        CAMBIANDO LAS PROPIEDADES DEL CONTROL

        Cada control tiene propiedades que determinan su apariencia y comportamiento.

          Para definir las propiedades, seguir los siguientes pasos:

        • Hacer click con el botón derecho del mouse sobre el control.

        • A continuación aparecerá un menú emergente con varias opciones. (ver a la derecha)

        • Seleccionar la opción propiedades (properties) del control.

        • Si se prefiere, hacer doble click sobre el control y aparecerá la ventana de propiedades del control.

         


        Cuando coloque un control en una ventana (window), PowerBuilder asigna un nombre único al control de la siguiente manera:

        prefijo de control_ + número

        el número puede ser cambiado por una palabra representativa para el control.

        Para el ejemplo el prefijo del control comand button será:

        cb_grabar1

         

        A continuación, se muestra una lista con los principales controles y sus prefijos:


        Cambiando el Texto de un Control

        El pintor de ventana (window), tiene una barra de estilos (StyleBar) que se puede usar para cambiar las siguientes propiedades de texto del control seleccionado.

        * el texto
        * el tipo de letra
        * el tamaño
        * el alineamiento del texto dentro del control.

        Ejemplo: Al CommandButton cb_grabar, se le desea cambiar el texto por Guardar.
        Para realizar este ejemplo, seguir los siguientes pasos:

        * Seleccionar el control.
        * Especificar el nuevo texto en la barra de estilos (remplazar la palabra Grabar).

        Alineando los Controles

          En PowerBuilder se puede alinear dos o más controles de la siguiente manera:

        • Seleccione el control cuya posición sirva como referencia para alinear a los otros.
          En nuestro caso, será determinado por el último control creado (Pastillas), en ba- se a este control se alinearán los demás controles.

        • Presione Ctrl y click a la vez y los controles que quiere alinear.


        • Seleccionar Aling Controls del Menú Edit.




        * Seleccione el tipo de alineamiento.

        Igualando el espacio entre los controles

        Con el PowerBuilder se puede igualar el espacio entre los controles de la siguiente manera:

        • Seleccione dos controles cuyo espacio es el correcto.
          Ejemplo : Cultura Informática e Informática Fácil, presione Ctrl y Click.

        • Seleccionar los otros controles que faltan.

        • Seleccionar Space Controls del menú edit.

         


        Modificando el tamaño de los controles

          Power Builder permite modificar el tamaño de los controles de la siguiente manera:

        • Seleccione el control con el tamaño correcto ejemplo : En nuestro caso será el control Aceptar el que tiene el tamaño apropiado.

        • Seleccionar los controles cuyo tamaño quiere al primer control.
          Ejemplo: Sea el control Cancelar, seleccionar con el mouse los dos controles sin dejar de soltar el botón Ctrl.

        • Selecionar Size Control del menú Edit.

        • Seleccionar el tipo de tamaño.

        Definiendo el Tab Order de los Controles

          Cuando se coloca un determinado control en la ventana (window), PowerBuilder le asigna por default un Tab Order (orden del foco), que es la secuencia en la cual el focus se mueve de control a control.

        • Seleccione el Tab Order del menú Desing, o seleccione de la barra de herramientas.

        • Cambiar los valores para el Tab Order(0,9999), si coloca 0, ésto hace que se salte el control.


        • Repetir el procedimiento hasta obtener el Tab Order deseado.

        • Seleccionar el Tab Order del menú Desing o de la barra de herramientas.

        Ejemplo: Vemos que el SingleLineEdit que se encuentra a la derecha del texto Número no es el correcto, en su lugar debería estar el tab order 20. Esto se puede modificar seleccionando con el mouse sobre el número 40 y luego escribimos el número 20.

        Definiendo Teclas Aceleradoras a los Controles

        Se puede definir teclas aceleradoras a los controles para permitir al usuario cambiar el focus presionando Alt + Tecla Aceleradora. Esto se obtiene colocando el signo &, antes de la letra que va a ser la tecla aceleradora.

        Ejemplo: Al commandbutton en su atributo text ( doble click sobre el control ) se colocó &Aceptar, entonces la tecla aceleradora será A, ya que el signo & está delante de la letra A y, ésta se encuentra subrayada.


        Ejemplo Práctico:

        En esta ventana se muestra la mayoría de los controles. Pero pegados en la ventana, por si solos, sin tener código (script) en cada uno de sus eventos, no realizan ninguna acción.

        Una aplicación consta básicamente de un objeto aplicación, menus, ventanas y datawindows. Para que todos estos objetos interactuen con la data, se necesita programar en el script (ver Cap 7).