FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Cerrar Form2 desde Form3
Buen día a todos.
Sonará común pero creanme que ya he buscado y probado código y no encuentro algun indicio de solución. Tengo Form1 con un boton que muestra Form2 mediante ShowModal, Form2 que en su evento OnActivate muestra un Form3.ShowModal, en Form3 mediante un boton quiero cerrar Form2 y asi mismo y no lo hace, el codigo es el siguiente :
Pero si en Form2 pongo un Boton que muestre Form3.ShowModal, en Form3 el boton (codigo anterior) si funciona, cierra Form2 y Form3. Gracias anticipadas por tomarse el tiempo de leer y responder. Saludos. |
#2
|
||||
|
||||
El codigo es bastante sencillo.
Unit1:
Unit2:
Unit3:
|
#3
|
|||
|
|||
hola ethangio
Cita:
En cuanto a tu código, si realmente en el botón del form3 quieres cerrar los dos formularios y para evitar vinculos cruzados de unidades yo lo pondría así: Unit2
Unit3 De esta forma cada formulario controla su propio cierre, sin que otro formulario intervenga. Saludos!! |
#4
|
||||
|
||||
Muchas gracias bucanero por responder, la idea es que el form2 actúe como fondo de pantalla y solo deje al form3 completamente visible y es por eso mi necesidad de cerrar el form2 desde el form3.
Agradecería que probaras el código porque no sé cómo explicarme lo que sucede cuando se ejecuta form3.ShowModal en Form2.Activate. Saludos y nuevamente gracias |
#5
|
|||
|
|||
Vale ya veo el problema que tienes. Si lo que quieres es utilizar el form2 como fondo e inicias el form3 en el ONSHOW del form2, el form2 no se te muestra hasta después de finalizar el form3, y por eso estas utilizando el ONACTIVATE... pero es que así entras en bucle o corres el riesgo de hacer operaciones en el form2 estando ya en modo de cierre o inactivo.
Prueba lo siguiente, inserta en el form2 un TTimer con la propiedad enabled desabilitada y utiliza el siguiente código en UNIT2:
|
#6
|
||||
|
||||
Bucanero, hice como me dijiste y obtengo el siguiente error: " Cannot make a visible window modal "
No entro en bucle con el evento OnActivate. Probe poniento un mensaje en ese evento y solo lo hace despues de mostrarse:
Lo que no me puedo explicar es por qué cuando presiono el boton del Form2 y muestro el Form3 al cerrar las ventanas con el boton del Form3 si funciona el cierre del Form2. Por favor prueba el codigo que utilizo en el ejemplo y sabrás a lo que me refiero. Gracias. |
#7
|
|||
|
|||
Cita:
Comprueba que el Timer se lance en el evento OnShow y no en el OnActivate. A mi se me abre el form2 y form3, quedando el form2 de fondo, y al cerrar el form3, bien con el botón o bien desde los controles de la ventana, también se cierra automáticamente el form2. Cita:
Creo que se debe a que hasta que no se ejecuten todos los procesos de inicialización de la ventana no te permite cerrarla, estos procesos al menos son los que incluye los eventos OnShow y el OnActivate. De hay mi solución del TTimer para darle tiempo a la ventana a finalizar sus procesos y poner la parte del control del FORM3 fuera de los procesos de la ventana 2 . |
#8
|
||||
|
||||
Perdón bucanero tenia un error de dedo por eso el error, valga la redundancia.
La solucion que me dijiste efectivamente funciona. Agradezco mucho tu tiempo y la solucion que me proporcionaste. Un abrazo y de nuevo muchas gracias. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Obtener valor de una propiedad de una Tabla en un Form1 desde otro Form2 | Yugo | C++ Builder | 6 | 19-11-2015 10:57:08 |
abrir y cerrar form2 desde form1 | aitorqrv | Lazarus, FreePascal, Kylix, etc. | 15 | 20-12-2013 21:11:05 |
Dejar siempre visible Form2 que se llama desde Form1 | yevabas | Varios | 1 | 11-05-2013 00:45:40 |
acceder al form1 desde el form2. | petete2008 | OOP | 2 | 08-02-2012 20:29:59 |
form2 cerrar el form1 | ingabraham | Varios | 6 | 07-01-2009 19:11:13 |
|