Action:= caFree - Fecha dois forms ao mesmo tempo...
Olá pessoal e obrigado desde já..
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??
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
Curtidas 0
Respostas
Massuda
18/09/2006
//Abrindo a tela de mural
fr_mural:= Tfr_mural.Create(self);
Como seu form de login é o Owner do fr_mural, o fr_mural é destruído junto com o form de login.GOSTEI 0
Btovix
18/09/2006
obrigado pela resposta...
mas o que fazer então pra logar e entrar na tela sem que ela desapareça???
desde já obrigado!!
mas o que fazer então pra logar e entrar na tela sem que ela desapareça???
desde já obrigado!!
GOSTEI 0
Raserafim
18/09/2006
Como seu form de login é o Owner do fr_mural, o fr_mural é destruído junto com o form de login.
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
Massuda
18/09/2006
mas o que fazer então pra logar e entrar na tela sem que ela desapareça???
Passe como Owner:[list:56b2d5c34b][*:56b2d5c34b][b:56b2d5c34b]nil[/b:56b2d5c34b] se você não quer que o form seja destruído automaticamente quando outro form for destruído[*:56b2d5c34b][b:56b2d5c34b]Application[/b:56b2d5c34b] se quiser que o form seja destruído junto com o programa (*)[*:56b2d5c34b]qualquer outro form, se quiser que seu mural seja destruído quando o outro form for destruído[/list:u:56b2d5c34b](*) É 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
Btovix
18/09/2006
Mais uma vez obrigado galera
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!!
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