Criar e destruir formulario
Eu utilizo formularios MDI, para criar o form eu utilizo:
e no evento onClose do Form criado:
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
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
Curtidas 0
Respostas
Raserafim
17/10/2007
Action := caFree;
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.
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
Dr. Interbase
17/10/2007
Acredito que se está demorando no action:=Cafree. É porque talvez tenha querys abertas. Tente fechar as querys e depois destruir as querys do form antes embora o action cafree destrua tudo.
GOSTEI 0
Nigro
17/10/2007
Tente assim:
Form1 := TForm1.Create(Self);// Criação de um form à partir de um ´menu´
Form1.ShowModal;
Form1.Free; // ou FreeAndNil(Form1);
Form1 := TForm1.Create(Self);// Criação de um form à partir de um ´menu´
Form1.ShowModal;
Form1.Free; // ou FreeAndNil(Form1);
GOSTEI 0