TUTORIAL DE POWER BUILDER 10.0 - 1º Parte
MÓDULO 1 – INTRODUCCIÓN AL ENTORNO DE POWERBUILDER (IDE)
¿Qué es PowerBuilder? PowerBuilder es un lenguaje RAD de 4 generación especialmente diseñado para la creación rápida de sistemas cliente/servidor, distribuidos, web y para dispositivos móviles para las plataformas JEE, Win32 y .NET. Es particularmente popular entre las empresas de desarrollo de la provincia. PowerBuilder es un producto de la compañía Sybase. Es una herramienta de desarrollo empresarial, con un entorno de desarrollo integrado para construir aplicaciones de alto desempeño para Windows, Unix, Macintosh y Linux que combina una interface gráfica intuitiva con un poderoso lenguaje de programación orientado a objetos utilizando la tecnología RAD (Rapid Application Development). Las aplicaciones desarrolladas en PowerBuilder son independientes del sistema de administración de base de datos que se esté usando. PowerBuilder cuenta con comandos y funciones orientadas principalmente al manejo de bases de datos relacionales, pero además cuenta con generadores de informes, pantallas, menús, consultas (SQL) y aplicaciones. PowerBuilder incluye herramientas que permiten construir aplicaciones basadas en Web Posee un objeto inteligente llamado DataWindow que realiza directamente la interfaz con la base de datos, sin requerir grandes conocimientos del lenguaje SQL. Permite utilizar sentencias SQL directamente en el código. Soporta conexiones con cualquier motor de base de datos a través de drivers nativos o conexión ODBC. El desarrollo de una aplicación en PowerBuilder es un proceso visual en el que el diseño de las interfaces gráficas de usuario es similar al armado de un rompecabezas en base a piezas prefabricadas llamadas objetos. Lo que el desarrollador debe definir mediante la programación es cómo estos objetos responderán a las interacciones del usuario (programación dirigida por eventos). Sybase ofrece PowerBuilder en tres ediciones: Enterprise, Professional y Desktop. PowerBuilder está orientado al 100% para aplicaciones de gestión, con uso intensivo de base de datos. No está pensado ni diseñado para aplicaciones de cálculo intensivo, ni para programar drivers, ni rutinas a tiempo real, ni aplicaciones de dibujo... PowerBuilder está pensado para trabajar con bases de datos, y es ahí donde es fuerte.
Historia
PowerBuilder fue inicialmente desarrollada por la compañía Powersoft; la versión 1.0 se lanzó oficialmente al mercado en julio de 1991. Con ésta versión, los desarrolladores codificaban sus aplicaciones desde el "pintor de ventanas". Con la versión 2.0, lanzada al mercado en 1992, PowerBuilder incluyó herencia y encapsulación - por primera vez una ventana podía heredar el comportamiento de su antecesor. En 1995, cuando PowerBuilder se había afianzado de manera sólida dentro del mercado de herramientas de desarrollo, Sybase adquirió a Powersoft y a finales de 1996 introdujo la versión 5.0 de PowerBuilder. De ahí en adelante, Sybase ha continuado con el desarrollo de la herramienta, lanzando al mercado las versiones 6, 7, 8, 9, 10 y 11, que reflejan la evolución de PowerBuilder de acuerdo a las tendencias del mercado, con mejoras en sus características y con el soporte a nuevas tecnologías como JSP, XML y Servicios Web. En 2007, Sybase liberó luego la versión PowerBuilder 11.0 con soporte completo .NET así como también J2EE. Hasta agosto del 2008 es la 11.2. Actualmente ya se encuentra en el mercado la versión 11.5. Sybase Inc. anunció la disponibilidad de la versión beta de PowerBuilder 12.5, una nueva generación en su herramienta de desarrollo. Sybase
PowerBuilder 12.5 es la segunda versión .NET totalmente completa de la aplicación de desarrollo favorita del mercado, que brinda verdadera potencia y facilidad de uso a .NET. Encontrará dos entornos de desarrollo integrados (IDE) que le brindan opciones. Puede desarrollar e implementar aplicaciones en una arquitectura tradicional de cliente/servidor, y también implementar en aplicaciones WebForms, WindowForms o Smart Client. O puede aprovechar el poder del nuevo IDE, desarrollado sobre la base de Visual Studio, para desarrollar aplicaciones de Windows Presentation Foundation (WPF). O puede usar ambos. Incluso puede migrar sus aplicaciones de Win32 a WPF, algo que no le brinda ninguna otra herramienta. PowerBuilder es compatible con Common Language Specification (CLS) de Microsoft, y sus funciones .NET le permiten implementar NVO y CVUO como conjuntos para sus compañeros de equipo de Visual Studio. En resumen, PowerBuilder ES .NET, pero es mucho más que sólo eso.
El Entorno de Desarrollo (IDE)
IDE significa Integrated Development Environment, es un programa compuesto por un conjunto de herramientas para un programador. El IDE de PowerBuilder provee un marco de trabajo amigable que incluye, dentro de su ambiente integrado, herramientas para crear la interfaz de usuario, generar reportes y tener acceso al contenido de una base de datos.
- PowerBar: Es el principal punto de control para construir aplicaciones en PowerBuilder. La PowerBar se despliega al comenzar una sesión de PowerBuilder. Desde ella, se puede abrir un painter de PowerBuilder, realizar el debug o correr la aplicación actual, llamar a la ayuda o hasta personalizarla.
- System Tree Window: Proporciona un eficaz recurso de programación informativo que permite desarrollar targets de una manera rápida y fácil. No solo nos muestra información, también permite arrastrar objetos a las diferentes vistas (Script, Layout y editor HTML) para su uso inmediato.Se despliega por defecto al ejecutarse PowerBuilder por primera vez. En la PowerBar se encuentra un botón: el System Tree Button, que sirve para ocultarla o hacerla visible, también se la encuentra seleccionando en el menú: Window -> System Tree.
- Clip Window: El botón Clip Window de la PowerBar abre una ventana en la cual se puede almacenar código que se usa frecuentemente. Es posible copiar un texto a la ventana Clip para grabarlo y luego arrastrar o copiar este texto en el painter adecuado cuando se lo necesita. Esta ventana muestra una lista de nombres identificadores y un preview de la información contenida en cada uno.
- Output Window: El botón Output de la PowerBar abre una ventana en la cual se muestra la salida de una variedad de operaciones, tales como migrations, builds, deployments, ejecución del proyecto, grabado de objetos y búsquedas. Las operaciones pueden ser controladas usando los botones Skip, Stop, Next Error, y Previous Error o bien opciones del menú. En la PowerBar se encuentra un botón: el Output button, que sirve para ocultarla o hacerla visible, también se la encuentra seleccionando en el menú: Window -> Output.

Workspace y Targets
Workspace significa área de trabajo. Para comenzar a crear una aplicación, primero debemos crear un workspace (.pbw). Este es el elemento principal al desarrollar una aplicación. En él se guardan las configuraciones de él o los proyectos que se están desarrollando. Un target determina el tipo de aplicación que se construirá. Se puede trabajar con uno o más targets en un mismo workspace. Solo es posible tener abierto un workspace por vez, pero se pueden agregar tantos targets como se necesite, abrir y editar objetos en múltiples targets, y construir y distribuir varios targets a la vez. Hay dos tipos de targets, este curso se referirá solo a los PowerScript targets.
1. PowerScript targets: Se usa para construir aplicaciones ejecutables cliente/servidor, una aplicación ejecutable distribuida o un componente de servidor (EAServer).
2. Web targets: Es una aplicación web, que puede contener todos los elementos necesarios para construir un sitio web (archivos HTML, scripts, imágenes, componentes que se descargan) así como configuraciones para construir opciones, realizar conexiones a base de datos y distribución, o una aplicación JavaServerPages (JSP). Las herramientas para crear Web Targets se encuentran disponibles únicamente en la versión empresarial de PowerBuilder (Enterprise Edition).
Librerías
Una librería es un archivo .pbl que almacena todas las definiciones de objetos compiladas en la misma ubicación. Una aplicación puede tener una o más librerías. Estas son manejadas con el Library Painter o pintor de librerías. Cuando se corre una aplicación, PowerBuilder recupera los objetos de la librería. Los siguientes objetos son almacenados en una librería: Application, Windows, DataWindows, Functions, Menus, Pipelines, User objects, Structures, Components, Queries, etc.
Eventos y Scripts
Las aplicaciones de PowerBuilder son manejadas por eventos: los usuarios controlan el flujo de la aplicación. Cuando un usuario hace click en un botón, elige una opción de un menú, o ingresa datos en una caja de texto, un evento se dispara. Se escribe código (script) que especifica el proceso que debería suceder cuando el evento acurre. PowerBuilder cuenta con un lenguaje propio de alto nivel llamado PowerScript, que soporta todas las características de la orientación a objetos (encapsulación, herencia, y polimorfismo), SQL incrustado, excepciones (a partir de la versión 8), y otras características propias de este tipo de lenguajes. Un script consiste en comandos de PowerScript, funciones, y sentencias que realizan un proceso en respuesta a un evento. Durante la etapa de desarrollo, es un lenguaje interpretado, y tras un proceso de compilación, genera un código pseudo compilado (llamado PCode) que puede ser leído por una máquina Virtual llamada PBVM (PowerBuilder Virtual Machine). Esta máquina virtual traduce las instrucciones del PCode a instrucciones propias de la plataforma, estando disponibles máquinas virtuales para Windows 3.1, Windows 95/NT/2000, MacOS (hasta la versión 6) y Unix-Solaris. También es posible compilar en código nativo, evitando así el PCode, pero atándonos a una de las plataformas. Gracias a la máquina virtual, PowerBuilder puede presumir de ser multiplataforma, permitiendo, con una única compilación, ejecutarse en cualquiera de las plataformas anteriores (similar a Java). La parte negativa es que esta máquina virtual es imprescindible para ejecutar cualquier aplicación, por lo que debe incluirse en la distribución de nuestros ejecutables (lo cual limita mucho para cierto tipo de proyectos). La máquina virtual también es necesaria si hemos compilado nuestro proyecto en modo nativo (sin PCode), aunque no para interpretar el código, sino para utilizar muchos de los recursos que están contenidos dentro de ella, por lo que no hay ninguna manera de hacer nuestra aplicación completamente independiente, y no podremos distribuir solamente el ejecutable. PowerBuilder soporta SQL incrustado dentro del código, sin necesidad de componentes adicionales. El propio PowerScript reconoce tanto SQL estático (con todos los datos conocidos en tiempo de compilación) como dinámico (construido en tiempo de ejecución a partir, por ejemplo, de una variable string). Dentro de una función podemos realizar un SELECT y retornar el resultado en una variable, comprobar si cierto registro existe, recuperar la descripción asociada a un código o cualquier cosa. Esto es muy cómodo, ya que nos permite realizar consultas sencillas sin tener que insertar (o crear en tiempo de ejecución) componentes adicionales. También es posible ejecutar consultas completa o parcialmente dinámicas a partir de una cadena de texto. Es decir, podemos tener una cadena con la sentencia a ejecutar, o bien, una cadena con el objeto, las columnas, etc. Instrucción parcialmente dinámica (“tabla” es una variable String que contiene el nombre de una tabla):
SELECT * FROM :tabla;
Instrucción completamente dinámica (“sentencia” es una variable String que contiene la sentencia): sentencia = "DELETE FROM FACTURAS"
EXECUTE :sentencia;
Una de las utilidades de esto es que, en vez de incrustar la sentencia directamente en el código, podemos almacenarla en una cadena (que leemos de un fichero, o de la propia base de datos) y después ejecutar esta sentencia. De este modo se independiza más el programa de la base de datos, ya que un cambio en el esquema no requeriría una nueva compilación.
Painters
De acuerdo a lo que se quiera construir el IDE de PowerBuilder nos presenta diferentes pintores o painter.
- Application: Específica información acerca de la aplicación tales como nombre y las librerías de PowerBuilder donde se encuentran los objetos de la aplicación.
- Window: Se utiliza para crear o modificar las ventanas que serán usadas en la aplicación.
- Menu: Para crear los menús que luego serán usados en las ventanas o en forma contextual.
- DataWindow: Permite construir objetos inteligentes llamados DataWindow para realizar transacciones (altas, bajas, modificaciones y reportes) contra una base de datos u otra fuente de datos (Excel, txt, etc.).
- Database: Sirve para mantener una base de datos, controlar la información o manipular los datos de una base de datos.
- Structure: Permite agrupar variables (formando lo que se conoce como estructuras) para luego usarlas en la aplicación.
- Function: Se utiliza para construir funciones que llevarán a cabo un proceso específico en la aplicación.
- User Object (visual): En este painter se construyen objetos creados por el usuario que agrupan controles, que se puede grabar y usar repetidamente en ventanas o en otros user objects.
- User Object (non-visual): Se utiliza para crear las clases (class user objects). Permite crear y re-usar un set de reglas de negocio u otros procesos que actúan como una unidad pero no tienen componentes visuales encapsulando sus propiedades y funciones. Permite crear los métodos y los atributos de los objetos (object-level functions e instances variables).
- Library: De todas las ventanas MDI que forman los painters la principal es la Library Painter, esta nos muestra todas las librerías (archivos PBL) de nuestro programa permitiendo abrir los distintos objetos, exportar, copiar, eliminar, buscar, etc. Una vez que se encontró el objeto con el que se desea trabajar se lo abre haciendo doble click o Enter, esta acción abrirá el painter necesario (otra ventana MDI) para modificar el objeto en cuestión.El tab Workspace en el System Tree Window provee casi las mismas funcionalidades que el Library painter.
- Project: Crea un ejecutable especificando los componentes que conforman la aplicación.
- SQL Select: Se utiliza este painter en varios lugares: Cuando se crea la orden SELECT en una nueva DataWindow o data pipeline. Cuando se edita la fuente de datos en la DataWindow o data pipeline. Cuando se pega una orden SQL en un script o función o en el Interactive SQL en el Database painter. Cuando se crea un view en el Database painter.
- Query: Realiza consultas graficas con sentencias SQL SELECT que se pueden re-usar en DataWindows o data pipelines.
- Data pipeline: El Pipeline representa una tubería de datos entre una base de datos y otra, pudiendo ser estas de cualquier tipo dentro de los soportados por PowerBuilder. Es muy útil para hacer migraciones de bases de datos ya que, simplemente indicando el origen y el destino, el proceso nos hará la copia de todos los objetos y datos (o aquellos que seleccionemos), ajustando aquellas sentencias que no sean compatibles en la base de datos destino.
- Debug Corre una aplicación paso a paso, permitiendo colocar puntos de quiebre.
- File Editor: Edita archivos de texto tales como fuentes, archivos de inicialización (.ini), de recursos (.pbr), etc. Profile: Se utiliza para definir y usar nombres puestos como parámetros para conectarse a una base de datos en particular.
- Help: Invoca a la ayuda en línea de PowerBuilder. Presionar F1 o elegir la opción Help.
Creando una aplicación
Como primera medida debemos crear un área de trabajo (workspace). Luego el objeto aplicación y ya estamos en condiciones de crear los objetos que compondrán nuestra aplicación. Recuerda:
WORKSPACE> TARGET OBJECT> LIBRARY> APPLICATION OBJECT
Crear el workspace
1. Para ello debemos hacer click en el botón New
.
2. El primer Tab de la ventana que emergerá es el destinado para workspace. Seleccionarlo y hacer click en Ok. Una nueva ventana se abrirá, donde deberemos seleccionar la ubicación y darle un nombre a este workspace. Usaremos el nombre de primera_aplicacion. Click en Guardar.
Podemos observar que la ventana SystemTree cambió, ahora aparece el nombre de nuestro workspace.
Crear el objeto aplicación
Una vez creado el workspace creamos el objeto aplicación. Crearemos una aplicación típica cliente-servidor.
1. Para ello debemos hacer click en el botón New
.
2. El segundo tab de la ventana es el destinado para el Target. Como vimos anteriormente el target nos indica el tipo de aplicación que crearemos.
Tipos de objetos aplicación
3. Seleccionamos Application y click en Ok. En la ventana que se despliega colocamos el nombre de la aplicación, usaremos primera_aplicacion, el mismo que el del workspace. Automáticamente, Power Builder completa los campos siguientes, creando la librería principal (.pbl) y el del target (.pbt) con el mismo nombre dado a la aplicación. Click en Finísh.
De esta manera ya tenemos creado la arquitectura de nuestra aplicación ejecutable. El System Tree ahora se volvió mucho más interesante. Vemos el workspace, con el target, la librería asociada a él y un único objeto contenido en ella, el objeto aplicación.
Para entrar al código y propiedades del objeto aplicación, hacer click derecho y seleccionar la opción Edit del menú que se despliega o bien hacer dobleclick sobre él.
Las siguientes tablas detallan las propiedades y eventos predefinidos de PowerBuilder para el objeto aplicación.
Propiedades predefinidas de PowerBuilder
- AppName: De sólo lectura. Nombre del objeto aplicación.
- DisplayName: De sólo lectura. Nombre de la aplicación, que utilizaran otras aplicaciones para hacer referencia a esta.
- DWMessage Title: Título para las cajas de mensaje que se mostrara en tiempo de ejecución en la barra de título.
Los eventos son todos aquellos sucesos que le ocurren a la aplicación y a los que se puede asignar un script para que se realicen alguna acción cada vez que ocurra un suceso.
Eventos predefinidos de PowerBuilder
- Close: Cuando el usuario cierra la aplicación.
- ConnectionBegin: Obsoleto (usado para conexiones distribuidas con Power Builder)
- ConnectionEnd: Obsoleto (usado para conexiones distribuidas con Power Builder)
- Idle: Cuando la función Idle ha sido llamada en un script de un objeto aplicación y el número de segundos especificado hayan transcurrido sin actividad del teclado o del ratón.
- Open: Cuando se ejecuta una aplicación.
- SystemError: Cuando un error crítico ocurre en tiempo de ejecución (como tratar de abrir una aplicación no existente). Si no hay un script para éste evento Power Builder muestra un mensaje con el número de error y mensaje de error que ha ocurrido. Puede usarse para personalizar los errores.
Esta es la vista que tendremos del objeto aplicación, vemos el script, las propiedades, eventos, funciones y variables declaradas:
Front-End y Back-End
Un front-end es un constructor de interfaces, es una herramienta de programación donde se definen los formatos mediante los cuales se van a visualizar y manipular los datos. Un back-end es la herramienta que almacena los datos y los entrega al front-end para su manipulación. Por ejemplo, podemos usar como front-end a PowerBuilder y como back-end a ASA 8.0.
Cliente/Servidor
Cliente/Servidor es una organización de procesos, donde un proceso específico al que se le denomina servidor se dedica exclusivamente a atender los requerimientos que le envían un grupo de procesos denominados clientes.
Crear una ventana - Agregando objetos a la librería.
1. Click en el botón New
.
2. El tercer tab de la ventana, PB Object, es el destinado para el los objetos.
3. Seleccionamos Window y click en Ok.
Se abre el Windows Painter. La ventana aparece en el sector central. En la parte superior, dos barras nuevas se muestran, que contienen distintas herramientas de diseño. En la parte inferior de la ventana se muestran cinco tabs:
1. Layout: Permite visualizar la ventana en modo de diseño.
2. Open: Es el tab del script del objeto seleccionado. Por defecto muestra el script del evento open de la ventana.
3. Event list: Lista todos los eventos del objeto seleccionado.
4. Function list: Lista todos las funciones del objeto seleccionado.
5. Declare instante Variables: Área donde se declaran las variables Global, Shared, de instancia, y las External Function.
Estos tabs pueden cerrarse de a uno, excepto el del Layout. Una vez que el único tab visible es el del Layout, haciendo click derecho sobre la ventana y seleccionando script tendremos la vista siguiente, una forma de trabajar mucho más clara que la predefinida por PowerBuilder:
La primera propiedad que definiremos de esta ventana puede ser un titulo. Para ello, en el tab General de la ventana Propiedades, en Title escribimos: Ventana principal.
Las propiedades de la ventana están organizadas en forma de Fichas o Tabs, aquí la descripción de sus principales características:
General
‘Title’, indica el texto de título de la ventana. ‘Menú Name’, indica el nombre del objeto menú asociado con la ventana. ‘Window Type’, indica el tipo de ventana:
‘Window State’ establece la forma en que aparecerá la ventana al abrirse (minimizada, normal, maximizada). En ‘Icon’ podemos asociarle un icono. Entre otros.
Scroll: Establece si la ventana tendrá barras de desplazamiento, y la unidad de medida que se utilizara para ellas.
Toolbar: Permite definir si se utilizará la caja de herramientas definida para el menú, su presentación y posición.
Other: Permite definir la posición y tamaño de la ventana dentro de la pantalla.
Luego de definir las propiedades de nuestra primera ventana, estamos en condiciones de comenzar a agregar controles a esta. En la PowerBar, encontramos un icono que despliega una pequeña ventana donde aparecen todos los controles posibles a insertar en un objeto. Adicionalmente, es posible diseñar objetos que tengan características adicionales y utilizarlos también.
Controles
Como primera medida debemos crear un área de trabajo (workspace). Luego el objeto aplicación y ya estamos en condiciones de crear los objetos que compondrán nuestra aplicación. Recuerda:
WORKSPACE> TARGET OBJECT> LIBRARY> APPLICATION OBJECT
Crear el workspace
1. Para ello debemos hacer click en el botón New

2. El primer Tab de la ventana que emergerá es el destinado para workspace. Seleccionarlo y hacer click en Ok. Una nueva ventana se abrirá, donde deberemos seleccionar la ubicación y darle un nombre a este workspace. Usaremos el nombre de primera_aplicacion. Click en Guardar.
Podemos observar que la ventana SystemTree cambió, ahora aparece el nombre de nuestro workspace.
Crear el objeto aplicación
Una vez creado el workspace creamos el objeto aplicación. Crearemos una aplicación típica cliente-servidor.
1. Para ello debemos hacer click en el botón New

2. El segundo tab de la ventana es el destinado para el Target. Como vimos anteriormente el target nos indica el tipo de aplicación que crearemos.
Tipos de objetos aplicación
- Application: Crea una nueva aplicación.
- Template Application: Crea una nueva aplicación con objetos preconstruidos, útil para quienes ya conocen PowerBuilder.
- Existing Application: Incorpora una aplicación que existe, construida o no en una versión anterior de PB.
- EAServer Component: Crea una aplicación que use componentes de PB usando el Servidor EASserver.
- COM/MTS: Crea una aplicación que usa componentes Microsoft.
- Automation Server: Crea una aplicación que usa como servidor una aplicación de Windows.
3. Seleccionamos Application y click en Ok. En la ventana que se despliega colocamos el nombre de la aplicación, usaremos primera_aplicacion, el mismo que el del workspace. Automáticamente, Power Builder completa los campos siguientes, creando la librería principal (.pbl) y el del target (.pbt) con el mismo nombre dado a la aplicación. Click en Finísh.
De esta manera ya tenemos creado la arquitectura de nuestra aplicación ejecutable. El System Tree ahora se volvió mucho más interesante. Vemos el workspace, con el target, la librería asociada a él y un único objeto contenido en ella, el objeto aplicación.
Para entrar al código y propiedades del objeto aplicación, hacer click derecho y seleccionar la opción Edit del menú que se despliega o bien hacer dobleclick sobre él.
Las siguientes tablas detallan las propiedades y eventos predefinidos de PowerBuilder para el objeto aplicación.
Propiedades predefinidas de PowerBuilder
- AppName: De sólo lectura. Nombre del objeto aplicación.
- DisplayName: De sólo lectura. Nombre de la aplicación, que utilizaran otras aplicaciones para hacer referencia a esta.
- DWMessage Title: Título para las cajas de mensaje que se mostrara en tiempo de ejecución en la barra de título.
Los eventos son todos aquellos sucesos que le ocurren a la aplicación y a los que se puede asignar un script para que se realicen alguna acción cada vez que ocurra un suceso.
Eventos predefinidos de PowerBuilder
- Close: Cuando el usuario cierra la aplicación.
- ConnectionBegin: Obsoleto (usado para conexiones distribuidas con Power Builder)
- ConnectionEnd: Obsoleto (usado para conexiones distribuidas con Power Builder)
- Idle: Cuando la función Idle ha sido llamada en un script de un objeto aplicación y el número de segundos especificado hayan transcurrido sin actividad del teclado o del ratón.
- Open: Cuando se ejecuta una aplicación.
- SystemError: Cuando un error crítico ocurre en tiempo de ejecución (como tratar de abrir una aplicación no existente). Si no hay un script para éste evento Power Builder muestra un mensaje con el número de error y mensaje de error que ha ocurrido. Puede usarse para personalizar los errores.
Esta es la vista que tendremos del objeto aplicación, vemos el script, las propiedades, eventos, funciones y variables declaradas:
Front-End y Back-End
Un front-end es un constructor de interfaces, es una herramienta de programación donde se definen los formatos mediante los cuales se van a visualizar y manipular los datos. Un back-end es la herramienta que almacena los datos y los entrega al front-end para su manipulación. Por ejemplo, podemos usar como front-end a PowerBuilder y como back-end a ASA 8.0.
Cliente/Servidor
Cliente/Servidor es una organización de procesos, donde un proceso específico al que se le denomina servidor se dedica exclusivamente a atender los requerimientos que le envían un grupo de procesos denominados clientes.
Crear una ventana - Agregando objetos a la librería.
1. Click en el botón New

2. El tercer tab de la ventana, PB Object, es el destinado para el los objetos.
3. Seleccionamos Window y click en Ok.
Se abre el Windows Painter. La ventana aparece en el sector central. En la parte superior, dos barras nuevas se muestran, que contienen distintas herramientas de diseño. En la parte inferior de la ventana se muestran cinco tabs:
1. Layout: Permite visualizar la ventana en modo de diseño.
2. Open: Es el tab del script del objeto seleccionado. Por defecto muestra el script del evento open de la ventana.
3. Event list: Lista todos los eventos del objeto seleccionado.
4. Function list: Lista todos las funciones del objeto seleccionado.
5. Declare instante Variables: Área donde se declaran las variables Global, Shared, de instancia, y las External Function.
Estos tabs pueden cerrarse de a uno, excepto el del Layout. Una vez que el único tab visible es el del Layout, haciendo click derecho sobre la ventana y seleccionando script tendremos la vista siguiente, una forma de trabajar mucho más clara que la predefinida por PowerBuilder:
La primera propiedad que definiremos de esta ventana puede ser un titulo. Para ello, en el tab General de la ventana Propiedades, en Title escribimos: Ventana principal.
Las propiedades de la ventana están organizadas en forma de Fichas o Tabs, aquí la descripción de sus principales características:
General
‘Title’, indica el texto de título de la ventana. ‘Menú Name’, indica el nombre del objeto menú asociado con la ventana. ‘Window Type’, indica el tipo de ventana:
- Child!, ventana que permanece inserta dentro de una ventana MDI
- Main!, ventana principal, puede o no tener asociado un menú.
- Mdi!, ventana que contiene otras ventanas como documentos o Sheets (hojas) y se puede moverse entre ellas, y debe tener asociado un menú.
- MdiHelp!, igual que la anterior, y sirve como ayuda.
- Popup!, ventana de contexto o emergente.
- Response!, se necesita cerrar esta ventana para continuar la ejecución.
‘Window State’ establece la forma en que aparecerá la ventana al abrirse (minimizada, normal, maximizada). En ‘Icon’ podemos asociarle un icono. Entre otros.
Scroll: Establece si la ventana tendrá barras de desplazamiento, y la unidad de medida que se utilizara para ellas.
Toolbar: Permite definir si se utilizará la caja de herramientas definida para el menú, su presentación y posición.
Other: Permite definir la posición y tamaño de la ventana dentro de la pantalla.
Luego de definir las propiedades de nuestra primera ventana, estamos en condiciones de comenzar a agregar controles a esta. En la PowerBar, encontramos un icono que despliega una pequeña ventana donde aparecen todos los controles posibles a insertar en un objeto. Adicionalmente, es posible diseñar objetos que tengan características adicionales y utilizarlos también.
- CommandButton ( prefijo: cb_ ): Botones, con los que se disparan acciones (cancelar, cerrar o abrir ventanas, grabar, etc.)
- PictureButton ( prefijo: pb_ ): Botón con imágenes. Con casi todas las características del control anterior, además permite mostrar una imagen dentro de él.
- CheckBox ( prefijo: cbx_ ): Permite hacer una selección (marcarlo) entre varias opciones. Cada opción es independiente.
- RadioButton ( prefijo: rb_ ): Permite hacer una selección (marcarlo) entre varias opciones. Sólo una del grupo puede seleccionarse.
- StaticText ( prefijo: st_ ): Etiqueta o caja de texto. Muestra un texto sin posibilidad que pueda escribirse directamente en ella.
- StaticHyperLink ( prefijo: shl_ ): Muestra un texto y además permite establecer un hipervínculo(una URL para cargar una página web.
- Picture ( prefijo: p_ ): Contiene una imagen, que puede ser definida en tiempo de diseño o ser modificada en tiempo de ejecución.
- PictureHyperLink ( prefijo: phl_ ): Contiene una imagen y además permite asociar un hipervínculo.
- GroupBox ( prefijo: gb_ ): Agrupa cualquier conjunto de controles, es más que nada visual, a fin de aprolijar el diseño.
- Line ( prefijo: l_ ) Dibuja una línea recta.
- Oval ( prefijo: ov_ ): Dibuja un óvalo.
- Rectangle ( prefijo: r_ ): Dibuja un rectángulo.
- RoundRectangle ( prefijo: rr_ ): Dibuja un rectángulo con bordes redondeados.
- SingleLineEdit ( prefijo: sle_ ): Caja de edición de texto, usada para que el usuario escriba un texto en tiempo de ejecución, por ejemplo.
- EditMask ( prefijo: em_ ): Caja de texto, a la que se le puede restringir el conjunto de caracteres a ingresar, a través de un formato de presentación.
- MultiLineEdit ( prefijo: mle_ ): Permite el ingreso de varias líneas en una entrada de datos.
- RichTextEdit ( prefijo: rte_ ): Se usa para mostrar texto enriquecido(coloreado, en negritas, itálicas, subrayado, etc.)
- HScrollBar ( prefijo: hsb_ ): Barra de desplazamiento horizontal.
- VscrollBar ( prefijo: vsb_ ): Barra de desplazamiento vertical.
- HtrackBar ( prefijo: htb_ ): Barra de pistas horizontal.
- VtrackBar ( prefijo: vtb_ ): Barra de pistas vertical.
- HprogressBar ( prefijo: hsb_ ): Barra de progreso horizontal.
- VprogressBar ( prefijo: vsb_ ): Barra de progreso vertical.
- DropDownListBox ( prefijo: ddlb_ ): Caja de lista desplegable. Muestra un solo ítem, el seleccionado, de una lista que se despliega.
- DropDownPictureListBox ( prefijo: ddplb_ ): Similar al anterior pero soporta figuras por cada elemento que muestra.
- ListBox ( prefijo: lb_ ): Caja de lista. Muestra todos los ítems a la vez, pudiendo seleccionarse inclusive, más de uno.
- PictureListBox ( prefijo: plb_ ): Es una caja de lista con elementos gráficos y de texto.
- ListView ( prefijo: lv_ ): Crea una vista de objetos.
- TreeViev ( prefijo: tv_ ): Crea una vista tipo árbol.
- Tab ( prefijo: tab_ ): Separador de páginas, que pueden contener objetos visuales de PowerBuilder.
- DataWindow ( prefijo: dw_ ): Datawindow Control, el que se vincula con un objeto Datawindow.
- Graph ( prefijo: g_ ): Crea gráficos estadísticos, como los de Excel.
- Ole ( prefijo: ole_ ): Permite incorporar objetos OLE, estos pueden seleccionarse de una lista que aparece cuando en el menú principal vamos a Insert>Controls>OLE.
- USerObjetc ( prefijo: uo_ ): Permite incorporar objetos de usuario creados (objetos visuales, no visuales o combinación de ellos).
Para añadir un control a la ventana, simplemente seleccionamos el control del listado, click sobre el lugar en la ventana donde se añadirá y listo.
Como ya venimos repitiendo, cada objeto tiene asociado un script, los controles también. Para codificar un control, hacemos doble click sobre el o bien click derecho y seleccionamos Script del menú. por ejemplo, creamos un CommandButton en la ventana que servirá para salir de la aplicación. En las propiedades de este colocamos:
1. Name: cb_salir,
2. Text: &Salir y
3. Chequeamos la propiedad Cancel, que indica que el botón se comportara como un botón de cancelación (se dispara el evento Clicked si el usuario presiona la tecla ESC).
En el script del evento tipeamos:
Close(Parent)
Esta función cierra la ventana de nombre encerrado entre paréntesis (en este caso usamos un pronoun) y libera el espacio ocupado por ella y todos sus controles.
Al guardar la ventana, le damos el nombre de w_principal.
Controlar la navegación del usuario en una ventana
A través de las propiedades TabOrder y Protect, se puede controlar la navegación del usuario. TabOrder Determina el orden en el cual el control recibirá el foco cuando el usuario se desplace entre los controles de una ventana. Si para un control TabOrder es igual a 0, el control nunca tendrá el foco, por lo que no se podrá acceder a él en tiempo de ejecución. Puede tomar un valor entre 0 y 9999.
En el siguiente ejemplo, se setea la propiedad para tres controles en un script. El control EditMask tendrá el foco antes del control ListView y después del control CommandButton.
lv_1.TabOrder = 10
em_1.TabOrder = 15
cb_1.TabOrder = 20
También es posible setearlo desde el painter. Para una ventana: seleccionar de la barra de menú Format>Tab Order. En la ventana, se mostraran en rojo los números indicando el Tab Order para cada control visible. Con solo seleccionar uno de ellos se puede cambiar el valor de la propiedad. Por defecto PowerBuilder asigna un número de 10 en 10.
Protect se aplica a las columnas de un Datawindow, en el caso de que la ventana contenga un control Datawindow. Esta propiedad anula a lo establecido en la propiedad TabOrder. Cuando una columna esta protegida, el usuario no puede editarla a pesar de que el tab order de ésta sea un número mayor que 0.
- Un usuario no puede cambiar el valor de una columna si una de estas condiciones son verdaderas: TabSequence es 0.
- Edit.DisplayOnly es Yes cuando la columna tiene en las propiedades de Edit: edit style.
- Protect es 1
Solo la propiedad Protect permite especificar expresiones condicionales para hacer que algunos valores de una columna estén protegidos, y otros no.
Desde el painter datawindows, seleccionar el control y setear el valor de esta propiedad en la Vista de Propiedades, en el tab General (se puede poner el valor o una expresión condicional)
Sintaxis:
dw_control.Object.columnname.Protect
Argumento para Describe y Modify:
"columnname.Protect { = ' integer ' }"
En los siguientes ejemplos, se muestran las sintaxis para todos los casos.
string setting
setting = dw_1.Object.emp_stat.Protect
dw_1.Object.emp_stat.Protect = 1
setting = dw_1.Describe("emp_stat.Protect")
dw_1.Modify("emp_stat.Protect=1")
//--definiendo una expresión condicional para Protect dw_1.Modify("emp_stat.Protect='1~tIf(IsRowNew(),0,1)'")
Gracias por el aporte
ResponderEliminarHola, tengo un ejercicio en pipeline a hacer y la veerdad no sé como empezar y la concepcion, puede ud me dar una idea por favor? gracias. fftk1@yahoo.fr
ResponderEliminarEl ejercicio a descargar un archivo CSV en tres basos de datos a MangoDb Cassandra, y sql.
back-end : Spring Data
front-end : Angular
Dos servidores:
- BACK : servlets Java
- FRONT : Angular 6
Gracias