Fórum Qual a melhor maneira de trabalhar com os FROMS?? #269930
24/02/2005
0
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
Tem algum outro modo melhor de se trabalhar com eles???
Armando.boza
Curtir tópico
+ 0Posts
24/02/2005
Armando.boza
Gostei + 0
24/02/2005
Tnaires
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
Gostei + 0
24/02/2005
Beppe
Gostei + 0
24/02/2005
Zunker
e para fechar como foi citado pelo ´tnaires´
Gostei + 0
24/02/2005
Fred
form1 := Tform1.create(self)//ou application
try
form1.showmodal;
finally
form1.Release;
form1 := nil;
end;
8)
Gostei + 0
24/02/2005
Fred
Gostei + 0
24/02/2005
Tnaires
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.
Gostei + 0
24/02/2005
Armando.boza
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;
Gostei + 0
24/02/2005
Tnaires
Gostei + 0
24/02/2005
Armando.boza
Legal...
Dessa eu não sabia..
Vou fazer os testes e dou retorno assim que puder
Muito obrigado
Gostei + 0
25/02/2005
Fred
Gostei + 0
25/02/2005
Paulo_amorim
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é+
Gostei + 0
25/02/2005
Armando.boza
Alguem pode me explicar a diferença de usar esse .free e o .release com nil?????
Gostei + 0
25/02/2005
Marcio.theis
http://www.linhadecodigo.com.br/dicas.asp?id_dica=1042&sub=14
Gostei + 0
25/02/2005
Isabelct
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;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)