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 22-07-2008
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 24
ContraVeneno Va por buen camino
Cerrar Paquetes cargados dinámicamente, desde el paquete.

Estoy cargando dinámicamente un paquete BPL desde un ejecutable (Aplicación MDI) de la siguiente forma:
Código Delphi [-]
   PackageModule := LoadPackage('UnBPL.bpl');
   if PackageModule <> 0 then begin
    AClass := GetClass('TClaseBPL');
    if AClass <> nil then begin
     with TComponentClass(AClass).Create(Application) as TForm do begin
      OnClose := LiberaBPL;
      Tag := PackageModule;
      Show;
      //Free
     end; //with
    end else begin
      showmessage('no se pudo');
    end; //if aclass
//   UnloadPackage(PackageModule);
   end; //if package <>0

El detalle está en que le asigno al evento OnClose, le asigno la función "LiberaBPL", la cuál lo único que hace es liberar el paquete de la siguiente forma:
Código Delphi [-]
  Temp := (sender as TForm).Tag;
  (sender as TForm).Free;
  UnloadPackage(Temp);

Si le doy click al botón cerrar de la barra de título (la tachita roja), se ejecuta el evento OnClose desde la aplicación que lo carga (MDI) y se libera el paquete si problemas:
Es decir: MDI -> OnClose -> LiberarBPL -> Regresa al MDI

Pero si dentro del BPL pongo un botón "Cerrar" con la instrucción "Close", el evento OnClose se manda llamar desde el mismo BPL y me genera un error de memoría, porque pasada la línea "UnloadPackage", intenta regresar al BPL, pero este ya fue liberado;
Es decir: BPL -> OnClose -> LiberarBPL -> Regresa al BPL - Error de memoria

Puedo hacer, en lugar de la instrucción "Close", poner la instrucción "Free" y el BPL se libera, pero no se libera en la aplicación MDI (nunca ejecuta el OnClose -> LiberarBPL).

Así que mi pregunta es: ¿Como puedo cerrar y liberar el paquete, desde el mismo paquete? Cualquier idea, orientación o comentario es bienvenido.
__________________

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Liberar Paquetes cargados dinámicamente ContraVeneno Varios 3 08-07-2008 14:58:38
Evitar cerrar formulario principal si hay librerías cargadas dinámicamente ContraVeneno Varios 5 03-07-2008 16:21:14
Error al cerrar aplicacion cuando creo fields dinamicamente mierda OOP 3 02-11-2006 18:57:41
Cerrar dos formularios creados dinamicamente (al mismo tiempo) ctronx Varios 7 02-09-2004 00:19:04
cerrar formularios creados dinamicamente ctronx Varios 5 17-06-2004 18:25:17


La franja horaria es GMT +2. Ahora son las 08:12:34.


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