Fórum Criar e destruir formulario #347479
17/10/2007
0
if (FCadastro = nil) then Application.CreateForm(TFCadastro,FCadastro);
e no evento onClose do Form criado:
Action := caFree; Release; FCadastro := nil;
Em algumas estações estou acessando meu servidor com conexao remota e quando clico para fechar o formulario existe uma demora muito grande, percebi que se eu tirar a linha Action := caFree, o formulario é fechado imediatamente como nas estações que utilizam o programa localmente, qual o impacto se eu tirar de todos os meus formularios a linha Action := caFree ? Ou alguem sabe me dizer porque ela causa essa lentidao ?
Abs
Felipeiw
Curtir tópico
+ 0Posts
17/10/2007
Raserafim
siginifica que vc está tirando o form da memória, ou seja, com esta linha vc está tirando o objeto form e todos os seus componentes da memória.
retirar esta linha significa que o form não precisará ser destruido da memória. isto realmente fará com que o form feche mais rapidamente e abra também mais rapidamente (ao menos apartir da segunda vez).
não é regra usar esta linha de código. em algumas situações é preferível não destruir o form da memória, por exemplo quando é um form em que é constantemente aberto.
já que retirando esta linha de código, ou seja, já que não destruindo o form da memória agiliza bastante o seu programa então retire. mas pode continuar a destruir nos forms que são eventualmente aberto, evitando assim que um form que foi fechado fique ocupando a memória da máquina até que o seu programa seja finalizado.
o incoveniente, talvez, seja que, pelo fato de estar utilizando MDI, ao retirar esta linha o form ao invés de ser fechado passa a ser minimizado.
Gostei + 0
19/10/2007
Dr. Interbase
Gostei + 0
22/10/2007
Nigro
Form1 := TForm1.Create(Self);// Criação de um form à partir de um ´menu´
Form1.ShowModal;
Form1.Free; // ou FreeAndNil(Form1);
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)