Ventanas SDI y presentación de informes


([N1] ebarbeito) #1

Hola de nuevo,

Estoy haciendo una aplicación que por defecto su interfaz es SDI. El modo de ventana sigue siendo modificable desde el menú del marco pero por defecto mi decisión es SDI (es un programa sencillo que se maneja desde el propio formulario principal). Por otro lado, tengo una acción que dispara un objeto búsqueda y un informe. El problema viene cuando quiero cerrar el informe y volver al formulario principal.

En caso de que el usuario previsualice el informe, podría cerrarlo o ir al formulario principal desde el menú principal (opción: Ventana -> Siguiente o Ventana -> Cerrar) pero me parece poco intuitivo para la mayoría de usuarios. ¿Cómo lo haríais vosotros?

Se me ocurren dos formas pero tienen pegas:

  1. La opción más intuitiva: desde el objeto informe visualizado, que el usuario presione la tecla Esc para cerrar la ventana del informe. En principio sería posible pero por ahora parece que el objeto Informe no tiene señales disponibles, por lo que no puedo lanzar un evento al pulsar una tecla.
  2. Añadir un icono-acción en una toolbar principal (dock), que sea el primer icono (un dibujo de una casa por ejemplo). De modo que al pulsar ese icono se lance un proceso que compruebe una variable global: si ésta está a 1 quiere decir que el informe se abrió, con lo que se podría reinicializar dicha variable a 0 y lanzar la instrucción "Cerrar ventana". Esta opción tiene pegas: (1) no hay señal Inicializado para el objeto Informe con lo que al abrir el informe no podremos poner la variable a 1. Esta pega es salvable seguramente, lanzando el informe desde proceso directamente. (2) Pero hay una pega insalvable, y es que el usuario puede abrir el informe (se pone a 1 la variable) y estar en modo MDI o TAB, pudiendo cambiar de ventana. O también puede cerrar el informe desde menú, de modo que en ambos casos la variable permanece a 1 y el informe está cerrado. Si el usuario pulsa en ese momento el icono comentado de la toolbar cerraría la ventana principal.

Lo dicho, ¿se os ocurre alguna otra forma? Gracias!

Un saludo