Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-12-2007
citlalliDgp citlalliDgp is offline
Miembro
 
Registrado: oct 2007
Posts: 38
Poder: 0
citlalliDgp Va por buen camino
Exclamation Eliminar De Memoria Form Mdi

Hola amigos expertos, me encuentro aqui nuevamente necesitando de su ayuda. Mi priblema es el siguiente:

Estoy manejando forms del tipo MDI. Tengo un form fsMDIForm que es el principal de mi aplicación. Desde el cual invoco otros forms del tipo fsMDIChild. El problema es que cuando cierro uno de los forms fsMDIChild, y luego intento abrirlo de nuevo desde el form principal me arroja un error que dice mas o menos "Acces violation at address....". Probablemente la razón por la que me aparese este error sea por que no estoy eliminando de la memoria el form hijo que creo cuando lo invoco. La cuestión es, cómo puedo asegurarme de que cuando cierro un form fsMDIChild, éste se elimine de la memoria, para de ésta manera, cuando trate de volverlo a invocar me permita simplemente volverlo a crear.

Alguien podría ayudarme por favor.....
Responder Con Cita
  #2  
Antiguo 11-12-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Hola, en el evento OnCLose del form Child pones lo siguienteÑ

Código Delphi [-]
Action := caFree;

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #3  
Antiguo 11-12-2007
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
En el evento OnClose del formulario a cerrar pon lo siguiente:

Código:
Action:= caFree;
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
Responder Con Cita
  #4  
Antiguo 11-12-2007
Avatar de Gabo
[Gabo] Gabo is offline
Miembro Premium
 
Registrado: mar 2007
Ubicación: Murcia (España)
Posts: 684
Poder: 18
Gabo Va por buen camino
¡Vaya! Mi computador va lento y se queda un poco pillado!!!

Por cierto, en éste post de uno de los hilos que has abierto para tratar el tema, te indiqué un artículo de la wikipedia para que leyeras, donde se explica esta cuestión. ¿Lo has leído?
__________________
Saludos,
Gabo

A menos que se indique lo contrario, el código estará hecho en C++Builder.
Responder Con Cita
  #5  
Antiguo 11-12-2007
citlalliDgp citlalliDgp is offline
Miembro
 
Registrado: oct 2007
Posts: 38
Poder: 0
citlalliDgp Va por buen camino
Hola Gabo, claro que leí el articulo que me recomendaste. Pero pensé que algo me estaba haciendo falta, es por eso que realizo esta consulta.
Responder Con Cita
  #6  
Antiguo 11-12-2007
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 22
enecumene Va por buen camino
Hola, intentaste de esta forma?:

Código Delphi [-]
procedure TForm2.Proveedores1Click(Sender: TObject);
begin
Application.CreateForm(TForm4, Form4);
Form4.Show;
end;
o

Código Delphi [-]
procedure TForm2.Proveedores1Click(Sender: TObject);
begin
Form4:=TForm4.Create(self);
Form4.Show;
end;

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #7  
Antiguo 11-12-2007
citlalliDgp citlalliDgp is offline
Miembro
 
Registrado: oct 2007
Posts: 38
Poder: 0
citlalliDgp Va por buen camino
Hola enecumene, gracias por tu atencion. La instruccion que me dices ya la he utilizado, pero pensé que algo mas me hacía falta, por que despues de que cierro el form no puedo volver a abrirlo. Entonces, creo que el problema es otro, mira, te voy a explicar. Desde el form principal donde invoco el form "Registrar Productos" (por mencionar un ejemplo), he puesto este código:

Código Delphi [-]
procedure TForm2.Proveedores1Click(Sender: TObject);
begin
if not Assigned(Form4) Then
    Application.CreateForm(TForm4, Form4)
else
    Form4.BringToFront;
end;

Esto con la finalidad de validar que una vez que el form 'Registrar Productos' haya sido invocado, si el usuario intenta invocarlo de nuevo, no me cree otro form nuevo. De lo contrario cada vez que el usuario repita esta acción se estaria creando un form. Crees que sea por esto que no me permite volver a crear el form cuando lo cierro ????
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
Como llamar form desde otros form y regresar a la linea que se estaba ejecutando Willy Rodrigo C++ Builder 1 03-08-2007 20:36:23
Eliminar ciertos datos de la memoria RAM dec Seguridad 63 30-03-2007 04:42:29
Error de memoria al llamar otra form dmagui Conexión con bases de datos 18 26-09-2005 23:43:27
eliminar opcion de eliminar en un dbgrid morfeo21 Varios 3 14-07-2005 18:05:32
Eliminar del memoria los querys Aura OOP 4 01-04-2004 18:40:40


La franja horaria es GMT +2. Ahora son las 01:40:29.


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