... ::: Como fazer pra deixar o aplicativo leve :: ...
14/02/2003
0
pro meu programa nao ficar cheio de coisa carregada na memoria, quero saber quando uso essas coisas:
Form1.Show e Form1.Showmodal (qual é a diferenca?)
pra que serve e onde uso:
Form1.Free
Form1.close
(qual libera o form da memoria?)
que mais tem pra liberar os trem?
Garciabh2
Posts
14/02/2003
Anonymous
Faça o seguinte, na propriedade do Form, procure no Events OnClose e coloque a linha de comando para todas as janelas.
Action := cafree;
Antes de você dar um showmodal, nas telas, faça:
Update;
Form1 := TForm1.Create(Self)
Form1.showmodal;
O showmodal, impede que vc acesse alguma janela em segundo plano.
No menu Project do Delphi, Options, deixe somente sua forma principal como Auto-Create Forms, as demais, deixe como Avaliable Form.
Isso melhora em 40¬ a velocidade.
Espero ter ajudado
Abraços
Carlão
carlao@sulbrasil.com.br
14/02/2003
Nildo
O form1.close apenas fecha o form
o form2.free libera ele da memorio. Quando o free é chamado, voce tem que dar outro .create para mostrar denovo
14/02/2003
Garciabh2
testei o Action := cafree;
no OnClose do Form2, mas deu uns pau feio
a ideia de colocar os forms como available pareceu ótima! até abriu mais rapido o programa, mas quando fui abrir um form2 pelo menu deu uns access violation feioso aqui... ao inves de Form2.showmodal tenho que usar Form2.create?
será que faltou algo?
A ideia do Bart Ninja tb foi boa! só uma duvida: compensa dar um Free no form pra depois ter que dar um Create de novo?
14/02/2003
Anonymous
Exemplo:
no Close do form, depois do caFree:
TFormASerFechado.close()
begin
Action:=caFree;
Frm_Principal.FormASerFechado:=nil;
end;
TFrm_Principal.CriarFormASerFechado_ActExecute;
begin
if not assigned(FormASerFechado) then
FormASerFechado:=tFormASerFechado.Create(self);
FormASerFechado.Show;
end;
E por aí vai...
sohad@ig.com.br
14/02/2003
Anonymous
Quando vc usar o Action := cafree;
será sempre necessário que vc crie a forma novamente, no menu que vc está fazendo,
Form1 := TForm1.Create(Self);
Esse comando Action, ele libera de vez a tela e todos os recursos usados por ela da memória.
Qualquer coisa, me mande um mail.
carlao@sulbrasil.com.br
14/02/2003
Fred
Faça o Seguinte na hora de chamar o form digite
if formaserchamado = nil then //se nao estiver criado entao crie
formaserchamado := tformaserchamado.create(self);
formaserchamado.show; ou showmodal
No evento onclose deste formaserchamado digite:
action := cafree;
formaserchamado := nil;
Só isso!!! 8)
14/02/2003
Nebrio
Para criar o form faça:
Form := TForm.Create(self);
Form.ShowMoal;
No Evento OnClose do Form faça:
Action := CaFree;
Form := Nil;
No Evento OnDestroy faça:
Form := Nil;
Form = ao nome do seu Form
Nébrio
Avise se funcionar
14/02/2003
Garciabh2
fui tentando aqui e funcionou o que o Fred disse
fiz do jeitim que ele falou e nao deu pau (tava acontecendo de ele abrir o form uma vez, mas quando fechava e pedia pra abrir de novo dava pau)
aí peguei mais o que o Carlao sugeriu de colocar os forms secundarios todos em Available (ao inves de AutoCreate) nas opcoes do projeto e a abertura tambem ficou muito mais rapida.
acho que deu pra gente dar uma esclarecida de como fazer ficar mais leve (inclusive os que acessaram querendo saber mais sobre isso)
15/02/2003
Sandra
If Application.FindComponent(´F_Sobre´) = Nil Then
Application.CreateForm(TF_Sobre, F_Sobre) ;
Try
F_Sobre.ShowModal ;
Finally
F_Sobre.Free ;
End ;
Só isso...
15/02/2003
Espiridiao
Obrigado :wink:
17/02/2003
Garciabh2
http://www.aspack.com
foi ótimo pra enxugar o exe
(reduziu o meu de 1.5Mb pra 500Kb !!!
fica menor na memoria
Clique aqui para fazer login e interagir na Comunidade :)