viernes, 21 de diciembre de 2012

Como hacer la suma de dos numeros en Power Builder - Algoritmo

Primero tenemos q ver la sintaxis del código en Power Builder, el cual se le denomina PowerScript.

Para ello, se vera un ejemplo: La suma de 2 numeros.

Primero: Creemos un WorkSpace, una Aplicación, y una Ventana.

Luego Diseñamos la siguiente ventana:

Segundo:
Cambiaremos los nombres de los controles SingleLineEdit: Sle_n1, Sle_n2,  CommandButton: Cb_Sumar y  EditMask: em_r.

Tercero:
Luego damos doble click al boton: cb_sumar, y en el evento Clicked pondremos el siguiente Script:


Explicación del Código:

Primero se declara las variables, li_n1, li_n2, li_r. Se coloca "li" por el estandar de programación, que significa que L es el ambito, e I es el tipo de datos, tenemos distintos ambitos de una variable: Local, Instancia, Shared o Global.

Luego capturamos los datos que vienen de las cajas de texto: Sle_n1, Sle_n2, el cual ponemos la propiedad .text para capturar la cadena. De esta manera tenemos que convertir este dato en cadena a un dato númerico, ya que al sumar estas variables, se requiere numeros porque si son cadenas, se concatenarian.

Es por ello que se pone: Li_n1 = Integer(sle_n1.text) donde este código quiere decir, la cadena que viene de la caja de texto será convertida a entero. Igualmente se hace con la segunda caja de texto.

Luego hacemos el proceso: Li_R = li_n1 + li_n2. Con esto hacemos la suma de dos números.

Y al final queremos mostrar el resultado en la caja de texto em_r, pero sólo se puede insertar un dato cadena más no un dato número. Es por eso que se tiene que convertir un dato Número a un dato Cadena. Y usamos: em_r.text = String(li_R).

El "String" significa cadena y esto hace que la varible númerica cambie a cadena.

martes, 18 de diciembre de 2012

Ambito de una variable

En primer lugar definiremos que es un ámbito:

Definición: Espacio comprendido dentro de unos límites determinados. El ámbito de una variable es el contexto dentro del que la variable está definida.
 
En power Builder existen 6 tipos de ámbitos: Local, Instancia, Shared, Global, Local Externo, Global Externo.

-->
Ámbito de la variable
declaración
Visibilidad
Tiempo de vida
Local
Script
Sólo  el script en el que se declara
Hasta que el script termine
Instancia
Instance Variables
Para todos los scripts dentro de una instancia simple del objeto en que es declarado y opcionalmente a la entera aplicación. Los siguientes tipos de objetos pueden tener variables de instancia: Ventana, aplicación, objeto de usuario y menú.
Hasta que la instancia del objeto se cierre.
Compartida
Shared Variables
Para todos los scripts dentro de las instancia  de los objetos en el que es declarado . Los siguientes tipos de objetos pueden tener variables de instancia: Ventana, aplicación, objeto de usuario y menú.
Hasta que termine
Global
Global Variables
Para todos los scripts en una aplicación
Hasta que la aplicación termine.
FUNCIONES EXTERNAS
Global y External functions
Declaración de funciones fuera del ámbito de Power Builder como lo son las FUNCIONES API DE WINDOWS
Hasta que termine la aplicación.
 
Para Local y Global Externo se usan cuando trabajamos con librerias o DLL de terceros. En nuestro caso dejaremos para despues este estudio.

Para nuestro ejemplo practico, crearemos una WorkSpace, una aplicación y una ventana, el nombre lo dejo a su criterio, En mi caso lo llame: w_instancia. Y diseñamos la siguiente ventana:

Insertaremos 4 SingleLineEdit , 4 StaticText, y 4 CommandButton. Pondremos los nombres a los controles: Sle_local, Sle_instancia, Sle_shared, Sle_global; y para los botones: cb_Local, cb_Instancia, cb_Shared, cb_Global.

En el botón Cb_local, escribimos el siguiente código:

Luego nos situamos en la pesataña donde dice: Declare Instance Variables.


Le damos click y escribimos: int ii_cont= 1, en esta parte sólo se declaran las variables. Luego en el botón cb_instancia, ponemos el siguiente Script:

Para declarar variables Shared, tenemos que buscarlo en el combo desplegable donde dice: Shared Variables. En el botón cb_shared, ponemos el siguiente Script:


Luego cambiamos la declaración de varibales a global: Global Variables, y declaramos:gi_cont = 1. Luego insertamos en el boton cb_global lo siguiente:

 Pero antes de eso, creamos esta ventana llamada: w_global, para que no nos salga error. Y lo diseñaremos de esta forma:


y ponemos el código en el boton global. en la ventana: w_Global. Estamos usando el mismo nombre para el control commandbutton. Nos damos cuenta que ya no declaramos la variable global en la ventana w_global, porque ya no es necesario ya que se declaro en la otra ventana y esa variable se usa para todo el proyecto.



Luego insertamos en las dos ventanas en el evento Open, los siguientes Scripts.

W_instancia:

W_global:

No nos olvidemos de escribir el código para abrir la ventana w_instancia en el evento de la aplicación, sin esto no correra el programa:



Explicación del Programa:

Lo que hemos echo es un programa donde se muestra el incremento de una variable llamada: cant donde es de tipo integer, y tiene 4 ámbitos: Local, Instancia, Shared y Global.

Cuando una variable es de ámbito Local, el ciclo de vida de la variable seria: se declara dentro del control, se crea en él, se procesa en el control y se destruye en el control. Es por eso que cuando le doy click al boton local, sólo me sale 1, y no aumenta porque siempre se crea en uno y muere siendo uno.


Cuando una variable es de ámbito Instancia, el ciclo de vida es asi: Se declara y crea en la ventana, se procesa en toda la ventana y se destruye cuando se cierra la ventana. Es por eso que cuando le das click al boton instancia, se incrementa.


Cuando una variable es de ámbito Shared, el ciclo de vida seria: Se declara y crea en la ventana, se procesa en la ventana, y se destruye cuando se cierra el proyecto. Es por eso que cuando le das click aumenta en la ventana, al momento de cerrarla, esa variable no se destruye ya que si vuelves a abrir aquella ventana, te saldra el valor ultimo que tenia el si_cont.


Y cuando es Global, es a nivel de todo el proyecto. El ciclo de vida es: Se declara y se crea en el proyecto, se procesa en todo el proyecto, y se destruye cuando se cierra el proyecto. Es por eso que esa variable pasa de ventana en ventana y aumenta en las dos ventanas de este ejemplo.


Gracias por su tiempo. Espero que les ayude.

lunes, 17 de diciembre de 2012

Iniciando un proyecto en Power Builder

Vamos a comenzar a crear nuestra primera ventana de ejemplo.

En Power Builder se crean 3 tipos de archivos: el Espacio de trabajo, la aplicacion, y la libreria.

Todo proyecto necesita estar dentro de un Espacio de trabajo (WorkSpace) para poder funcionar, asi que nos vamos a File / New  o control + N. Nos saldra una ventana asi:

Escogemos WorkSpace, y le damos Ok. Luego nos saldra donde lo queremos guardar. Y lo guardamos en el lugar donde ud. quiera. En mi caso lo guardare en el escritorio, creare una carpeta llamada Demo y ahi lo guardare como: Wsk_demo.
Una vez creado el Espacio de trabajo, tenemos que crear la aplicacion, en nuestro caso usaremos la primera opcion, aunque existen muchas aplicaciones que se pueden crear (Web, Componente, .Net) pero como queremos una aplicacion Escritorio nos situamos en la primera opcion: Nos vamos de nuevo a File / New y nos situamos en la pestaña: Target. Nos ponemos en Application y luego Ok.


Nos saldra una ventana donde nos pedira el nombre de la aplicaccion, tenemos que ponerle: App_nombre, en nuestro caso lo pondre: App_demo. Esto se generará dos archivos, uno que es la aplicación y otra es la libreria. En la libreria estarán todos los Objetos PB (Ventanas, Menu, Estructuras, Funciones, Clases, etc).
Al realizar todo esto, nuestro arbol quedaria de esta manera:
Al llegar hasta este punto, tenemos ya el espacio para diseñar nuestro sistema, ahora por ultimo nos vamos a File / New o Control + N, y nos vamos a la pestaña: PB Object. y escogemos Window y le damos click en OK.

Luego nos saldra la ventana para diseñar. Ahora tenemos que grabar esa ventana, para que se coloque en la vista del arbol de la parte izquierda. Ahora tienes que ir a File / Save As... y ponemos: W_ejemplo01, siempre sé coloca un W por ser ventana, S de structura, Wsk de WorkSpace, App de Aplicacion, de esa forma se coloca en Power Builder ya que es una estandarización.
Una vez echo esto, recien en nuestro View Tree saldra el objeto creado, en este caso la ventana:

Ahora nos pondremos a diseñar y programar nuestra ventana llamada: W_ejemplo01, y una vez diseñada, para poder ejecutar el proyecto, tienes que presionar: control + R, pero para esto tienes que ir a donde dice: app_demo, y en el evento Open debes colocar el siguiente codigo:
Y con este código abriremos la ventana creada, o cualquier ventana que agregemos y queramos abrir. 

Hasta la proxima.!

martes, 11 de diciembre de 2012

Evento Timer en Power Builder

En esta ocasión, vamos a revisar un código muy interesante para comenzar a familiarizarse con el Power Script, para esto vamos a realizar la siguiente ventana:

 Ponemos los siguientes controles: ov_bolita (Oval Control), cb_play (Command Button), y cb_stop (Command Button).


Escribir el siguiente código en la variable Instancia:


Luego en el evento Open de la ventana, escribimos el siguiente código:


y en el evento TIMER de la ventana escribir el siguiente código:


Luego escribir en los botones el siguiente código:


cb_play Evento: Clicked


cb_stop Evento : Clicked


Ejecución:







Explicación:


Lo que usamos en este ejemplo es un simple algoritmo el cual hace que la bolita se mueva en forma de cuadrado en todo el formulario, y a la vez cambie de color cada vez que avanza. El codigo esta en el evento timer, y usamos las condiciones en cuatro momentos.


Cuando va hacia la derecha, el x del oval va incrementando, hasta que llegue al limite del ancho del formulario, cuando el x haya llegado al ancho de la ventana, cambiara el flag del lado derecho y pasara al ib_abajo, luego sigue evaluando esta parte hasta que llegue a la altura maxima de la ventana, cuando la Y del oval va aumentando, habra otra condicion que desactivara el flag de abajo y activara el flag de la izquierda y comenzamos a restar el X hasta llegar a anchura = 0 luego cambiamos el flag de derecha y activamos el flag de arriba y asi de esa forma hasta llegar a altura = 0, hacemos que el oval simula que esta corriendo. 


Todo esto se hace con el timer, en el open de la ventana se especifica un tiempo en milisegundos, a mas tiempo mas rapido sera, ejemplo 0.001 milisegundos, esto quiere decir que nuestro timer correra cada 0.001 milisegundos.


Si quieres descargar el código fuente entra al siguiente link:

Hasta la proxima!!

jueves, 6 de diciembre de 2012

Factorial en Power Builder

Hoy explicaremos un poco del entorno de trabajo de PB, bien como hemos estado siguiendo este post, hasta este momento ya tienes q saber crear un WorkSpace, una aplicacion, tu ventana, al menos saber como declarar variables, toda esa informacion si no lo sabes puedes encontrarla en los siguientes links:




Ok, vamos al estudio:

Crearemos un WorkSpace llamado: wrk_factorial, una aplicaccion llamada: app_factorial, y una ventana: w_factorial.

Luego diseñamos la siguiente ventana:


La idea es hacer un programa que calcule el factorial de un número, donde un factorial es la multiplicación de sus anteriores numeros, por ejemplo el factorial de 5 es igual a decir: 1 x 2 x 3 x 4 x 5. Lo que quiero tratar de explicarles es que en Power builder se puede hacer de 3 formas este programa, de una forma facil hasta una forma compleja. 
 
En el boton: cb_calcular pondremos el siguiente código:


En este ejemplo, mostramos una solucción usando la estructura repetitiva FOR, donde tomamos el primer valor hasta el ultimo, y lo multiplicamos, asignandolo en la variable de tipo long: ll_f, y luego lo mostramos.

En el boton: cb_calcular2 pondremos el siguiente código:

Como veran en este código, sólo use 3 lineas de código, y use la funcion externa de PB llamada FACT que me permite el calculo del factorial de un número.

Esta parte se implementara usando una funcion llamada: f_factorial. Para ello vamos a crear una funcion externa, iremos a New / PB Object / Function.

Una vez hecho eso, tratamos de configurar nuestra funcion de la siguiente manera:

Aqui nos dice que nuestra funcion retornara un LONG, y tiene un argumento llamado: al_n de tipo LONG. El código nos muestra una funcion recursiva para hallar el factorial. (Funcion recursiva se le llama a una funcion que se llama a si misma) Aunque es una buena manera de explicar lo recursivo. Lo que nos indica este codigo es que el número ingresado ira restando hasta llegar a 1, cuando llegue a 1, el programa retornara 1, entonces comenzara a hallar las iteraciones.

Ejemplo: F_factorial ( 4 )

1a Iteracion
al_n = 4
al_n > 1
salida ← 4 * f_factorial(3) (Guarda el valor de  al_n = 4)
2a Iteracion
al_n > 1
salida ← 3*f_factorial(2) (Guarda el valor de 
al_n = 3)
3a Iteracion
al_n > 1
salida ← 2*f_factorial(1) (Guarda el valor de 
al_n = 2)
4a Iteracion
al_n = 1 → retorna 1
3a Iteracion
(recupera  al_n=2 de la pila) retorna 1*2=2
2a Iteracion
(recupera  al_n=3 de la pila) retorna 2*3=6
1a Iteracion
(recupera  al_n=4 de la pila) retorna 6*4=24

Valor de retorno → 24


Para finalizar: 

En el boton: cb_calcular3 pondremos el siguiente código:


Luego de esto, sólo ejecutaremos la ventana: w_factorial. Eso tenemos que ponerle en la propiedad de la aplicación: Open(w_factorial). Bien ejecutemos:


¿Cual de todo estos códigos te hizo sentir bien?, Espero que sea el de la función recursiva. Con esto finalizamos el factorial en un número en PB.

Si quieres descargar el código fuente entra al siguiente link:


Hasta la proxima!!

lunes, 3 de diciembre de 2012

MENU en Power Builder

Para crear un Menu, debes de tener un espacio de trabajo, luego deberas de crear una aplicacion y una ventana si es necesario, primero debes de ir a New / PB Object/ Menu




Las partes del Menu son lo siguientes:


Comenzamos a diseñar el siguiente Menú en la parte de vista del árbol del menú.
Le damos clic derecho y nos saldra este menu desplegable, donde le daremos a: Insert Submenu Item para poder agregar nombres al menú.


De esta forma, elabora el siguiente Menu:

Para poner esas imagenes deben de ir a la propiedad del menu y escoger: MenuImage, esta propiedad sale cuando das clic a los elementos del menú.Esta imagen es para que se muestre en el menu en el lado izquierdo.


Pero para que esta imagen salga en el menú debes de convertir tu menu tradicional a conteporaneo, para esto, te vas a la raiz del menú, y le das clic al nombre del menu en la vista del árbol. Y nos saldra las propiedades del menú, para esto debes de hacer el siguiente cambio:





Si quieres que la imagen se muestre abajo del menú, debes ir a la otra pestaña: en ToolbarItemName. La opcion ToolbarItemSpace es para que separe los objetos en el menú.
Con esto habras terminado de hacer el menú. Ahora tienes que abjuntarlo a tu ventana MDI, para esto creas una ventana llamada: w_principal, y haces las siguientes configuraciones en las propiedades de la ventana.










La ventana MDI necesita de un MENU, por lo tanto si escoges MDI el tipo de ventana y quieres grabar, Power Builder no te dejara grabar hasta que le asignes un MENU a tu ventana por ser MDI. Y te saldra este tipo de error.


Una vez hecho esto, ejecuta tu ventana w_principal, y deberas de ver esto:


Para poder abrir ventanas desde el menu debes de ir a cada objeto del menu e insertar en el área del Script el siguiente código:

Opensheet (ventana que quieres abrir , ventana que contiene el menu  , 2, Original!)

Para configurar tu impresora puedes insertar el siguiente codigo:

PrintSetup()



Si quieres descargar el código fuente entra al siguiente link:

Hasta la proxima!!