Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/04/2010, 13:29
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Pregunta Comunicación entre instancia de un objeto y el Form principal.

Tengo un dilema que no hemos podido resolver y que trataré de explicar bien:

1) Hay una aplicación que tiene, obviamente, un formulario principal Mdi, del cual dependen, como MdiChildren, varios formularios.

2) Los formularios MdiChildren, a su vez, instancian dentro de ellos, objetos de ciertas clases creadas específicamente (es irrelevante para el problema qué son o hacen).

3) Esos objetos poseen ciertos métodos que necesitan abrir pequeños carteles de espera para que el usuario sepa que se está realizando un proceso y que debe esperar el resultado. Para ello se crean, dentro de esa clase, pequeñas ventanas que andvierten que se debe esperar.

4) Esas ventanas quedan por encima te toda la aplicación, pero también por encima de todas las aplicaciones que estén ejecutándose en la PC, lo que a los usuarios les resulta molesto cuando quieren poner nuestra aplicación en segundo plano: El cartel permanece encima y no es minimizable.

5) Según sabemos, se puede hacer que esos carteles queden en el mismo plano de la aplicación si y sólo si son creados en el Form principal y declarados como MdiChildren de él.

6) Una posibilidad es crear un método en el Form principal que cree, abra y/o cierre estos carteles, y usarlo desde los MdiChildren. Eso es sencillo y lo hacemos en otros casos, pero el asunto es cómo hacerlo desde un objeto instanciado dentro de esos formularios hijos.

Entonces el problema:

¿Cómo podemos lograr que desde un objeto creado dinámicamente dentro de un MdiChildren, invocar un método del Form principal?

Tener en cuenta, que la llamada debe ser hecha desde el código interno del objeto que se creó, y no desde el formulario donde está ese objeto.

Restricción fundamental:
Por conflictos potenciales con subprocesos programados ya en la aplicación no se pueden usar Timer para verificar estado de variables globales o locales

¿Se entiende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)