| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Sab 29 Nov, 2014 6:23 pm Asunto: Problema al Cerrar Forms Abiertos Modalmente |
|
|
Buenas...
Mi problema es el siguiente...
Desde un Form1 visualizo un Form 2 de la forma
| Código: | void __fastcall TForm1::Button1Click(TObject *Sender)
{
TForm2 *Form2 = new TForm2(this);
Form2->ShowModal();
delete Form2;
} |
Al activarse el Segundo form2 automaticamente visualizo un tercer Form de la forma..
| Código: | void __fastcall TForm2::FormActivate(TObject *Sender)
{
TForm3 *Form3 = new TForm3(this);
Form3->ShowModal();
delete Form3;
Application->OnMessage = 0;
ModalResult = mrOk;
} |
Desde el tercer Form3 pulsando un Boton quiero cerrar Form3 y automaticamente Form2 tambien ... para ello
| Código: | void __fastcall TForm3::Button1Click(TObject *Sender)
{
Application->OnMessage = 0;
ModalResult = mrOk;
} |
SOLO me cierra Form3..
¿Que debo de hacer para que me cierre Form2 automaticamente y solo quede activo Form1 sin interactuar en ningun momento con Form2?
Gracias |
|
| Volver arriba |
|
 |
escafandra Master

Registrado: 29 Nov 2007Mensajes: 625Ubicación: Madrid - España
|
Publicado: Dom 30 Nov, 2014 6:53 pm Asunto: |
|
|
Pues a mi me funciona bien. No te hace falta poner Application->OnMessage = 0; para cerrar el formulario, a no ser que sea por otro motivo.
Siempre puedes añadir al final del código de los botones: Close();
Mira a ver si en otra parte del código cambias el ModalResult a mrNone.
Saludos. |
|
| Volver arriba |
|
 |
juanma Cmdr

Registrado: 17 Nov 2005Mensajes: 127Ubicación: Almeria - España
|
Publicado: Lun 01 Dic, 2014 9:19 am Asunto: |
|
|
Para cerrar el form2 necesita poner el Close(); debajo del ModalResult = mrOk;
Yo tampoco entiendo muy bien para que necesitas el onmessage=0
En el Click del Button1 del form3 si ys en diseño pones que el boton es modalresutl ok no necesitas repetirlo en el evento.
Saludos,
Juanma |
|
| Volver arriba |
|
 |
juanma Cmdr

Registrado: 17 Nov 2005Mensajes: 127Ubicación: Almeria - España
|
Publicado: Lun 01 Dic, 2014 9:24 am Asunto: |
|
|
| Por si las dudas, el Close es en evento activate del form2 después de la asignación del modalresult, que dicho sea de paso deberías de asignar ok si viene con un ok del form3 salvo que en tu código esto no sea significativo. |
|
| Volver arriba |
|
 |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Lun 01 Dic, 2014 11:42 am Asunto: |
|
|
Gracias por contestarme... (Supongo que algunos son tambien merecedores de un tributo... si no en este, quiza en otro foro )
El caso es que me sigue sin funcionar... Es por ello que he decidido subir un sencillo ejecutable para mostrar el problema.. puede bajarse de la nube (Pr.rar) :
https://app.box.com/s/rsp29xqj1axn6yx0q5vp
Gracias Otra Vez
Nota :
Lo del | Código: | Application->OnMessage = 0; | lo pongo siempre desde que un mensaje quedo colgado en un form Modal cerrado y me dio problemas. |
|
| Volver arriba |
|
 |
Felip Master

Registrado: 09 Jun 2004Mensajes: 200
|
Publicado: Lun 01 Dic, 2014 12:23 pm Asunto: |
|
|
| Código: |
void __fastcall TForm2::FormActivate(TObject *Sender)
{
TForm3 *Form3 = new TForm3(this);
switch (Form3->ShowModal())
{
case mrOk:{delete Form3;break;}
case mrCancel: break;
}
Application->OnMessage = 0;
ModalResult = mrOk;
//Close();
PostMessage(Handle, WM_CLOSE, 0, 0);
}
|
|
|
| Volver arriba |
|
 |
neg1414 Master

Registrado: 31 Ene 2007Mensajes: 284
|
Publicado: Lun 01 Dic, 2014 5:24 pm Asunto: |
|
|
| Perfecto... Muchas Gracias |
|
| Volver arriba |
|
 |
|