GARANTIR DESCONTO

Fórum Qual a melhor maneira de trabalhar com os FROMS?? #269930

24/02/2005

0

Pessoal... estou com uma dúvida

Não sei qual a melhor maneira de se trabalhar com FORMS.

Não sei se devo criar todos eles no inicio do sistema ou e crio cada um conforme for utilizá-los.

Eu sempre usei assim: no clique do botão colocava:
FRMTeste.create(self);
FRMTeste.showmodal;

Só que desse jeito quando ia fechar o form as vezes dava erro (e depois do erro aparecia ´Runtime error 216´), então passei a criá-los no inicio do sistema e simplesmente dava um
show
para aparecer.

Tem algum outro modo melhor de se trabalhar com eles???


Armando.boza

Armando.boza

Responder

Posts

24/02/2005

Armando.boza

Desculpe pelo Título... é FORMS


Responder

Gostei + 0

24/02/2005

Tnaires

Olá
Eu costumo criar os forms só na hora q for usá-los, e liberá-los da memória quando não precisar mais deles (leia-se: quando o usuário fechar a janela).
Segue o código:
if VariavelQueReferenciaOForm = nil then
  Application.CreateForm(Form, VariavelQueReferenciaOForm);
VariavelQueReferenciaOForm.Show;

E no OnClose do Form:
Action := caFree;
VariavelQueReferenciaOForm := nil

Abraços


Responder

Gostei + 0

24/02/2005

Beppe

Eu escrevi um artigo sobre o assunto...o endereço está no rodapé, este que está em negrito.

[url=http://www.beppe.theblog.com.br/inicial.html]Uncanny Dude´s Home[/url] [url=http://www.forumweb.com.br/artigos/artigos.php]Meus artigos:[/url] Aleatorizando [b:b5d430a10c]Otimizando a inicialização do sistema[/b:b5d430a10c]



Responder

Gostei + 0

24/02/2005

Zunker

para abrir eu uso assim:

if FORM = nil then FORM := TFORM.Create(self) else begin FORM.WindowState := wsnormal; FORM.show; end;


e para fechar como foi citado pelo ´tnaires´


Responder

Gostei + 0

24/02/2005

Fred

Depois de muito buscar a melhor maneira de fazer isso, cheguei a esta conclusão e nunca tive problemas!!!


form1 := Tform1.create(self)//ou application
try
form1.showmodal;
finally
form1.Release;
form1 := nil;
end;
8)


Responder

Gostei + 0

24/02/2005

Fred

soh esqueci de dizer uma coisa: todos os forms devem estar como available forms, no project options!! menos o form menu, e o datamodule se for preciso!!


Responder

Gostei + 0

24/02/2005

Tnaires

Depois de muito buscar a melhor maneira de fazer isso, cheguei a esta conclusão e nunca tive problemas!!! form1 := Tform1.create(self)//ou application try form1.showmodal; finally form1.Release; form1 := nil; end; 8)

Quero só fazer uma consideração: se seu sistema estiver usando forms MDI, e se o form q vc quer criar já tiver sido instanciado, ele vai tentar criar outro em cima da variável q já aponta pro objeto criado anteriormente. Daí a importância do ´if form = nil then´ antes do construtor.


Responder

Gostei + 0

24/02/2005

Armando.boza

Legal pessoal.... muito obrigado pelas respostas...

No caso deste exemplo de nosso amigo... o que significa o finally e o release???

form1 := Tform1.create(self)//ou application 
try 
form1.showmodal; 
finally 
form1.Release; 
form1 := nil; 
end; 



Responder

Gostei + 0

24/02/2005

Tnaires

O bloco try/finally envolve a execução de instruções q podem resultar em algum erro. As instruções q tiverem dentro do bloco finally serão executadas, independente de ter havido erro nas instruções contidas no bloco try. Nesse caso, o finally garante q o form vai ser liberado da memória (Release), independente d qq condição d término da função ShowModal.


Responder

Gostei + 0

24/02/2005

Armando.boza

O bloco try/finally envolve a execução de instruções q podem resultar em algum erro. As instruções q tiverem dentro do bloco finally serão executadas, independente de ter havido erro nas instruções contidas no bloco try. Nesse caso, o finally garante q o form vai ser liberado da memória (Release), independente d qq condição d término da função ShowModal.


Legal...

Dessa eu não sabia..

Vou fazer os testes e dou retorno assim que puder

Muito obrigado


Responder

Gostei + 0

25/02/2005

Fred

Desta mameira nao precisa de if nao senhor!!! porque toda que o formulario eh criado, ele tambem ja eh destruido e liberado da memoria logo apos ser fechado!!! com showmodal eh claro!!!


Responder

Gostei + 0

25/02/2005

Paulo_amorim

Olá

Faço as chamadas com

Form1 := TForm1.Create(self);
try Form1.ShowModal;
finally
Form1.Free;
end;

Como dito, não é necessário if pois ele atribui nil ao liberar o form

Até+


Responder

Gostei + 0

25/02/2005

Armando.boza

Olá Faço as chamadas com Form1 := TForm1.Create(self); try Form1.ShowModal; finally Form1.Free; end; Como dito, não é necessário if pois ele atribui nil ao liberar o form Até+


Alguem pode me explicar a diferença de usar esse .free e o .release com nil?????


Responder

Gostei + 0

25/02/2005

Marcio.theis

De uma olhada nesta dica...

http://www.linhadecodigo.com.br/dicas.asp?id_dica=1042&sub=14


Responder

Gostei + 0

25/02/2005

Isabelct

Form1 := TForm1.Create(self); try Form1.ShowModal; finally Form1.Free; end; Como dito, não é necessário if pois ele atribui nil ao liberar o form


Uma chamada a ´Objeto.Free´ simplesmente não garante a atribuição de nil à variável. Caso queira-se garantir que a variável, após destruída, conterá nil, deve-se fazer a atribuição explícitamente.

Form1 := TForm1.Create(self);
try 
  Form1.ShowModal;
finally
  Form1.Free;
  Form1 := nil;
end;



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar