Tengo un formulario en el que hay varios botones, concretamente uno de “Acepta y sigue” que deseo disparar desde un “Manejador de Evento” pero no encuentro ningún comando de Interfaz equivalente a "Interfaz:Aceptar"o ejecutar un boton para aceptar los datos que he gestionado y dejar de nuevo el formulario abierto.
Simplemente en el botón “Aceptar y seguir” aplicar el comando “Ejecutar manejador de evento”.
Crear un manejador de evento JavaScript con el nombre “BTN_ACE_SEG”, por ejemplo y asignárselo a la propiedad evento del botón.
En el manejador de evento JavaScript añadir estas 2 líneas de código
// Aceptar y seguir
var form = theRoot.dataView();
form.acceptNoClose();
Esta función JavaScript como se indica en la ayuda es operativa para formularios en cuadro de diálogo que entiendo es tu caso, ya que se trata de una grabación continua.
Lanzado desde una acción con la propiedad “Siempre en cuadro de diálogo = verdadero”, acabo de verificarlo y sí funciona, igual que si es lanzado desde una rejilla.
Si lees mi comentario anterior puse:
Esta función JavaScript como se indica en la ayuda es operativa para formularios en cuadro de diálogo que entiendo es tu caso, ya que se trata de una grabación continua.
Si el formulario no está en cuadro de diálogo, es cuando se acepta, cierra y no se vuelve a abrir. ¿Es posible que en tu prueba lanzado desde la acción el formulario lo estés sacando en modo vista y no en cuadro de diálogo?
Yo estuve revisandolo personalmente con @veldevelop , y aunque el formulario este en modo “cuadro de dialogo” , si se lanza desde una accion el formulario se cierra , no nos explicamos la razón , de hecho lo comentamos en tu blog , ¿ que estaremos haciendo mal ?
En el formulario (form_xx)
creas un manejador de evento con estas dos líenas
Set VLB_SIGUE = 1 ( VLB_SIGUE es una variable boleana)
Interfaz : aceptar.
La acción que llama al formulario que ejecute un proceso ( Llamar_Form ) Con estas línas:
Crear manejador de objeto ( form, formulario form_xx)
disparar objeto form
get variable local del objeto ( form, vlb_sigue, vlb_sigue )
If vlb_sigue = 1
ejecutar prooces Llamar_form.
Pego el texto incluido en la respuesta de mi blog.
El funcionamiento comprobado es el siguiente:
Como formulario de alta desde rejilla: OK.
Como acción disparada desde toolbar principal: OK.
Como acción disparada desde la barra de menú: OK.
El problema surge cuando se dispara desde un dock, tanto desde un botón como desde un menú arbolado, en ese caso el formulario se acepta pero no se vuelve a abrir. La solución es sencilla.
Supongamos que nuestra acción que muestra el formulario de alta se llama “ACCION_FORMULARIO_ALTA” y ejecuta el comando “Formulario de alta”.
Creamos un proceso, por ejemplo PROCESO_FORMULARIO_ALTA que ejecutará el comando “Interfaz: Ejecutar acción (ACCION_FORMULARIO_ALTA)”.
Creamos la acción, por ejemplo ACCION_PROCESO_FORMULARIO_ALTA que ejecutará el comando “Disparar objeto” PROCESO_FORMULARIO_ALTA.
En la opción del menú arbolado o en el botón ubicados en el dock, ejecutamos la acción ACCION_PROCESO_FORMULARIO_ALTA.
Es decir, en lugar de lanzar directamente el formulario de alta, lo que hacemos es disparar un proceso que ejecuta la acción que tenemos que muestra el formulario de alta.