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 12-11-2007
Avatar de walito
walito walito is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Poder: 19
walito Va por buen camino
Problema GRAVE con LoadPackage y MDIChild

Buenas!!

Tengo un problema GRAVE con levantar de un archivo bpl un formulario MDICHILD.

El codigo que uso es el siguiente:
Código Delphi [-]
function TModules.executeModule(moduleName: string): Integer;
var
  AClass: TPersistentClass;
begin
      {* verifico que el modulo existe, junto con el archivo *}
    if
      FileExists(ExtractFilePath(ParamStr(0))+moduleName)
      and
      (moduleName <> '')
    then
    begin
        {* Cargo el modulo a memoria *}
        handle := LoadPackage(ExtractFilePath(ParamStr(0))+moduleName);

        {* si es un modulo válido *}
        if handle <> 0 then
        begin
            try
                AClass := GetClass(CLASSBPL);

                try
                    if AClass <> nil then
                    begin
                        LockWindowUpdate(Handle);
                        EnableAnimation(false);

                        AForm := nil;
                        AForm := TComponentClass(AClass).Create(Application) as TForm;
                        

                        EnableAnimation(true);
                        LockWindowUpdate(0);

                        AForm.Show;

                        Result := 0;
                    end;
                except
                    on E:Exception do
                       Result := -1;
                end;
            except
                on E:Exception do
                   Result := -2;
            end;
        end
        else
            Result := -3;
    end
    else
        Result := -4;
end;

Este es un metodo que esta en una clase que la uso para levantar y ejecutar los BPL.
Funciona todo bien, el problema es que no puedo liberar la el package cuando cierro el FORM, ya que no me deja abrir o cargar otro package hasta que no cierre y libere este.

Que forma puede haber para hacer esto bien?

Intente levantando un Thread que verifica si el form esta showing y ahi liberar pero es un bardo!

Alguien le paso esto? en google ya no se como buscar.

Porque son 2 cosas las que hay que liberar, es el handle y el AForm, es mas es el handle ya que el MDIChild si no me equivoco ya se libera con el caFree.

Gracias

Última edición por walito fecha: 12-11-2007 a las 22:22:56.
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
problema con mdichild ercrizeporta Varios 4 16-10-2007 10:01:07
Problema grave de rendimiento ACK Firebird e Interbase 13 12-09-2005 17:10:44
una simple función, un grave problema.. DynaRoc Varios 6 23-11-2004 16:39:55
Problema con MDIChild thecarlos Varios 9 16-01-2004 00:08:43
Grave problema en BASE DE DATOS interbase Manuel Firebird e Interbase 3 10-06-2003 01:05:36


La franja horaria es GMT +2. Ahora son las 15:31:56.


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