Fórum Form.release ou Action:=cafree? Qual usar? #233945
24/05/2004
0
Ex:
//crio
try
frmconsulta:= Tfrmconsulta.create(application);
except
end;
// executo
frmconsulta.showmodal;
//destruo
frmconsulta.release;
Q dúvida é a seguinte, quando eu uso o release como acima, é necessário usar no evento Onclose do frmconsulta a linha:
Action:=cafree?
Ou o release faz a mesma coisa? Ou se eu usar o cafree e depois usar o release, isto pode acarretar erros?
Obrigado
Aledeol
Curtir tópico
+ 1Post mais votado
24/05/2004
Vamos às definições :
Existem várias sintaxes, possíveis para criação e liberação do form...
// Para .ShowModal
// 1º
Form2:= TForm2.Create(Application);
Form2.Showmodal;
Form2.Free;
Form2:= nil;
// 2º
Application.CreateForm(TForm2,Form2);
Form2.Showmodal;
Form2.Free;
Form2:= nil;
// 3º Free e :=nil pode ser substituido por FreeAndNil
// nos dois exemplos...
Form2:= TForm2.Create(Application);
Form2.Showmodal;
FreeAndNil(Form2);
// 4º Release tbm pode ser usado...
Form2:= TForm2.Create(Application);
Form2.Showmodal;
Form2.Release;
Form2:= nil;
// Para .Show vc precisa trabalhar a liberação no Form2...
// 5º
Form2:= TForm2.Create(Application);
Form2.Show;
{ 1º
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:= caFree;
Form2:= nil;
end;
2º
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Release;
Form2:= nil;
end; }
Estas são as formas que estou me lembrando agora... talvez exista mais alguma...
Se vc usar caFree seguido de := nil no Form2 e depois Free ou Release no Form chamador vc terá uma exceção pois o objeto já não existe mais e já foi nulado...
Espero ter ajudado...
T+
Vinicius2k
Gostei + 1
Mais Posts
24/05/2004
Aledeol
ajudou bastante. Vou verificar o q fiz. O interessante é q criei um função de dentro de uma dll q Cria o frmconsulta. E toda vez q a função termina ele dá access violation.
E realmente eu usa cafree e depois release no form1. Pode ser isto.
Obrigado
Gostei + 0
24/05/2004
Aroldo Zanela
No caso de MDI (raramente uso) eu utilizo caFree. No caso de aplicações SDI eu uso simplesmente free ou release, dependendo da garantia que eu necessite antes de liberar o formulário.
Gostei + 0
24/05/2004
Paulo_amorim
No caso de MDI (raramente uso) eu utilizo caFree. No caso de aplicações SDI eu uso simplesmente free ou release, dependendo da garantia que eu necessite antes de liberar o formulário.[/quote:d64cab06d1]
Eu sempre utilizei Free em aplicações SDI, deixando o caFree para MDI (o qual tenho aversao eheh :roll:)
frm := Tfrm.Create(Self); ShowModal; frm.Free;
Isso garante a criação/liberação do form até onde eu sei...
Não sei se tem alguma limitação, mas...
Até+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)