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
if
FileExists(ExtractFilePath(ParamStr(0))+moduleName)
and
(moduleName <> '')
then
begin
handle := LoadPackage(ExtractFilePath(ParamStr(0))+moduleName);
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