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

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-07-2005
jymy788 jymy788 is offline
Miembro
 
Registrado: jun 2004
Posts: 120
Poder: 20
jymy788 Va por buen camino
Abstract Error al cerrar aplicación

Buenas a todos.

Tengo un problemón. Tengo mi aplicación Delphi (con Delphi 7) que permite cambiar de tipo de usuario desde dentro, sin cerrar la aplicación. En el cambio de usuario, dependiendo del usuario, tiene unos permisos u otros, muestra y esconde menús, componentes....

El caso es que si cambio más de una vez de usuario, al cerrar la aplicación, me da el típico Abstract Error o/y Access Violation y aunque sé que tiene que ver con destroys y demás, no consigo encontrar donde.

Os pongo parte de mi código a ver si se os ocurre algo.

Gracias de antemano

procedure TFormMain.BitBtnChangeUserClick(Sender: TObject);
var
ok : boolean;
begin
if ((Application.MessageBox(pChar(BwUserChange),
pchar(BcAtencion), mb_ICONQUESTION or mb_OKCANCEL) = IDOK)) then
begin
Application.Initialize;
Application.Title := 'madd02';
//leemos parametros de ejecucion
ok := BfProSetOpen();

if Assigned(FormListOutput) then
begin
FormListOutput.Close;
FormListOutput.Destroy;
end;


if Assigned(FormSelectAvanzado) then
begin
FormSelectAvanzado.Close;
end;

FormMain.Destroy;

// Seleccion de usuario
Application.CreateForm(TFormMain, FormMain);
FormMain.IniForm(ok);

if (BvUserApli = BcProUserCentral) then
begin
BvUserApli := BcProUserMuni;
end
else
begin
BvUserApli := BcProUserCentral;
end;

// comprobamos si se ha selecionado usuario
if (BvUserApli <> '') then
begin
// cargamos entorno
SetLength(Permisos, 0);
BfProLoadOptionUser();
// Validamos entorno
BfForEntorno(FormMain);
// Lista de Output
Application.CreateForm(TFormListOutput, FormListOutput);
// inicializamos el estado de autenticación para el informe corporativo
// restringido
BvProValidInfCorpRes := false;
if (BvUserApli = BcProUserCentral) then
begin
// desactivamos menus propios de SADD
FormListOutput.FLBInfSelected.Visible := false;
// selector avanzado
//Application.CreateForm(TFormSelectAvanzado, FormSelectAvanzado);
end;

// inicio
Application.Run;
end;
end;
end;



En el evento OnClose del Main tengo lo siguiente:

for cont := (MDIChildCount - 1) downto 0 do
MDIChildren[cont].Close;
Action := CaFree;

Y ya no sé por donde tirar. Sé que no es aconsejable utilizar Destroy, he probado con Free, incluso con Release en todos los sitios donde se me ha ocurrido pero nada.

Lo dicho, gracias por vuestro tiempo
Responder Con Cita
 



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 01:08:14.


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