| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Mie 17 Oct, 2018 7:50 pm Asunto: delete Form3 desde Form 2 |
|
|
Tengo el siguiente problema:
Tengo 3 Formularios:
1. fV = Formulario principal siempre activo.
2. frmOpciones = Formulario que creo y destruyo DINAMICAMNETE.
3 frmDisplay = Formulario que creo y destruyo DINAMICAMENTE.
El problema es que si desde el FORMULARIO 3 hago esto:
| Código: | frmDisplay = new TfrmDisplay(fV); |
y luego cierro el formulario 3 y vuelvo a crearlo y hago esto:
| Código: | delete frmDisplay; |
NO FUNCIONA.
Parece que se pierde la REFERENCIA al Formulario 3.
No me da error ni nada pero el Formulario 3 no se DESTRUYE.
No se como solucionarlo.
¿Alguna sugerencia? _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Mie 17 Oct, 2018 8:23 pm Asunto: |
|
|
Asi cierro mis forms , ojo el la referencia a NULL y la Acción caFree
| Código: |
void __fastcall TfrmCuentas::FormClose(TObject *Sender,
TCloseAction &Action)
{
tbSubCuentas->Close();
tbCuentas->Close();
tbProyectos->Close();
frmCuentas=NULL;
Action=caFree;
}
|
_________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Mie 17 Oct, 2018 8:39 pm Asunto: |
|
|
POSDATA:
Gracias Touchsoftwares, pero lo que planteas no me soluciona el problema.
El problema es que:
| Código: | delete frmDisplay; |
Se crea desde frmOpciones que es un Formulario creado DINAMICAMENTE.
Cuando creo diatónicamente el frmDisplay, luego destruyo el frmOpciones, el cual tiene una posición en Memoria pero que al ser destruido desaparece.
Por tanto cuando lo vuelvo a crear, es un OBJETO distinto al anterior y parece que ya no tiene acceso al OBJETO que se creó puesto que no es el CREADOR.
Dos formularios aunque sean el mismo el que creas y destruyes, en cada proceso es un objeto distinto, de hecho podría crear un numero indeterminado de OBJETOS frmOpciones.
Quizás es que no me he explicado bien.
No lo elimina el Formulario que lo creó y puesto que el OBJETO al que apunto no existe, no se llega a ejecutar el EVENTO OnClose();
Pero gracias por tu comentario. _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
JesúsGandia Master


Registrado: 17 Jul 2004Mensajes: 403Ubicación: Gandia, Valencia
|
Publicado: Jue 18 Oct, 2018 12:18 pm Asunto: |
|
|
Ya lo he corregido.
En otra parte del código donde se comprobaba la creación dinámica del formulario, tenia una opción de test donde por error volvía a crear el mismo formulario. Como consecuencia se creaban 2 formularios iguales y luego solo se destruía uno de ellos por lo que siempre se mostraba el creado por error. _________________ Muchos hombres no se equivocan jamás porque no se proponen nada razonable. |
|
| Volver arriba |
|
 |
|