Amigo, experimente utilizar ShowModal, pois somente com o Show, vc poderá 
abrir vários forms, agora me diga, porque abrir vários forms, se o usuário 
apenas vai se concentrar em um.

Eu até entendo que vc queria, por exemplo, em uma venda poder cadastrar o 
cliente, sem ter que abandonar o form de vendas, ou no cadastrado de 
clientes cadastrar uma nova cidade..
Para isto utilize o popupmenu, ou um botão.

Ex:
procedure TMainForm.ClientesmnuClick(Sender:Tobject);  // Aqui chama o form 
de clientes do menu principal
begin
    FormClientes := TFormClientes.Create(self);
    try
      FormCleintes.ShowModal;
    finally
      FormClientes.Release;
   end;
   FormClientes := nil;
end;

no Form Clientes, na seça implementation eu declaro o seguinte
implementation;
uses DataCad, Cidades;

Tenho um popupmenu com a opcção de ir para ocadastro de cidades, ai é só 
usuário clicar com o botão direito do mouse e selecionar cidades, ficando 
assim:

procedure TFormClientes.Cidades1Click(Sender: TObject); //Aqui eu chamo o 
cadastro de cidades sem sair do cliente.
begin
  FormCidade := TFormCidade.Create(Self);
  try
   FormCidade.ShowModal;
  finally
   FormCidade.Release;
  end;
  FormCidade := nil;
end;

Creio que assim vc economizaria mais memória., observe que a cada saida do 
form eu o retiro da memória e o destruo, pois se deixarmos a cargo do 
usuário ele abre todos os forms..

Espero ter ajudado

Fausto






----- Original Message ----- 
From: "PMCC" <[EMAIL PROTECTED]>
To: <delphi-br@yahoogrupos.com.br>
Sent: Tuesday, January 18, 2005 1:48 AM
Subject: [delphi-br] Sistema Roubando Memória



Pessoal, to precisando muito de ajuda,
meu sistema está consumindo muita memória,

Utilizo o seguinte pra abrir os forms à partir do formprincipal:

procedure Tfmprincipal.SubGrupo1Click(Sender: TObject);
begin
  if not Assigned (fmsubgrupo) then
  begin
   fmsubgrupo:=tfmsubgrupo.create(self);
   fmsubgrupo.show;
   exit
  end else
   fmsubgrupo.windowstate:=wsnormal;
   fmsubgrupo.BringToFront;
   fmsubgrupo.Show;
end;

Pra fechar utilizo o seguinte codigo no onclose dele:
procedure Tfmgrupo.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if codgrupo.text<>'' then data1.grupo:=strtoint(codgrupo.text);
  action:=cafree;
  fmgrupo:=nil;
end;

Existe uma forma melhor e q nao prejudique o desempenho???
Qualquer auxilio será bem vindo.

Abraços,
Robson Farias

[As partes desta mensagem que não continham texto foram removidas]



-- 
<<<<< 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










-- 
No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.0.300 / Virus Database: 265.6.13 - Release Date: 16/01/2005




-- 
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.300 / Virus Database: 265.6.13 - Release Date: 16/01/2005



-- 
<<<<< 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