Hola a todos, aquí mi primer pequeño y humilde aporte a la comunidad.
Estimados señores y señoras Powerbuilderas. 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.