Ver Mensaje Individual
  #5  
Antiguo 24-05-2012
jpgonzalez jpgonzalez is offline
Miembro
 
Registrado: feb 2010
Posts: 121
Reputación: 15
jpgonzalez Va por buen camino
Cita:
Empezado por oscarac Ver Mensaje
has probado quitando el free?

y colocandolo despues de donde invocas a los formularios
Buenas oscarac, la verdad que siempre use la misma logica en D5 y nunca tuve problemas. De hecho, en DXE hay llamadas donde esta secuencia me funciona perfectamente y en otras llamadas tira el Access Violation.
De todas maneras, me parece que el free no esta liberando el Form... mas abajo pongo el codigo. Abrazo y muchas gracias!!!



Cita:
Empezado por Caminante Ver Mensaje
Me parece que despues de hacer free al formulario debes asignar nil a la variable.

Espero te sirva

Saludos
Buenas Caminante, al igual que le dije a oscarac, mepa que algo con el tema del free y el nil hay... abajo pongo el codigo que le puse para probar.
Abrazo y muchasw gracias!!!



Cita:
Empezado por ecfisa Ver Mensaje
Hola jpgonzalez.

¿ Podrías poner el código de los eventos OnClose de los tres forms ?

Es decir de: FrmMain, FrmABMUsuarios y FrmABMPerfilDeUsuario y si en alguno utilizas el evento OnDestroy también.

Saludos.
Buenas ecfisa, nunca programe el evento onClose de los Forms... como dije anteriormente en D5 yo usaba esa secuencia de comandos y funcionaba perfectamente.
Habra diferencias en el manejo de los Forms o de memoria entre D5 y DXE???... ah, cabe aclarar que el D5 lo usaba desde el entorno de Borland y el DXE desde Embarcadero, capaz que eso tambien tenga que ver. Abrazo y muchas gracias!!!

Bueno, las soluciones propuestas me llevaron a probar con el siguiente codigo:
Código Delphi [-]
   procedure TFrmMain.actABMUsuariosExecute(Sender: TObject);
   begin
      if (FrmABMUsuarios = nil) then begin
         FrmABMUsuarios:= TFrmABMUsuarios.Create(self);
      end;
      FrmABMUsuarios.ShowModal;
      FrmABMUsuarios.Free;
      if(FrmABMUsuarios = nil) then begin
        ShowMessage('Se libero FrmABMUsuarios');
      end;
   end;

y me di cuenta de algunas cosas:
1- En el segundo click al Btn que abre FrmABMUsuarios, no entra al "if (FrmABMUsuarios = nil)"
2- Nunca entra en el "if(FrmABMUsuarios = nil)"

Supongo entonces que el form debe quedar en memoria, o algo por el estilo...
De todas maneras sigo sin entender el motivo por el cual me tira el "Acces Violation" cuando quiero abrir otro Form diferente, es decir, si luego de abrir el FrmABMUsuarios y cerrarlo, quiero abrir FrmABMPerfilDeUsuario.

Nuevamente muchas gracias a todos, sigo probando a ver que pasa... Abrazo!!!!
Responder Con Cita