Tutorial PowerBuilder Fundation Class - Parte 3 Nuestra Primera aplicación en PowerBuilder PFC. En las siguientes partes de este tutorial de PowerBuilder Fundation Class veremos los pasos para confgurar, ejecutar y crear una aplicación usando PFC. Para poder seguir el tutorial y usar ejemplos prácticos, se desarrollara un pequeo sistema de ventas de art!culos, el cual contara con mantenimiento de ta"las maestras, cliente, art!culos# $eneración de compro"ante de venta, Boleta o Factura y creación de reportes de ventas. Para ello %aremos uso intensivo de los servicios que nos "rinda PFC. Primeros Pasos: &. '.
Crea Creamo mos s nue nuest strro Workspace y nuestro o"jeto Application. Para ara e(ecto e(ectos s del tuto tutoria riall se crea creara ra el el Workspace y el o"jeto Application con el nom"re demoventas. demoventas .
).
*adimo *adimos s las las li"re li"rer!as r!as PFC a nuestr nuestro o targe target+ t+ PFC*P-.PB/ PFC01-.PB/ PFC2*34.PB/ PFC563/.PB/ PFC14-.PB/ PFE*P-.PB/ PFE01-.PB/ PFE2*34.PB/ PFE563/.PB/
Objeto de usuario ncstappmana!er es el gestor de la aplicación y (unciona como sustituto del o"jeto Application. Este o"jeto n_cst_appmanager es contiene muc%as (unciones 7tiles as! como re(erencia a varia"les para los servicios de aplicación. entre otras cosas nos permite conectarnos a la Base de "atos y "atos y defnir los servicios n_cst_appmanager entre que tendrá nuestra aplicación. Este o"jeto lo encontramos en la li"rer!a PFE*P-.PB/, la cual contiene los servicios de *plicación.
Página # de #$
n8cst8appmanager /a clase ancestro de n_cst_appmanager es pfc_ncst_app_manager , en la siguiente imagen se puede apreciar la jerarqu!a de %erencia para la clase n_cst_appmanager .
%nstanciando ncstappmana!er /a mejor manera de %acer uso de la clase ncstappmana!er es creando un o"jeto descendiente del mismo, en el cual se agregara el código para personali9ar nuestra aplicación. Para e(ectos del tutorial usaremos y modifcaremos directamente la clase ncstappmana!er, pero :cuidado;, no modifcar la clase ancestro p&cncstappmana!er. &.
0efnimos una varia"le glo"al llamada gnv_app, que se lee $lo"al 4o isual *pplication, esta varia"le será del tipo n8cst8appmanager. Página ' de #$
n8cst8appmanager
gnv8app
'. ).
En el evento
commandline?
@. A.
En nuestro o"jeto Application, en la pestaa $eneral, a"rimos la ventana de pre(erencias *dditional Properties y modifcamos el valor de /C*, por n8tr, y el de 2essage, por n8msg. *ntes+ /C*+ transaction /0*+ dynamicdescriptionarea /*+ dynamicstagingarea Error+ error 2essage+ message
0espus+ /C*+ n8tr /0*+ dynamicdescriptionarea /*+ dynamicstagingarea Error+ error 2essage+ n8msg
Con(!urando nuestra aplicación. *%ora codifcamos el o"jeto n_cst_ appmanager para que se ajuste a nuestro propósito, para ello %aremos uso de las varia"les de instancia e iniciali9aremos algunos servicios. &.
En el evento constructor de n_cst_appmanager agregamos el siguiente código.
Página 3 de #$
DEl o"jeto Contet3n(ormation, provee de in(ormacion re(erente a la aplicacion que esta ejecutandose como 4umero de ersión, 4om"re de la Compania, 4om"re del Ejecuta"le, etc.D Contet3n(ormation lc8*plicacion
int
li8version8mayor,li8version8menor
date
ld8a%ora
ld8a%ora = 6oday>?
D<"tiene la versionD $etContetervice > GContet3n(ormationG, lc8*plicacion ? lc8*plicacion.$et2ajorersion>li8version8mayor? lc8*plicacion.$et2inorersion>li8version8menor?
DEsta"lece el nom"re de la aplicaciónD iapp8o"ject.displayname = G0emo istema entas H 6utorial PFCG
D*ctiva el servicio 2icro%elpD o(8et2icroIelp > 6rue ?
D Esta"lece el nom"re del arc%ivo de ayuda. Poner esto solo si se dispone de la ayuda correspondiente.D o(8etIelpFile > Gayuda.%lpG ?
D Esta"lece la versión de la aplicacionD o(8etersion > Gersion G J tring > li8version8mayor ? J G.G J tring > li8version8menor ? J G.KKG ?
D Esta"lece el logo de la aplicacionD o(8et/ogo > G0emoentas."mpG ?
D Esta"lece el mensaje de copyrig%tD o(8etCopy-ig%t > GCopyrig%t >c? 'K&&HG J tring > Lear > ld8a%ora ?, GKKKKG ? J G 0emo istema entasG ?
D*ctiva el servicio de pre(erencia de la aplicacionD o(8et*ppPre(erence > 6rue ?
3( 3salid > inv8apppre( ? 6%en
Página ) de #$
inv8apppre(.o(8et-estore*pp > False ? inv8apppre(.o(8et-estore5ser > 6rue ? inv8apppre(.o(8et5serMey > o(8$et5serMey > ? ? End 3(
DEsta"lece el nom"re del arc%ivo 343D o(8et*pp3niFile>Gconeion.iniG?
'.
Creamos la ventana principal, el cual será %eredado del o"jeto w_frame, que se encuentra en la li"rer!a PFE2*34.PB/. * esta nueva ventana la llamaremos w_principal_ventas.
).
En este evento mostraremos una venta splas%, y activaremos los servicios de registro de transacciones y de mensajes de error. eguidamente a"riremos la ventana principal de nuestra aplicación. Codifcamos el evento pfc_open del o"jeto n_cst_appmanager.
DD2uestra el la ventana plas% o(8plas%>&?
DEste servicio es util cuando se utili9a más de un o"jeto de transaccion, al usar el servicio se consigue que al cerrar la aplicacion todos los o"jetos transaction se cierren y destruyanD o(8et6r-egistration>6-5E?
DD3nicia el servicio de mensajes de error. o(8etError>6-5E?
DD*"rimos la ventana principal w8principal8ventas?
@. A.
*l invocar la ventana w_principal_ventas, en el evento open invocaremos la (unción gnv_app.of_logondlg() , la cual mostrara la ventana de /ogin para ingresar el usuario y contrasea, para conectarnos a la Base de 0atos. En el evento open de la ventana w_principal_ventas ingresamos
el siguiente código.
integer li8return
Página * de #$
DD3nvocamos la ventana de /ogin para la validacion de 3ngreso li8return= gnv8app.o(8logondlg>?
3( li8return=& 6%en et2icroIelp>Nalidación de 3ngreso CorrectaN? Else message"o>gnv8app.iapp8o"ject.0isplay4ame,Nalidación de 3ngreso 3ncorrectaN, topign;? Close>6%is? -eturn End 3(
O. El código invoca la ventana de /ogin para el ingreso de las credenciales de coneión, seguidamente al %acer clic en aceptar invoca al evento pfc_logon del o"jeto n_cst_appmanager .
.
En el evento pfc_logon del o"jeto n_cst_appmanager ingresamos el siguiente código.
tring ls8inifle DD-ecupera el nom"re del arc%ivo 343 ls8inifle = gnv8app.o(8$et*pp3niFile>?
DD/C*.o(83nit, inicia los valores registrados en el arc%ivo 343, como el 0B2, E-E-4*2E, 0*6*B*E, 3( /C*.o(83nit>ls8inifle, N/oginN? = H& 6%en 6%is.inv8error.o(8message>gnv8app.iapp8o"ject.0isplay4ame, J Q NError iniciando los valores de coneión, .343 no encontrado.N? -eturn H& Else DDetea los datos del usuario y contrasea ingresados /C*.o(8setlogidandpassword>as8userid,as8password?
3( /C*.o(8Connect>? = H& 6%en 6%is.inv8error.o(8message>gnv8app.iapp8o"ject.0isplay4ame, J Q NError conectando a la Base 0atos.N, topign;,
Página + de #$
End 3( End 3(
R. El código o"tiene los datos de coneión del arc%ivo 343, y seguidamente reali9a la coneión usando las credenciales ingresadas en la ventana de /ogin.
/legado a este punto, tenemos nuestra aplicación con su respectiva ventana /ogin y su ventana principal. Como se puede o"servar las li"rer!as PFC nos a%orran muc%o tra"ajo de codifcación para construir %erramientas de calidad. ,i desea puede descar!ar las &uentes de la aplicación con lo avanado asta el presente tutorial. Pu"licado por Elmer entocilla en &+)' comentarios Enviar por correo electrónico Escri"e un "log Compartir con 6witter Compartir con Face"ooS Etiquetas+ 6utorial PFC -eaccion es+
Tutorial PowerBuilder Fundation Class - Parte ' Pro!ramación orientada a objetos /a programación orientada a o"jetos se "asa en tres principios (undamentales+ /erencia /a %erencia %ace posi"le que se pueda crear o"jetos que deriven de o"jetos eistentes, con acceso a sus componentes visuales, data y código. /a %erencia mejora la codifcación, maimi9a la reutili9ación de código y mejora la consistencia. 0ncapsulación Encapsulación, tam"in llamado ocultación de in(ormación. Esto signifca que un o"jeto contiene sus propios datos, permitiendo el acceso desde el eterior, seg7n corresponda. PFC implementa encapsulación de la siguiente manera+
•
PFC instancias varia"les como pu"lico o protegido, dependiendo el grado de acceso desde el eterior. El acceso de lectura a estas varia"les se reali9a mediante (unciones de o"jetos, PFC generalmente provee estas (unciones como of_GetVariableName() . Para varia"les de tipo Boolean, PFC provee (unciones of_Isvariablename().
•
Para modifcar varia"les, PFC provee (unciones of_Setvariablename().
•
En ciertos casos, PFC defne varia"les como p7"licas, en estos casos el acceso es directo.
•
Polimor(smo Polimorfsmo, son (unciones que tienen el mismo nom"re pero argumentos di(erentes.
Página 1 de #$
Nivel de e2tensión PFC PF0 PFC implementa un nivel de etensión en todas su jerarqu!a de %erencia, este nivel de etensión se encuentran en las li"rer!as PFE. Cuando %aya una actuali9ación a la 7ltima versión de PFC solo se actuali9ara el nivel ancestro PFC.
Contenido
Nivel 4ncestro 5PFC6
Nivel 02tensión5PF06
*plicación y servicios glo"ales.
PFC*P-.PB/
PFE*P-.PB/
ervicios 0ata1indow
PFC01-.PB/
PFE01-.PB/
<"jetos visuales y o"jetos estándar de usuario.
PFC2*34.PB/
PFE2*34.PB/
ervicios de utilitarios
PFC563/.PB/
PFE563/.PB/
ervicios de ventana
PFC14-.PB/
PFE14-.PB/
Cualquier modifcación de la aplicación PFC se de"e reali9ar en el nivel de etensión. No modi(7ue nin!8n objeto del nivel ancestro.
Convención de nombres de objetos PFC PFC usa la siguiente convención de nom"res+ Nivel
Nombre
<"jetos *ncestro
5sa el prefjo p(c8
<"jetos Etensión
6iene el mismo nom"re como su ancestro, pero sin el prefjo p(c8
Página 9 de #$
Por ejemplo, el o"jeto ancestro para el servicio "ataindow es pfc_n_cst_dwsrv # el o"jeto descendiente es n_cst_dwsrv . Pu"licado por Elmer entocilla en &&+@) K comentarios Enviar por correo electrónico Escri"e un "log Compartir con 6witter Compartir con Face"ooS Etiquetas+ 6utorial PFC -eaccion es+
Tutorial PowerBuilder Fundation Class PFC - Parte #
Ioy empe9aremos con el tutorial de PowerBuilder Fundation Class, el cual tiene el propósito de ir conociendo esta nueva arquitectura de li"rer!as llamada PowerBuilder Fundation Class que por sus siglas se conoce como PFC. En cada post se irá tratando temas acerca de estas li"rer!as y sus o"jetos e ir avan9ando gradualmente %asta poder construir aplicaciones "asadas en PFC. *ntes que nada revisemos el art!culo so"re Tqu es PFCU. *%ora que sa"emos que es PFC %a"lemos so"re las li"rer!as y o"jetos. PFC esta li"erado como una conjunto de li"rer!as PowerBuilder >PB/s?. Estas li"rer!as contienen los o"jetos ancestros y descendientes que podemos usar para construir aplicaciones con PFC.
;ibrerias PowerBuilder *ntes de usar alg7n o"jeto PFC, de"emos aadir las li"rer!as PFC a nuestras li"rer!as de aplicación, en nuestro P*6I donde estamos tra"ajando. Objetos PowerBuilder Estos son los principales o"jetos que se usa con PFC+
<"jetos
Propósito
1indows
/a inter(a9 entre el usuario y la aplicación PowerBuilder.
2enus
/ista de opciones que se usara para seleccionar o a"rir alguna ventana.
<"jeto 0ata1indow
5sado para recuperar, presentar y manipular los datos.
<"jetos de 5suario
Componentes reusa"les que se defnen una sola
Página < de #$
ve9 y se puede usar muc%as veces.
Iay dos tipos de o"jetos de usuario+ H Objeto de usuario visual H Objeto de usuario de clase 5no visual6 Objeto de usuario visual 5n o"jeto de usuario visual es un control visual reusa"le que contiene un comportamiento predefnido. PFC incluye dos tipos de o"jetos de usuario visual+ o
Objeto de usuario visual est=ndar, PFC proporciona un completo conjunto de o"jetos visuales estándar, estos o"jetos incluyen comportamientos pre defnido y una completa integración con los servicios PFC. Por ejemplo el o"jeto de usuario visual udw es un o"jeto 0ata1indow el cual o(rece una etensa (uncionalidad e integración con los servicios PFC.
o
Objeto de usuario visual Personaliado, PFC tam"in utili9a o"jetos de usuario visual personali9ados que contienen un grupo de controles. Estos o"jetos proporcionan (uncionalidades avan9adas para usarlas en situaciones espec!fcas.
Objeto de usuario de clase 5no visual6 Estos o"jetos %eredan las defniciones del PowerBuilder 4onisual<"ject class, estos o"jetos encapsulan datos y código. Este tipo de o"jeto de usuario le permite defnir un o"jeto de cero. PFC usa estos tipo de o"jetos para implementar muc%os de sus servicios.
Página #$ de #$