1
Hoy empezaremos con el tutorial de PowerBuilder Fundation Class, el cual tiene el propósito
de ir conociendo esta nueva arquitectura de librerías llamada PowerBuilder Fundation Class
que por sus siglas se conoce como PFC.
En cada post se irá tratando temas acerca de estas librerías y sus objetos e ir avanzando
gradualmente hasta poder construir aplicaciones basadas en PFC.
Ahora que sabemos que es PFC hablemos sobre las librerías y objetos.
PFC esta liberado como una conjunto de librerías PowerBuilder (PBLs). Estas librerías
contienen los objetos ancestros y descendientes que podemos usar para construir aplicaciones
con PFC.
Librerias PowerBuilder
Antes de usar algún objeto PFC, debemos añadir las librerías PFC a nuestras librerías de
aplicación, en nuestro PATH donde estamos trabajando.
Objetos PowerBuilder
Objetos Propósito
Windows La interfaz entre el usuario y la
aplicación PowerBuilder.
Menus Lista de opciones que se usara para
seleccionar o abrir alguna ventana.
Objeto DataWindow Usado para recuperar, presentar y
manipular los datos.
Objetos de Usuario Componentes reusables que se definen
una sola vez y se puede usar muchas
veces.
Estos objetos heredan las definiciones del PowerBuilder NonVisualObject class, estos
objetos encapsulan datos y código. Este tipo de objeto de usuario le permite
definir un objeto de cero.
PFC usa estos tipo de objetos para implementar muchos de sus servicios.
Herencia
La herencia hace posible que se pueda crear objetos que deriven de objetos existentes, con
acceso a sus componentes visuales, data y código. La herencia mejora la codificación,
maximiza la reutilización de código y mejora la consistencia.
Encapsulación
Polimorfismo
Polimorfismo, son funciones que tienen el mismo nombre pero argumentos diferentes.
Nivel de extensión PFC y PFE
PFC implementa un nivel de extensión en todas su jerarquía de herencia, este nivel de
extensión se encuentran en las librerías PFE. Cuando haya una actualización a la última
versión de PFC solo se actualizara el nivel ancestro PFC.
Nivel Nombre
Objetos Ancestro Usa el prefijo pfc_
Objetos Extensión Tiene el mismo nombre
como su ancestro, pero sin
el prefijo pfc_
Por ejemplo, el objeto ancestro para el
servicio DataWindow es pfc_n_cst_dwsrv; el objeto descendiente
es n_cst_dwsrv.
Para poder seguir el tutorial y usar ejemplos prácticos, se desarrollara un pequeño sistema de
ventas de artículos, el cual contara con mantenimiento de tablas maestras, cliente, artículos;
Generación de comprobante de venta, Boleta o Factura y creación de reportes de ventas.
Para ello haremos uso intensivo de los servicios que nos brinda PFC.
Primeros Pasos:
PFCAPSRV.PBL
PFCDWSRV.PBL
PFCMAIN.PBL
PFCUTIL.PBL
PFCWNSRV.PBL
PFEAPSRV.PBL
PFEDWSRV.PBL
PFEMAIN.PBL
PFEUTIL.PBL
n_cst_appmanager entre otras cosas nos permite conectarnos a la Base de Datos y definir los
servicios que tendrá nuestra aplicación. Este objeto lo encontramos en la librería
PFEAPSRV.PBL, la cual contiene los servicios de Aplicación.
n_cst_appmanager
Instanciando n_cst_appmanager
1. Definimos una variable global llamada gnv_app, que se lee Global No Visual
Application, esta variable será del tipo n_cst_appmanager.
n_cst_appmanager gnv_app
2.
4.
Ahora codificamos el objeto n_cst_ appmanager para que se ajuste a nuestro propósito, para
ello haremos uso de las variables de instancia e inicializaremos algunos servicios.
int li_version_mayor,li_version_menor
date ld_ahora
ld_ahora = Today()
/*Obtiene la version*/
GetContextService ( 'ContextInformation', lcx_Aplicacion )
lcx_Aplicacion.GetMajorVersion(li_version_mayor)
lcx_Aplicacion.GetMinorVersion(li_version_menor)
2. Creamos la ventana principal, el cual será heredado del objeto w_frame, que se
encuentra en la librería PFEMAIN.PBL. A esta nueva ventana la
llamaremos w_principal_ventas.
4.
integer li_return
If li_return=1 Then
SetMicroHelp("Validación de Ingreso Correcta")
Else
messagebox(gnv_app.iapp_object.DisplayName,"Validación de Ingreso
Incorrecta", StopSign!)
Close(This)
Return
End If
6.
El código invoca la ventana de Login para el ingreso de las credenciales de conexión,
seguidamente al hacer clic en aceptar invoca al evento pfc_logon del
objeto n_cst_appmanager.
String ls_inifile
If SQLCA.of_Connect() = -1 Then
This.inv_error.of_message(gnv_app.iapp_object.DisplayName, + &
"Error conectando a la Base Datos.", StopSign!, OK!)
Return -1
Else
Return 1
End If
End If
8.
El código obtiene los datos de conexión del archivo INI, y seguidamente realiza la
conexión usando las credenciales ingresadas en la ventana de Login.
Llegado a este punto, tenemos nuestra aplicación con su respectiva ventana Login y su
ventana principal.
Como se puede observar las librerías PFC nos ahorran mucho trabajo de codificación para
construir herramientas de calidad.