Power Builder - Referenciar una ventana desde otra

   
Vista:

Referenciar una ventana desde otra

Publicado por JeinnerH (638 intervenciones) el 24/06/2010 18:50:45
Hola a todos, aquí mi primer pequeño y humilde aporte al foro. No es una preguna, es un tip, si les da pereza leer, lo siento mucho, pero si lo leen seguro lo pueden encontrar muy útil.

Como decía aquí les traigo un tip, que me ha resultado bien para refrescar un Datawindow en una ventana, desde otra ventana; claro no se limita sólo a esta funcionalidad, ya verán que se puede emplear para muchas cosas.

En qué caso se puede emplear esta utilidad de referir una ventana desde otra? Bueno, al menos en mi particular circunstancia, sucede que tengo una ventana padre (por llamarla de alguna forma, pero no es un tipo de ventana especial), que abre otra (llamémosla hija), utilizando OpenSheetWithParm. Esta función (OpenSheet) abre ventanas individuales, cada vez que se ejecuta. Pero una vez que se salva la información de alguna de las ventanas hijas, se requiere que refresque un Datawindow de la ventana padre.

Nótese que la ventaja hija no es Response, por tanto, la ventana padre, no está esperando por la finalización de la ventana hija para
refrescar la información.

Cómo lo resolví? Bueno, primero quiero que sepan que no sé si existe otra alternativa más simple, o si la utilización del Evento Other en
particular podrá causar algún problema que no he sopesado ni sufrido sus consecuencias secundarias.

En resumen, al llamar la ventana padre, con la función OpenSheetWithParm, uno de los parámetos que paso a la ventana hija tiene asignada la dirección de la ventana padre, es decir su Handle(). En el eventoPfc_Save (utilizando pfc’s) de la ventana hija, ejecuto
la función Send(), con la dirección de la ventana padre.

En el Evento Other del padre, reviso si los parámetros recibidos corresponden a lo esperado y refresco el Datawindow.

Aclarando; los siguientes Eventos resumen el funcionamiento general, envío como parámetro solamente la dirección de la ventana padre, pero también funcionaría si se envía la dirección en una estructura, ya que dicha dirección es un simple Long.

Ventana padre:
Variables de instancia:
Long il_handle

Evento Open
il_handle=Handle(This)

Evento Double Click del Datawindow que llama la ventana hija
OpenSheetWithParm(lw_sheet, il_handle, 'w_ventana_hija', w_frame, 0,
Original!)

Evento Other
If wparam = 0 And lparam = 1 Then &
dw_1.Event Pfc_Retrieve()


Ventana hija:
Variables de instancia:
Long il_handle_ventana_referencia

Evento Open
il_handle_ventana_referencia =Message.LongParm

Evento pfc_save:
If ANCESTORRETURNVALUE = SUCCESS Then &
Send(il_handle_ventana_referencia, 0, 0, 1)


Espero que este tip les sea de utilidad. Si alguien sabe si esto puede producir algún tipo de problema, por favor agradecería sus comentarios.

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Referenciar una ventana desde otra

Publicado por Julio Maldonado (3 intervenciones) el 28/10/2010 23:27:41
El evento pfc_save es de la venana hija o de algun dw
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Referenciar una ventana desde otra

Publicado por JeinnerH (638 intervenciones) el 29/10/2010 00:13:10
Hola Julio.

Bueno, este ejemplo lo empleo utilizando los PFC´s de PB. Y el Evento Pfc_Save, se encuentra en la ventana padre.

Para poder implementar un equivalente sin usar PFC´s, se debe implementar el llamado en el Evento CloseQuery de la ventana.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar