ON CLOSE FORMULARIO


([N3] GSI) #1

Alguien sabe como emular el evento ON CLOSE, que funciona perfectamente en el marco autoexec, para los formularios, es decir, si cierro el formulario de una factura, por ejemplo, aceptando los cambios quiero ejecutuar inmediatamente un evento…


([N3] pacosatu) #2

Hola GSI.

El formulario emite la señal “On hide” que puede emular un ON_CLOSE.
Por ejemplo, con el siguiente código discriminas si el usuario ha pulsado el botón Cancelar o la X del formulario.


If ( LCANCELADO )
   Rem ( Se ha pulsado la tecla de Cancelar la cual ha fijado LCANCELADO a 1)
   Finalizar proceso
¿Ha cambiado la ficha? ( LOK )
If ( LOK )
   Pregunta ( "La ficha ha cambiado. ¿ Desea guardarla ?", LOK, $APP_TITULO@0PS__Sistema_dat.dat )
If ( LOK )
   Interfaz: Guardar la ficha en alta o modificación

Saludos
Paco Satué


([N3] GSI) #3

Gracias por tu rápida respuesta, y acertada como siempre, pero en este caso hay una excepción que yo no había explicado, detallo a continuación:

El problema que tengo es que cuando, por ejemplo, paso de albarán a factura, en una de las posibilidades que ofrezco puedo generar la factura desde el mismo documento de albarán, cuando lo he generado abro el documento final, aquí viene el problema, cuando abro median te cargar lista… seleccionar ficha por posición… modificar ficha con formulario… la ficha se abre perfectamente, pero el documento que consta de cabeceras y lineas, tiene el registro cabecera bloqueado, por tanto cuando modifico lineas o elimino lineas de la factura generada no se producen los cálculos en la cabecera.

Había pensado hacerlo tras cerrar el formulario origen (albarán), abrir el de factura para que no hubiera ningún bloqueo. Aquí es donde estoy perdido, como solución provisional he cambiado por seleccionar ficha de una lista y funciona, pero es una solución nada estética y poco profesional.


([N3] synetic) #4

Tal vez te sirva esto.
Crea un proceso vJavascript, con origen ficha de la tabla facturas con este código. Crea la variable en el proceso OBJECT_VIEW alfanumérica.
Con un un manejador de objeto asignas el proceso, le asignas la ficha y le asignas el nombre del formulario con el cual deseas abrir la factura.
Yo lo uso para los documentos (albaranes, facturas…) generados se me abra en modo pestaña, no modal.
No hace falta que vuelvas a cargar la lista de facturas para seleccionarla, puedes meter el código del manejador directamente en la salida del proceso que genera la factura.

var object_view = theRoot.varToString(“OBJECT_VIEW”);
//Si es lista de registros
if (typeof theRegisterListIn !== ‘undefined’) {
theMainWindow.addDataView(VObjectInfo.TypeGrid, object_view, theRegisterListIn);
}
//Si es un solo registro
if (typeof theRegisterIn !== ‘undefined’) {
theMainWindow.addDataView(VObjectInfo.TypeForm, object_view, theRegisterIn);
}