Acepta y Sigue


([N3] GSI) #1

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.

¿Alguien ha resuelto esto?


([N4] velavisual) #2

@programador@gsisoftware.es

Simplemente es porque no lo has visto, pero el -Interfaz:Aceptar- existe.

También creo que debes mirar el tutor de grabación que creo que te aclarará las dudas expuestas.

 



([N3] GSI) #3

Ya, aceptar existe, pero lo que yo quiero es aceptar el formulario y seguir, es decir , que se quede abierto para un nuevo registro.


([N4] velavisual) #4

@programador@gsisoftware.es

 

En el tutor de grabación tienes cómo hacer la segunda parte que necesitas

 

 


([N1] Lydia.dfr) #5

Yo creo que lo que tu quieres lo hace el comando

Interfaz: Guardar la ficha en alta o modificación


([N4] jarboleya) #6

Buenos días.

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.

Saludos.


([N3] GSI) #7

Gracias todo resuelto muy facil.


([N1] Pepeto) #8

@jarboleya

El código que has indicado, funciona correctamente cuando el formulario de alta se lanza desde una rejilla (con doble clic, con el menú de contexto)

Pero si el formulario de alta se lanza desde una acción, no se mantiene el formulario abierto, simplemente se acepta y se cierra el formulario.

un saludo

José Luis


([N4] jarboleya) #9

@pepeto

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?

Saludos.


([N4] arturomiranda) #10

@jarboleya

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 ?

Saludos


([N1] agsgallardo) #11

También podrías probar lo siguiente:

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.

Con esto debería resolver tu problema.

Saludos

David Gallardo
SysOasi


([N4] jarboleya) #12

Buenos días.

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.

  1. Supongamos que nuestra acción que muestra el formulario de alta se llama “ACCION_FORMULARIO_ALTA” y ejecuta el comando “Formulario de alta”.

  2. Creamos un proceso, por ejemplo PROCESO_FORMULARIO_ALTA que ejecutará el comando “Interfaz: Ejecutar acción (ACCION_FORMULARIO_ALTA)”.

  3. Creamos la acción, por ejemplo ACCION_PROCESO_FORMULARIO_ALTA que ejecutará el comando “Disparar objeto” PROCESO_FORMULARIO_ALTA.

  4. 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.

Saludos.