Fórum Action:= caFree - Fecha dois forms ao mesmo tempo... #329659
18/09/2006
0
Essa aqui foi estranha...
eu fiz uma tela de login dentro do meu sistema para o usuário acessar uma tela. Acontece que quanto eu finalizo o login eu dou um action no meu form login aí acontece a mágica: depois que eu dou o close no form eu faço um create pro outro form mas ele chega a criar mas apaga.
olha o código:
// Fechando a tela de Login
sds_login.Close;
close;
//Abrindo a tela de mural
fr_mural:= Tfr_mural.Create(self);
...
// Código dentro do formClose
Action:= caFree;
fr_loginMural:= nil;
alguém sabe pq isso acontece??
Btovix
Curtir tópico
+ 0Posts
18/09/2006
Massuda
Gostei + 0
18/09/2006
Btovix
mas o que fazer então pra logar e entrar na tela sem que ela desapareça???
desde já obrigado!!
Gostei + 0
19/09/2006
Raserafim
ou seja, para criar um form é necessário passar um parâmetro. este parâmetro será o pai, que serve [entre outras coisas] para que quando for destruído, destrua tb os filhos. é o que está acontecendo com vc.
faça assim.
fr_mural:= Tfr_mural.Create(fr_mural);
Gostei + 0
19/09/2006
Massuda
(*) É meio redundante usar Application como Owner já que quando o programa é terminado todos os forms são destruídos, mas usar Application como Owner deixa claro o que você pretende.
@raserafim
O código que você sugeriu pode dar problemas. Como o valor de fr_mural provavelmente não foi inicializado, pode acontecer desse valor ser nil (nesse caso não tem problema) ou não, podendo conter um valor aleatório qualquer e causar um AV.
Gostei + 0
19/09/2006
Btovix
Funcionou perfeitamente nos dois casos, mas preferi usar o application (mesmo que redundante) para evitar um possível AV.
meu sistema seta nil para o form no OnClose, mas vai que acontece alguma com a memória... nunca se sabe né???
de qualquer forma obrigado!!
Abraços a todos!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)