Anda di halaman 1dari 10

Tutorial PowerBuilder Fundation Class - Parte 3

Nuestra Primera aplicacin en PowerBuilder PFC.


En las siguientes partes de este tutorial de PowerBuilder Fundation Class veremos los pasos para configurar,
ejecutar y crear una aplicacin usando PFC.
Para poder seguir el tutorial y usar ejemplos prcticos, se desarrollara un pequeo sistema de ventas de
artculos, el cual contara con mantenimiento de tablas maestras, cliente, artculos; Generacin de
comprobante de venta, Boleta o Factura y creacin de reportes de ventas. Para ello haremos uso intensivo de
los servicios que nos brinda PFC.
Primeros Pasos:
1.
2.

Creamos nuestro Workspace y nuestro objeto Application.


Para efectos del tutorial se creara el Workspace y el objeto Application con el nombre demoventas.

3.

Aadimos las libreras PFC a nuestro target:


PFCAPSRV.PBL
PFCDWSRV.PBL
PFCMAIN.PBL
PFCUTIL.PBL
PFCWNSRV.PBL
PFEAPSRV.PBL
PFEDWSRV.PBL
PFEMAIN.PBL
PFEUTIL.PBL

Objeto de usuario n_cst_appmanager


n_cst_appmanager es el gestor de la aplicacin y funciona como sustituto del objeto Application. Este objeto
contiene muchas funciones tiles as como referencia a variables para los servicios de aplicacin.
n_cst_appmanager entre otras cosas nos permite conectarnos a la Base de Datos y definir los servicios
que tendr nuestra aplicacin. Este objeto lo encontramos en la librera PFEAPSRV.PBL, la cual contiene los
servicios de Aplicacin.

Pgina 1 de 10

n_cst_appmanager
La clase ancestro de n_cst_appmanager es pfc_ncst_app_manager, en la siguiente imagen se puede
apreciar la jerarqua de herencia para la clase n_cst_appmanager.

Instanciando n_cst_appmanager
La mejor manera de hacer uso de la clase n_cst_appmanager es creando un objeto descendiente del
mismo, en el cual se agregara el cdigo para personalizar nuestra aplicacin.
Para efectos del tutorial usaremos y modificaremos directamente la clase n_cst_appmanager, pero
cuidado!, no modificar la clase ancestro pfc_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.
Pgina 2 de 10

n_cst_appmanager gnv_app
2.
3.

En el evento Open de nuestro objeto Application instanciamos la clase n_cst_appmanager e


invocamos al evento pfc_Open.
gnv_app = CREATE n_cst_appmanager
gnv_app.Event pfc_Open(commandline)

4.
5.

En nuestro objeto Application, en la pestaa General, abrimos la ventana de preferencias Additional


Properties y modificamos el valor de SQLCA, por n_tr, y el de Message, por n_msg.
Antes:
SQLCA: transaction
SQLDA: dynamicdescriptionarea
SQLSA: dynamicstagingarea
Error: error
Message: message

Despus:
SQLCA: n_tr
SQLDA: dynamicdescriptionarea
SQLSA: dynamicstagingarea
Error: error
Message: n_msg

Configurando nuestra aplicacin.


Ahora codificamos el objeto n_cst_ appmanager para que se ajuste a nuestro propsito, para ello haremos
uso de las variables de instancia e inicializaremos algunos servicios.
1.

En el evento constructor de n_cst_appmanager agregamos el siguiente cdigo.

Pgina 3 de 10

/*El objeto ContextInformation, provee de informacion referente a la aplicacion que esta ejecutandose
como Numero de Versin, Nombre de la Compania, Nombre del Ejecutable, etc.*/
ContextInformation lcx_Aplicacion

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)

/*Establece el nombre de la aplicacin*/


iapp_object.displayname = 'Demo Sistema Ventas - Tutorial PFC'

/*Activa el servicio Microhelp*/


of_SetMicroHelp ( True )

/* Establece el nombre del archivo de ayuda. Poner esto solo si se dispone de la ayuda correspondiente.*/
of_SetHelpFile ( 'ayuda.hlp' )

/* Establece la versin de la aplicacion*/


of_SetVersion ( 'Version ' + String ( li_version_mayor ) + '.' + String ( li_version_menor ) + '.00' )

/* Establece el logo de la aplicacion*/


of_SetLogo ( 'DemoVentas.bmp' )

/* Establece el mensaje de copyright*/


of_SetCopyRight ( 'Copyright (c) 2011-' + String ( Year ( ld_ahora ), '0000' ) + ' Demo Sistema Ventas' )

/*Activa el servicio de preferencia de la aplicacion*/


of_SetAppPreference ( True )

If IsValid ( inv_apppref ) Then

Pgina 4 de 10

inv_apppref.of_SetRestoreApp ( False )
inv_apppref.of_SetRestoreUser ( True )
inv_apppref.of_SetUserKey ( of_GetUserKey ( ) )
End If

/*Establece el nombre del archivo INI*/


of_SetAppIniFile('conexion.ini')

2.

Creamos la ventana principal, el cual ser heredado del objeto w_frame, que se encuentra en la
librera PFEMAIN.PBL. A esta nueva ventana la llamaremos w_principal_ventas.

3.

Codificamos el evento pfc_open del objeto n_cst_appmanager.

En este evento
mostraremos una venta splash, y activaremos los servicios de registro
de transacciones y de mensajes de error. Seguidamente abriremos la
ventana principal de nuestra aplicacin.

//Muestra el la ventana Splash


of_Splash(1)

/*Este servicio es util cuando se utiliza ms de un objeto de transaccion, al usar el servicio se consigue que al
cerrar la aplicacion todos los objetos transaction se cierren y
destruyan*/
of_SetTrRegistration(TRUE)

//Inicia el servicio de mensajes de error.


of_SetError(TRUE)

//Abrimos la ventana principal


Open(w_principal_ventas)

4.
5.

Al invocar la ventana w_principal_ventas, en el evento open invocaremos la funcin


gnv_app.of_logondlg() , la cual mostrara la ventana de Login para ingresar el usuario y contrasea,
para conectarnos a la Base de Datos.
En el evento open de la ventana w_principal_ventas

ingresamos el siguiente cdigo.

integer li_return

Pgina 5 de 10

//Invocamos la ventana de Login para la validacion de Ingreso


li_return= gnv_app.of_logondlg()

If li_return=1 Then
SetMicroHelp("Validacin de Ingreso Correcta")
Else
messagebox(gnv_app.iapp_object.DisplayName,"Validacin de Ingreso Incorrecta", StopSign!)
Close(This)
Return
End If

6.

7.

El cdigo invoca la ventana de Login para el ingreso de las credenciales de conexin, seguidamente
al hacer clic en aceptar invoca al evento pfc_logon del objeto n_cst_appmanager.

En el evento pfc_logon del objeto n_cst_appmanager ingresamos el siguiente cdigo.

String ls_inifile
//Recupera el nombre del archivo INI
ls_inifile = gnv_app.of_GetAppIniFile()

//SQLCA.of_Init, inicia los valores registrados en el archivo INI, como el DBMS, SERVERNAME, DATABASE,
If SQLCA.of_Init(ls_inifile, "Login") = -1 Then
This.inv_error.of_message(gnv_app.iapp_object.DisplayName, + &
"Error iniciando los valores de conexin, .INI no encontrado.")
Return -1
Else
//Setea los datos del usuario y contrasea ingresados
SQLCA.of_setlogidandpassword(as_userid,as_password)

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

Pgina 6 de 10

End If
End If

8.
El cdigo obtiene los datos de conexin del archivo INI, y seguidamente realiza la conexin usando
las credenciales ingresadas en la ventana de Login.

Llegado a este punto, tenemos nuestra aplicacin con su respectiva ventana Login y su ventana principal.
Como se puede observar las libreras PFC nos ahorran mucho trabajo de codificacin para construir
herramientas de calidad.
Si desea puede descargar las fuentes de la aplicacin con lo avanzado hasta el presente tutorial.
Publicado por Elmer Ventocilla en 17:32 7 comentarios
Enviar por correo electrnicoEscribe un blogCompartir con Twitter Compartir con Facebook
Etiquetas: Tutorial PFC
Reaccion
es:

Tutorial PowerBuilder Fundation Class - Parte 2


Programacin orientada a objetos
La programacin orientada a objetos se basa en tres principios fundamentales:
Herencia
La herencia hace posible que se pueda crear objetos que deriven de objetos existentes, con acceso a sus
componentes visuales, data y cdigo. La herencia mejora la codificacin, maximiza la reutilizacin de cdigo
y mejora la consistencia.
Encapsulacin
Encapsulacin, tambin llamado ocultacin de informacin. Esto significa que un objeto contiene sus propios
datos, permitiendo el acceso desde el exterior, segn corresponda. PFC implementa encapsulacin de la
siguiente manera:

PFC instancias variables como publico o protegido, dependiendo el grado de acceso desde el
exterior. El acceso de lectura a estas variables se realiza mediante funciones de objetos, PFC
generalmente provee estas funciones como of_GetVariableName().
Para variables de tipo Boolean, PFC provee funciones of_Isvariablename().

Para modificar variables, PFC provee funciones of_Setvariablename().

En ciertos casos, PFC define variables como pblicas, en estos casos el acceso es directo.

Polimorfismo
Polimorfismo, son funciones que tienen el mismo nombre pero argumentos diferentes.

Pgina 7 de 10

Nivel de extensin PFC y PFE


PFC implementa un nivel de extensin en todas su jerarqua de herencia, este nivel de extensin se
encuentran en las libreras PFE. Cuando haya una actualizacin a la ltima versin de PFC solo se actualizara
el nivel ancestro PFC.

Contenido

Nivel Ancestro (PFC)

Nivel Extensin(PFE)

Aplicacin y servicios globales.

PFCAPSRV.PBL

PFEAPSRV.PBL

Servicios DataWindow

PFCDWSRV.PBL

PFEDWSRV.PBL

Objetos visuales y objetos estndar de


usuario.

PFCMAIN.PBL

PFEMAIN.PBL

Servicios de utilitarios

PFCUTIL.PBL

PFEUTIL.PBL

Servicios de ventana

PFCWNSRV.PBL

PFEWNSRV.PBL

Cualquier modificacin de la aplicacin PFC se debe realizar en el nivel de extensin. No modifique ningn
objeto del nivel ancestro.

Convencin de nombres de objetos PFC


PFC usa la siguiente convencin de nombres:
Nivel

Nombre

Objetos Ancestro

Usa el prefijo pfc_

Objetos Extensin

Tiene el mismo nombre como su


ancestro, pero sin el prefijo pfc_

Pgina 8 de 10

Por ejemplo, el objeto ancestro para el servicio DataWindow es pfc_n_cst_dwsrv; el objeto descendiente
es n_cst_dwsrv.
Publicado por Elmer Ventocilla en 11:43 0 comentarios
Enviar por correo electrnicoEscribe un blogCompartir con Twitter Compartir con Facebook
Etiquetas: Tutorial PFC
Reaccion
es:

Tutorial PowerBuilder Fundation Class PFC - Parte 1

Hoy empezaremos con el tutorial de PowerBuilder Fundation Class, el cual tiene el propsito de ir conociendo
esta nueva arquitectura de libreras llamada PowerBuilder Fundation Class que por sus siglas se conoce como
PFC.
En cada post se ir tratando temas acerca de estas libreras y sus objetos e ir avanzando gradualmente hasta
poder construir aplicaciones basadas en PFC.
Antes que nada revisemos el artculo sobre qu es PFC?.
Ahora que sabemos que es PFC hablemos sobre las libreras y objetos.
PFC esta liberado como una conjunto de libreras PowerBuilder (PBLs). Estas libreras contienen los objetos
ancestros y descendientes que podemos usar para construir aplicaciones con PFC.

Librerias PowerBuilder
Antes de usar algn objeto PFC, debemos aadir las libreras PFC a nuestras libreras de aplicacin, en
nuestro PATH donde estamos trabajando.
Objetos PowerBuilder
Estos son los principales objetos que se usa con PFC:

Objetos

Propsito

Windows

La interfaz entre el usuario y la aplicacin


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

Pgina 9 de 10

vez y se puede usar muchas veces.

Hay dos tipos de objetos de usuario:


- Objeto de usuario visual
- Objeto de usuario de clase (no visual)
Objeto de usuario visual
Un objeto de usuario visual es un control visual reusable que contiene un comportamiento
predefinido. PFC incluye dos tipos de objetos de usuario visual:

Objeto de usuario visual estndar, PFC proporciona un completo conjunto de objetos


visuales estndar, estos objetos incluyen comportamientos pre definido y una completa
integracin con los servicios PFC. Por ejemplo el objeto de usuario visual u_dw es un objeto
DataWindow el cual ofrece una extensa funcionalidad e integracin con los servicios PFC.

Objeto de usuario visual Personalizado, PFC tambin utiliza objetos de usuario visual
personalizados que contienen un grupo de controles. Estos objetos proporcionan
funcionalidades avanzadas para usarlas en situaciones especficas.

Objeto de usuario de clase (no visual)


Estos objetos heredan las definiciones del PowerBuilder NonVisualObject class, estos objetos
encapsulan datos y cdigo. 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.

Pgina 10 de 10