Fórum Liberar forms da memória de dentro de um painel #332334
30/10/2006
0
Usei isso pra executar:
Form1.Parent := Painel; Form1.Show;
OK. Eu fecho e chamo os outros tudo blz, só que aprendi uma vez que para liberar os forms da memória tem que colocar no Onclose esse lance:
Action:= caFree;
Só que quando eu coloco isso nos forms que serão abertos dentro do Panel dah um erro quando eu tento fechá-los.
Posso deixá-los sem isso, ou tem outra maneira de liberá-los ?
Laelsonc
Curtir tópico
+ 0Posts
30/10/2006
Pestana
Gostei + 0
30/10/2006
Laelsonc
O lance é que agora nem mais tah abrindo dentro do Panel. tah dando o seguinte erro:
Access violation at address 00585D63 in module ´projeto.exe´. Read of address 00000000´. Process stopped...
Nem sei o que fiz, pra dar essa exceção agora...
Me ajudem ai galera ! Qual o jeito mai seguro e funcional de colocar um form dentro de um Panel ??!!!!
Gostei + 0
30/10/2006
Pestana
vai no menu Project > View Source e verifique se comtem a linha abaixo:
Application.CreateForm(TForm1, Form1);
caso sim, então o sistema está criando automaticamente o form, quando cria o form automaticamente não se pode destroir ´Action:= caFree´,
voce so utiliza o comando para destruir quando se cria manualmente o form.
alguns exemplos para se criar forms manualmente:
Form := TForm.Create(nil);
Form := TForm.Create(Self);
Form := TForm.Create(Application);
Application.CreateForm(TForm, Form);
depois voce vai no menu project > options > na aba forms retire da caixa Auto-create forms e repasse para a caixa Avaliable forms
qualquer coisa é so postar.
Gostei + 0
30/10/2006
Laelsonc
O Form dentro do Panel parece não ficar ativado, apesar de eu conseguir arrastá-lo por entre os limites do Panel. Um edit por exemplo, não consigo focar ele clicando encima. Tive que colocar um setfocus no onclick para isso. Mesmo assim não consigio selecionar o texto de um memo ou Edit com o mouse.
Alguem sabe como resolver essa ?
Gostei + 0
30/10/2006
Laelsonc
Gostei + 0
30/10/2006
Pestana
qualquer problema é so postar.
flw.
Gostei + 0
31/10/2006
Nery
como faço para verificar sem um form já esta criando
desde já agradeço
Gostei + 0
31/10/2006
Pestana
eu uso assim:
if form = NIL then //se o form não está criado então ele vai ser igual a nil
cria o form...
else // senão ele ja está criado, ai é só chamar.
form.show;
flw.
Gostei + 0
01/11/2006
Marco Salles
para que isto funcione corretamente , acredito que na destruição do form .
voce deve especificar explicitamente que o FormCriado :=Nil..
Claro que métodos como FreeandNil() , alem de liberar um objeto , configura o ponteiro desse objeto para nil.. Porém este método não é o mais aconselhável para destruição de forms
Assim na hora de destrir faça:
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)