Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-02-2004
tango01 tango01 is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mar del Plata - Argentina
Posts: 46
Poder: 0
tango01 Va por buen camino
Liberar formularios

hola gente tengo un problema.

tengo una aplicacion que crea en tiempo de ejecucion todos los forms menos el principal.

ahora, cuando el usuario cierra la sesion, de esta aplicacion, quiero liberar la todos los forms y además asignarles nil.

hasta ahora probe lo siguiente sin exito.
Código:
    tot := Application.ComponentCount -1;
    for i := 0 to tot do begin
      if (i < Application.ComponentCount) and (Application.Components[i] <> nil) and (Application.Components[i] is TForm) and (Application.Components[i].Name <> 'fPrincipal') then begin
         faux := (Application.Components[i] as tform);
         (Application.Components[i] as tform).Free;
         faux := nil;
      end;
    end;
mi problema es que no me toma la asignacion nil, entonces cuando quiero mostrar un formulario que fue liberado, cuando pregunto si es nil para saber si lo tengo que crear, la variable del formulario no es nil y me da errores de acceso de memoria. ...

como puedo resolver este problema?

gracias de antemando por su ayuda.
__________________
El secreto de la libertad está en no tener miedo.
Responder Con Cita
  #2  
Antiguo 16-02-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Es que la variable que estas apuntando a Nil, es la variable faux, si el formulario en tiempo de ejecución fue asignado a otra variable, la otra va a seguir manteniendo el valor anterior.


Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 16-02-2004
tango01 tango01 is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mar del Plata - Argentina
Posts: 46
Poder: 0
tango01 Va por buen camino
hola delphi.com.ar lo que dices es correcto, pero como puedo asignarle nil si no puedo hacer

(Application.Components[i] as tform) := nil

ni

Application.Components[i] := nil


gracias.
__________________
El secreto de la libertad está en no tener miedo.
Responder Con Cita
  #4  
Antiguo 16-02-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
El tema es que vas a tener que asignarle nil indistintamente a todas las variables, si los formularios no tienen múltiples instancias, puedes asignarle Nil a la variable en el OnDestroy de los mismos.


Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 16-02-2004
tango01 tango01 is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mar del Plata - Argentina
Posts: 46
Poder: 0
tango01 Va por buen camino
la verdad no queria llegar a esa instancia ya que son muchos formularios .. queria ver si podia hacerlo con una rutina generica ... pero si no surge nada tendre que hacer como tu bien dices en el ultimo mensaje.

saludos
__________________
El secreto de la libertad está en no tener miedo.
Responder Con Cita
  #6  
Antiguo 16-02-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Sinceramente, en la mayoría de mis "proyectos" no uso ninguna variable para acceder a los formularios, mas que la de los DataModules, y la del formulario principal (MDI). Como no tengo necesidad de comunicarme con los formularios individualmente una vez creado, directamente borro la variable, y los creo simplemente:
Código:
TMiFromulario.Create(Self);
Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
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


La franja horaria es GMT +2. Ahora son las 07:19:21.


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