Documentos de Académico
Documentos de Profesional
Documentos de Cultura
OBJETOS DE USUARIO
Las aplicaciones a menudo comparten mucho rasgo en común, por ejemplo s e
podría reusar a menudo los siguiente:
Un proceso que calcula las comisiones o realice el análisis estadístico
Un botón de comando que realiza algunas acciones y luego cierra la ventana
Controles DataWindow que realizan el mismo tipo de comprobación de error.
Si usted se encuentra usando el mismo componente de la aplicación repetidamente,
usted debe definir un objeto de usuario.
DEFINICION DE OBJETO DE USUARIO
Es una Objeto definido y creado por el programador de la aplicación de tal manera
que pueda ser utilizado dentro de la aplicación u otra aplicación utilizando el mecanimo de
la herencia.
TIPOS DE OBJETO DE USUARIO
Existen dos tipos de objetos del usuario:
Objetos Visuales
Objetos no Visuales
LOS OBJETOS DEL USUARIO VISUALES
Un objeto del usuario visual es un control reusable o un conjunto de controles que
tienen un cierto comportamiento, y que se pueden utilizar para construir la interfaz grafica
del usuario.
Existen tres tipos de objetos de usuario visuales:
Standard Visual
Un objeto del usuario visual normal que hereda su definición de un control de
Powerbuilder normal. Se debe modificar la definición para hacer el control
personalizado y poder utilizarlo en las aplicaciones.
POWER BUILDE NIVEL II_______________________________________________________________________
Custom Visual
Los objetos de usuario visuales personalizados son objetos que tienen varios controles
que funcionan como una unidad. Usted puede pensar en un objeto de usuario visual
personalizado como una ventana que es una sola unidad y se usa como un control.
External Visual
Los objetos de usuarios visuales normales tienen los objetos que son creados en un
ambiente distinto de PowerBuilder.
LOS EVENTOS EN LOS OBJETOS DE USUARIO VISUALES
Los objetos de usuario visuales normales tienen los mismos eventos que los controles
de PowerBuilder. Los objetos de usuario personalizados y los objetos de usuario visuales
externos tienen un juego común de eventos:
EL EVENTO OCURRE CUANDO
Constructor Inmediatamente antes del evento Open de la ventana y cuando el objeto
usuario se activa dinámicamente en una ventana
Destructor Inmediatamente después del evento Close de la ventana y cuando el
objeto de usuario esta dinámicamente removido de una ventana
DragDrop Un objeto arrastrado se deja caer en el objeto del usuario
DragEnter Un objeto arrastrado entra en el objeto usuario.
DragLeave Un objeto arrastrado deja el objeto del usuario
DragWithin Un objeto arrastrado se mueve dentro del objeto del usuario
Help Un usuario presiona la tecla F1 codifica o pulsa el botón la Ayuda del
contexto[?]
Other Un mensaje de Windows ocurre cuando no es un evento de
PowerBuilder
RButtonDown El botón derecho del ratón se pulso.
Aplica 11
Desarrollar una aplicación que permita visualizar archivos de imágenes de tipo *.gif
utilizando un UserObject Standar Visual.
Solución :
1. Iniciar una nuevo Aplicación File new en la siguiente ventana elegir el objeto
aplicación.
2. Asegurarle el nombre de aplica_11 guardar en la siguiente ruta C:\
Power_Builder_7\Practicas\Cap03\Aplica_11\aplica_11.pbl, luego dar un click en el
botón Finish.
3. Ahora proceda a añadir la librería en la que utilizo el objeto estructura de nombre
openfile,la que se encuentra en:
C:\Powe_Builder\Practicas\Aplica07\aplica_07.pbl
4. Creación del UserObject uo_texto,para esto dar un click en el menú File New caso
contrario click en el botón.
POWER BUILDE NIVEL II_______________________________________________________________________
Este tipo de userObject presentara una ventana en la cual debe seleccionar el tipo
de control a utilizar, para este caso practico utilizaremos 2 controles Estandar Visual
(utilizando un SigleLineEdit y un CommandButton).
This.Backcolor = Rgb(0.128.128)
This.textcolor = Rgb(255.255.255.255)
Objeto: uo_texto Evento: loseFocus
This.Backcolor = Rgb(255.255.255.255)
This.textcolor = Rgb(0.0.0.0)
Grabar el UserObject con el nombre uo_Texto.
A continuacion proceda a crear el UserObject uo_open utilizando un CommandButton, tal
como se hizo anteriormente.
Para este caso es necesario crear una función para el UserObject up_open con las
siguientes características:
La función uf_abrir , la cual no recibe argumentos y retonra un valor de tipo string .
_____________________________________________________CAPITULO 3-EVENTOS DE USUARIO
Función: uf_abrir
Int li_rc
String ls_path, ls_file
Li_rc = GetFileOpenName(“seleccione archivo de imagen”,ls_path,ls_file,
“gif”, “Archivos de imágenes(*.gif),*.gif”)
If li_rc = 0 Then
Return “”
Else
Return ls_path
End If
Finalmente grabe el UserObject con el nombre de uo_open.
5. A continuación procederemos a crear el objeto window(ventana) . para esto dar un
clic en el menú File New cas contrario click en el botón.
Añadir los siguientes controles:
1 control Picture
1 control UserObject (uo_texto)
1control UserObject(uo_open)
Para crear los objetos dar un clic en el botón, ubicar los controles y modificar sus
propiedades de la siguiente manera:
Una vez añadida la librería y creados los UserObject proceda abrir el objeto aplicación y
añada el siguiente código a los objetos.
Aplica 02
Desarrollar una aplicación que utilice un objeto de usuario CustomVisual que
permita el desplazamiento de la tabla Customers que se encuentra en la base de datos EAS
DEMO DB3.
Solución:
1. Iniciar una nueva aplicación File New en la siguiente ventana elegir el objeto
aplicación.
2. Asignarle el nombre aplica_12 , guardar en la siguiente ruta c:\PowerBuilder\
Practicas\Cap03\Aplica_12\Aplica_12.pbl., luego dar un click en el botón Finish.
3. Creación de un UserObject, para eso dar un click en el menú File New caso contrario
click en el botón.
Función: f_inicio
dw_control =i_dwcontrol
i_actual =1
i_total =dw_control.rowcount()
st_totales.text = “1 de”+String(dw_control.rowcount())
Crear la función f_primero , la cual no recibe argumentos ni retorna valores.
Función: f_primero
If i_total > 0 Then
dw_control.scrolltorow(1)
st_totales.text=”1de”+String(i_Total)
SetFocus(dw_control)
I_actual = 1
End If
Crear la función f_anterior ,la cual no recibe argumentos ni retorna valores.
_____________________________________________________CAPITULO 3-EVENTOS DE USUARIO
Función : f_anterior
int actual
actual = i_actual
If actual < i_total then
dw_control.scrolltorow(actual-1)
st_totales.Text = String(actual-1)+”de”+String(i_total)
SetFocus(dw_control)
I_actual = i_actual+1
End If
Crear la funcion f_siguiente , la cual no recibe argumentos ni retorna valores
Función: f_siguiente
int actual
actual = i_actual
If actual < i_total Then
dw_control.scrolltorow(actual+1)
st_totales.text = String(actual+1)+”de”+String(i_total)
SetFocus(dw_control)
i_actual=i_actual+1
End If
Crear la funcion f_ultimo, la cual no recibe argumento ni retorna valores
POWER BUILDE NIVEL II_______________________________________________________________________
Funcion : f_ultimo
i_actual = i_total
dw_control.scrolltorow(i_Total)
st_totales.text = String(i_actual) + “de” + String(i_Total)
SetFocus(dw_control)
Seguidamente escriba el siguiente código para los siguientes objetos
Objeto :cb_primero Evento : Clicked
F_primero()
Objeto : cb_anterior Evento : Clicked
F_anterior()
Objeto : cb_siguiente Evento : Clicked
f_siguiente()
Objeto : cb_ultimo Evento : Clicked
f_ultimo()
Una vez creado el objeto proceda a guardarlo con el nombre de uo_deplaza , a
continuación realizaremos un ejemplo. Para esto procederemos a crear objeto
Datawindow.
Nota: antes de pasar a crear el objeto Datawindow verifique que la conexión actual es
con la base de datos EAS DEMO DB3.
4. Creacion de un objeto Datawindow, para esto dar un click en el menú file new
caso contrario click en el botón.
_____________________________________________________CAPITULO 3-EVENTOS DE USUARIO
Posteriormente, en la siguiente ventana, deberá elegir el icono SQL select y dar un click
en el botón Next:
Luego, para regresar editor de DataWindow, puede ir al menú File y elegir la opción
Return to DataWindow Painter o puede cerrar la ventana del editor.
Después aparecerá la siguiente ventana para seleccionar los colores del DataWindow y
marcar la casilla de Save as Default, para que los colores elegios sean los
predeterminado. Luego hacer click en el botón Next >.
El siguiente paso consiste en seleccionar todos los campos del objeto Datawindow , y
hacer click en la ventana propiedades, Ficha general propiedad borde, tal como se
muestra a continuación.
Una vez realizado los cambios respectivos proceda a guardar el objeto Datawindow con
el nombre de d_clientes.
5. Una vez creado el objeto Datawindow proceda a crear el objeto window(ventana)
para esto dar un click en el menú File New caso contrario click en el botón.
1 control Datawindow
1 control userObject(uo_desplaza)
1 Control Commandbutton
POWER BUILDE NIVEL II_______________________________________________________________________
dw_clientes.Retrieve()
Uo_desplazar.f_inicio(dw_clientes)
Objeto : cb_cerrar Evento: Clicked
Close(parent)
1. Declare las funciones, estructuras, o variables que usted necesita para el objeto de
usuario. Usted puede declarar funciones, estructuras, y variables para el objeto de
usuario en la vista de script.
2. Cree y compile los Script para el objeto de usuario. Los objetos de usuario de clase
personalizados tienen eventos constructor y destructor.
Aplica 13
Crear un UserObject que permita realizar el mantenimiento a una determinada
tabla, en este caso se utilizara la Tabla Customers base de datos NortWind.
1. Crear un userObject u_principal,para el cual declaramos las siguientes variables de
instancia:
//idw_parametro es una instancia del Datawindow
//ib_inicializa indica si se ha recibido correctamente el control Datawindow
2. Además, el user object u_principal contiene las siguientes funciones:
uf_inicio
//Recibe un argumento de tipo Datawindow, además inicializa la variable
ib_inicializa
uf_recuperar
//recupera los datos de la tabla asociada al Datawindow, la cual fue recibida
en la función uf_inicio.
_____________________________________________________CAPITULO 3-EVENTOS DE USUARIO
uf_insertar
//Esta función permite grabar los datos ingresados en el control
Datawindow, la cual fue recibida en la función uf_inicio.
uf_eliminar
//esta función permite eliminar registros de la tabla asociada al control
Datawindow, la cual fue recibida en la función uf_inicio.
3. Una vez creada las funciones, pasamos a crear la ventana que contiene 1 control
Datawindow ,5 Command Button.
4. Ahora procedemos a declarar las siguientes variables:
//u_principal iu_principal(instancia del UserObject creado anteriormente)
5. Procedemos ahora a crear un UserEvent llamado ue_crear_principal para el control
Datawindow, en este UserEvent crearemos una instancia del userObject creado
anteriormente.
6. A continuacion procedemos a crear los siguientes userEvent que permmitiran tener un
mayor control sobre botones que se encuentran en la ventan.
ue_recuperar
ue_insertar
ue_actualizar
ue_eliminar
Nota: no es necesario crear UserEvent en la ventana para llamar a las funciones de
mantenimiento creados en el UserObject, sino que como se indicó anteriormente se hizo
de esa manera para tener un mayor control de los botones al habilitarlos a
deshabilitarlos.
Solución:
1. Iniciar una nueva Aplicación File New en la siguiente ventana elegir el objeto aplicación.
POWER BUILDE NIVEL II_______________________________________________________________________
4. Creación de un UserObject , para esto dar un click en el menú file new caso
contrario click en el botón.
Función : uf_inicio
idw_parametro =adw parámetro
ib_inicializa = true
Crear la función uf_recuperar que retorna un valor de tipo Integer.
_____________________________________________________CAPITULO 3-EVENTOS DE USUARIO
Función :uf_recuperar
Return idw_parametro.Retrieve()
Crear la función uf_insertar, la cual recibe 1 argumento de tipo long llamado al_fila.
Esta función retorna un valor de tipo long.
Función : uf_insertar
long ll_rc
ll_rc =idw_parametro.InsertRow(al_fila)
if ll_rc >0 then
idw_parametro.ScrollToRow(ll_rc)
idw_parametro.SetFocus()
End if
Return ll_rc
Crear la función uf_actualizar,la cual no recibe argumentos ,retorna un valor de tipo
Integer.
Funcion :uf_actualizar
int li_rc
li_rc =idw_parametro.update()
i fli_rc > 0 then
POWER BUILDE NIVEL II_______________________________________________________________________
commit;
else
rollback;
end if
return li_rc
Crear la función uf_eliminar,la cual no recibe 1 argumento ,de tipo Integer llamado
al_fila, retorna un valor de ripo long.
Funcion :uf_eliminar
int li_rc
if al_fila>=0 and al_fila <=idw_parametro.RowCount() then
li_rc =idw_parametro.DeleteRow(al_fila)
idw_parametro.SetFocus()
Return li_rc
else
Return-1
end if
5. Ahora proceda a crear el objeto window(ventana), para esto dar un clic en el menú file
new caso contrario click en el botón.
En la sección Declare, seleccione la opción Instance Variables y declare siguiente
variables:
Declare Instance Variables
//Crear la instancia iu_principal del UserObject u_principal
u_principal iu_principal
_____________________________________________________CAPITULO 3-EVENTOS DE USUARIO
UserEvent : ue_recuperar
integer li_RC
li_RC =iu_principal.uf_recuperar()
If li_RC < 0 Then
cb_eliminar.enable =False
Else
ib_cambio=False
cb_insertar.enable =true
cb_actualizar.enable = False
cb_cancelar.enable= False
dw_mantenimiento.enable = False
If li_RC >0 Then cb_eleminar.enabled =True
End If
Return li_RC
Crear el userevent ue_insertar, este debe estar asociado al EnentID llamdo
pbm_custom01.
UserEvent : ue_insertar
POWER BUILDE NIVEL II_______________________________________________________________________
Integer li_RC
Long ll_cur_row
Ll_cur_row =dw_mantenimiento.GetRow()
If ll_cur_row >= 0 Then
li_RC =iu_principal.uf_insertar(ll_cur_row)
If li_RC > 0 Then
cb_eleminiar.enabled = False
cb_insertar.enabled = False
cb_atualizar.enabled = true
cb_cancelar.enabled = True
dw_mantenimiento.enable = True
End If
End If
Return li_RC
Crear el userevent ue:actualizar, este debe estar asociado al EnentID
llamado pbm_custom03.
UserEvent : ue_actualizar
Integer li_RC
li_RC=iu_principal.uf_actualizar()
If li_RC = 1 Then
cb_actualizar.enabled = False
cb_insertar.enabled = true
_____________________________________________________CAPITULO 3-EVENTOS DE USUARIO
cb_cancelar.enabled = False
cb_eliminar.enabled = True
dw_mantenimiento.enable = False
End If
Return li_RC
Crear el userevent ue_eliminar, este debe estar asociado al EnentID llamdo
pbm_custom02.
UserEvent : ue_eliminar
Integer li_RC
li_RC=iu_principal.uf_actualizar()
If li_RC = 1 Then
cb_actualizar.enabled = False
cb_insertar.enabled = true
cb_cancelar.enabled = False
cb_eliminar.enabled = True
dw_mantenimiento.enable = False
End If
Return li_RC
Ubicar los controles indicados:
1 control Datawindow
5 controles commandbutton
1 UserObject (uo_desplaza) Librería Aplica_12
POWER BUILDE NIVEL II_______________________________________________________________________
UserEvent : ue_crear_principal
iu_principal = créate u_principal
UserEvent : cb_insertar Evento: Clicked
parent.TriggerEvent(“ue_insertar”)
UserEvent : cb_cancelar
parent.TriggerEvent(“ue_recuperar”)
UserEvent : cb_actualizar Evento: Clicked
parent.TriggerEvent(“ue_actualizar”)
UserEvent : cb_eliminar Evento: Clicked
parent.TriggerEvent(“ue_eliminar”)
parent.TriggerEvent(“ue_actualizar”)
UserEvent : cb_cerrar Evento: Clicked
CLOSE (parent)
Ahora escriba el siguiente código en el evento Open del objeto
Aplicación.
Objeto : aplica _13 Evento: Open
SQLCA.DBMS = ”MSS Miscrosoft SQL Server 6.x”
SQLCA.Database = “NorthWind”
SQLCA.SeverName = (“local”)
SQLCA.LogId = “sa”
SQLCA.AcutoCommit = False
SQLCA.DBParm = “”
Coneect;
POWER BUILDE NIVEL II_______________________________________________________________________
This.TriggerEvent(“ew_recuperar”)
Uo_desplazar.f_inicio(dw_mantenimiento)
Objeto : w_mantenimiento Evento: Open
Destroy iu_principal
Aplica 14
Desarrollar una aplicación que permita conectarse con una determinada interfaz,
indicada desde un botón de comandó el origen de datos (conexión inteligente)
_____________________________________________________CAPITULO 3-EVENTOS DE USUARIO
Solución :
1. Iniciar una nueva aplicación file new en la siguiente ventana elegir el objeto
aplicación
2. Asignarle el nombre de aplica_14 , guardar en la siguiente ruta c:\power_builder\
practicas\Cap03\Aplica_14\aplica_14.pbl, luego dar un click en el botón Finish.
3. Creacion de un UserObject , para esto dar un click en el menú File New caso
contrario click en el botón.
Este tipo de UserObject presentara una ventan en la cual debe seleccionar la clase a
utilizar, para este caso practico utilizaremos la clase transaction.
Función : uf_connect
This.database = nombredb
POWER BUILDE NIVEL II_______________________________________________________________________
This.dbms =interfaz
This.logid = Id
This.bdparm = parametrodb
This.servername = servidor
This.autocommit = True
De la misma forma proceda a crear otro objeto Datawindow de tipo Grid, pero esta
vez la conexión será con la base de datos BdUsuario . Una vez creado el objeto asignarle el
nombre de d_clientes_bdusuario.
5. A continuacionprocederemos a crear el objeto window(ventana ), para esto dar un lick
en el menú File New, caso contrario click en el botón.
Añadir los siguientes controles:
1 control Datawindow
3 controles CommandButton
Luego dar un click en guardar asignarle el nombre w_transaccion y click en Ok, además
asignarle el de interfaces de base de datos.
Ahora escriba el siguiente código en el evento Open del objeto Aplicación.
Objeto : aplica _20 Evento: Open
Open (w_transacción )
POWER BUILDE NIVEL II_______________________________________________________________________
dw_ejemplo.dataobject = “d_clientes_bdusuario”
dw_ejemplo.Setttransobject (SQLca)
dw_ejemplo.retrieve()
dw_ejemplo.dataobject = “d_clientes_bdusuario”
dw_ejemplo.Setttransobject (SQLca)
dw_ejemplo.retrieve()
ect = “d_clientes_easdemo”
dw_ejemplo.Setttransobject (SQLca)
dw_ejemplo.retrieve()