Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-05-2011
mizzard mizzard is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 100
Poder: 14
mizzard Va por buen camino
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();
El caso es que una vez que lo abro desactivo el timer del formulario principal (que detecta eventos) y habilito el timer del nuevo formulario.

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();
La ignora y no lo cierra. He probado con un boton en el nuevo formulario y la misma linea de codigo y si que va. Tambien he probado con CloseModal() y nada...

No le encuentro sentido..., ideas?

Un saludo!
Responder Con Cita
  #2  
Antiguo 10-05-2011
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.197
Poder: 20
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
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();
}
En otro caso debes declarar frmRetirarTarjeta como global o como miembro de Form1 y proceder así:

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.
Responder Con Cita
  #3  
Antiguo 11-05-2011
mizzard mizzard is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 100
Poder: 14
mizzard Va por buen camino
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!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 23:59:46.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi