Olá Pessoal,

No meu sistema, todas as telas são chamadas via Show e não ShowModal, já que 
os usuários querem abrir várias telas do sistema ao mesmo tempo, assim como 
fazem sistemas como SAP e Datasul EMS. A questão é a forma de carregamento 
dos pacotes, já que são muitos usuarios e preciso ter a facilidade de 
atualizar o sistema sem os usuarios sairem do mesmo.

Até aí tudo bem, isso já está tranquilo.

O grande problema é com relação aos formularios não modais, onde segui o 
seguinte método:

Tenho uma variavel global (HPackageGlobal) onde uso para carregar o pacote, 
na entrada do formulario, passo esse valor para uma variavel 
local(HPackageLocal) que é usada no finalization do pacote para fazer o seu 
descarregamento.
Não está dando erro nenhum, o problema é que monitorando a variavel 
HPackageGlobal em cada chamada, ele sempre retorna o mesmo numero e quando 
executa a rotina finalization, não está descarregando o pacote da memória, 
já que sua memória usada (via task manager) sempre aumenta.

Será que não existe forma de chamar os formularios via Show usando pacotes e 
depois descarrega-los ?

Rotina para carregar o pacote:

function CarregarPackage(Package: String; Formulario: String ):Boolean;
var
  frmForm: TForm;
  FormClass: TFormClass;
begin
  Result := False;
  HPackageGlobal := LoadPackage(Package);
  if HPackageGlobal <> 0 then
    begin
      Result := True;
      FormClass := TFormClass(FindClass(Formulario));
      frmForm := FormClass.Create(nil);
      frmForm.Show;
    end
  else
    begin
      ShowMessage('Não foi possível carregar o módulo');
    end;
end;

No pacote carregado, eu uso o codigo abaixo para gerenciar o unload do 
pacote:

procedure TfrmPontoControle.FormShow(Sender: TObject);
begin
  HPackageLocal := HPackageGlobal;
end;

procedure TfrmPontoControle.FormDestroy(Sender: TObject);
begin
  FreeAndNil(frmPontoControle);
end;

initialization
  RegisterClass(TfrmPontoControle);

finalization
  UnRegisterClass(TfrmPontoControle);
  UnloadPackage(HPackageLocal);

Obrigado pela ajuda de todos

Dener








-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

Para ver as mensagens antigas, acesse:
 http://br.groups.yahoo.com/group/delphi-br/messages

Para falar com o moderador, envie um e-mail para:
 [EMAIL PROTECTED] ou [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a