![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Problema al cerrar formulario
Hola, se me presenta el siguiente problema.
Digamos que tengo un formulario principal y que cuando pulso un boton muestro otro: Código:
TfrmRetirarTarjeta *frmRetirarTarjeta;
frmRetirarTarjeta = new TfrmRetirarTarjeta(this);
frmRetirarTarjeta->ShowModal();
Mi intención es que cuando se detecte el evento automáticamente se cierre el formulario y volver al principal. Debugeando he visto como efectivamente lo hace todo bien, pero cuando llega a la linea: Código:
Close(); No le encuentro sentido..., ideas? Un saludo! |
|
#2
|
||||
|
||||
|
No entiendo porque usas un formulario modal, éstos se usan para bloquear la aplicación y requerir al usuario cierta acción que precisa su intervención.
En cualquier caso y sin ver tu código de cierre, intuyo tu problema. Posiblemente tengas definida la variable frmRetirarTarjeta dos veces, una como global y otra como local en la función donde creas el formulario modal. A demás, posiblemente, tu Formulario frmRetirarTarjeta lo definiste como autocreado y no como disponible. Si frmRetirarTarjeta es un autocreado esto te servirá: Código:
// Mostrar
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Timer1->Enabled = true;
frmRetirarTarjeta->ShowModal();
}
// Cerrar
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Timer1->Enabled = false;
frmRetirarTarjeta->Close();
}
Código:
// Global...
TfrmRetirarTarjeta *frmRetirarTarjeta;
// Mostrar
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Timer1->Enabled = true;
frmRetirarTarjeta = new TfrmRetirarTarjeta(this);
frmRetirarTarjeta->ShowModal();
Timer1->Enabled = false;
}
// Cerrar
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Timer1->Enabled = false;
frmRetirarTarjeta->Close();
}
// Y definir el evento OnClose de TfrmRetirarTarjetapara destruir el formulario y liberarlo de la RAM
void __fastcall TfrmRetirarTarjeta::FormClose(TObject *Sender, TCloseAction &Action)
{
Action = caFree;
}
Saludos. |
|
#3
|
|||
|
|||
|
hola, gracias por la respuesta, es justo lo q necesitaba.
El problema lo tenia porque me habia hecho un lio y desactivaba el timer del form principal y activaba el del secundario y la cosa no iba bien. Al tener control desde el timer del principal (que como está abierto en segundo plano) todo funciona perfectamente y con menos código. Muchas gracias por tu amable ayuda. Un saludo! |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Cerrar Formulario | Red_Leon | OOP | 13 | 08-02-2010 10:22:07 |
| cerrar formulario | Patricio | Varios | 2 | 04-07-2008 23:52:27 |
| Cambiar propiedad de componente del formulario padre al cerrar el formulario hijo | jzginez | OOP | 5 | 22-06-2007 21:40:51 |
| Cerrar conexión al cerrar formulario | arantzal | Conexión con bases de datos | 5 | 09-08-2006 12:43:52 |
| Cerrar formulario en uso | locojoan | API de Windows | 1 | 21-06-2006 17:08:22 |
|