Ocultar botones según variable


([N1] soporte) #1

Buenas tardes.

Tengo un formulario con 4 botones (Aceptar, Cancelar, Eliminar y Aplicar). Si abro el formulario normalmente se me tienen que mostrar los 4 botones, o sea, abrirlo haciendo doble click en la rejilla principal, pero si el formulario lo quiero mostrar desde un multivista, lo que quiero es que solo me aparezca el de APLICAR.

Yo he creado una variable local en el formulario APL, y en el Pos-Inicializado, compruebo si esa variable es igual a 1 o no

Desde el multivista como el objeto1=rejilla y el objeto2=proceso, desde ese proceso lo que hago es lo siguiente:

Crear manejador de objeto (form, Formulario BANCO@Prueba_App)
Set variable local de objeto (form, APL, 1)
Disparar objeto (form, No aplicable, )

Me funciona bien pero en lugar de ver el formulario en multivista lo veo como cuadro de dialogo, y el formulario que me muestra el multivista me sale con los 4 botones.

Alguien sabe como puedo hacer esto y no tener dos formularios, uno para cada cosa, si no poder utilizar el mismo?.

Un saludo.


([N3] pacosatu) #2

Hola soporte.

Primero tienes que tener claro que los objetos ejecutados con el comando de proceso “Disparar objeto” siempre se ejecutan en modo ventana de diálogo, es decir:

  • Son ventanas modales.
  • Paralizan la ejecución del código del proceso hasta que no aceptamos o cancelamos el Objeto.
    Por esta razón, en tu caso, el objeto2=proceso tal como lo palnteas no sirve para el Multivista.

El Multivista por diseño no está preparado para personalizar en tiempo de ejecución los diferentes objetos que lo componen. En tiempo de diseño tú decides los objetos que se van enlazando y la única condición es que la Salida de uno sea la Entrada del siguiente.

  • Tener dos formularios, uno con 4 botones y otro con 1, sería la solución más limpia y al más puro estilo Velneo.
  • Otra solución es una Variable global que se fija por el proceso intermedio para que el formulario pueda ocultar botones.
  • Otra solución y la en principio más potente y versátil es personalizar mediante JavaScript, pero esto es ya otra cantar y necesitas asumir que el código ya no será tan limpio y habrá que torear con muchos bugs.

Si no lo ves claro, siempre puedes pasar del Multivista y construir lo mismo con Vistas de datos y manejadores de Evento.

Saludos
Paco Satué


([N1] soporte) #3

Gracias.

El problema de tener 2 formularios es que si cambias algo en uno tienes que cambiarlo en los demás.

Probaré con variables globales a ver si me funciona.

Un saludo