Form MDI não aparece

Delphi

21/06/2005

Oi pessoal,

Estou com um pequeno problema, criei meu form e configurei da seguinte forma:

FORM PAI
FormStyle := fsMDIForm;


FORM FILHO
FormStyle := fsMDIChild;

Rotina utilizada para chamar Form Filho

If Entrada_Tipo_Cliente=Nil Then
Application.CreateForm(TEntrada_Tipo_Cliente, Entrada_Tipo_Cliente);
Entrada_Tipo_Cliente.Show;


O que acontece com ele é que ele simplesmente não mostra o form, ele abre, mas não mostra, como se estivesse Visible:=False, mas não está.


Obg,

Junior


Araujojunior

Araujojunior

Curtidas 0

Respostas

Massuda

Massuda

21/06/2005

Normalmente, o form filho é criado a partir do form pai usando algo assim:
Entrada_Tipo_Cliente := TEntrada_Tipo_Cliente.Create(Self);
O Show nem é necessário porque, sendo um form fsMDIChild, a VCL/Windows se encarrega de exibir o form.

Entretanto, testei o código que você postou e comigo funcionou OK.

Note que como você está usando uma variável (Entrada_Tipo_Cliente) para testar se o form já foi criado, pode ser que você esteja esquecendo de nil´zar essa variável no OnClose/OnDestroy do form filho.

Existem outras formas de testar se o form já existe sem precisar da variável. Por exemplo, antes de criar o form você pode testar se existe um form da mesma classe na lista MDIChild mantida pelo form pai.


GOSTEI 0
Araujojunior

Araujojunior

21/06/2005

Sei que os códigos citados são certos, pois já tentei das 2 formas, esqueci de falar que utilizo o método e hereditariedade, e somente após isso que passou a ocorrer o erro.

Obg,

Jr


GOSTEI 0
Massuda

Massuda

21/06/2005

...esqueci de falar que utilizo o método e hereditariedade...
Explique melhor o que está fazendo. Tenho um aplicativo MDI cujos forms filhos são uma hierarquia de classes e não tive problemas.


GOSTEI 0
Araujojunior

Araujojunior

21/06/2005

Nâo estou fazendo nada diferente do que vc disse, e estou trabalhando assim como vc com hierarquia de classes........o q poderia ser :(


GOSTEI 0
Massuda

Massuda

21/06/2005

Não tenho idéia do qur pode estar acontencendo. Já experimentou executar passo-a-passo para ver o que acontece no construtor/OnCreate/OnShow/OnActivate do seu form?


GOSTEI 0
Mascotepc

Mascotepc

21/06/2005

Pessoal esse problema esta ocorrendo comigo ! Eu até consigo abrir o formulário mais não consigo fechá-lo. Da um erro de acesso de memória.

Saberiam me dizer o que acontece comigo ?


GOSTEI 0
Araujojunior

Araujojunior

21/06/2005

Uso o componente UserControl, para controle dos usuários, pode ter algo haver com isso?


GOSTEI 0
Araujojunior

Araujojunior

21/06/2005

Ainda não descobri o que é, mas descobri que ocorre com qualquer form, mesmo que não tenha hierarquia de classes :cry:


GOSTEI 0
Massuda

Massuda

21/06/2005

A única coisa que consigo pensar é que talvez seu form principal (aquele com estilo fsMDIForm) não seja o primeiro form (auto)criado pelo programa usando Application.CreateForm; se for o caso, mude seu programa para que isso aconteça.

A VCL supõe que o primeiro form criado via Application.CreateForm é o form principal do aplicativo e esse form tem um tratamento (interno) especial. No caso de um aplicativo MDI, isso é crítico, pois o Windows tem um tratamentos especial para forms com estilo fsMDIForm.


GOSTEI 0
Araujojunior

Araujojunior

21/06/2005

Application.Initialize;
Application.CreateForm(TTela_Principal, Tela_Principal);
Application.Title := ´SisCarga - Sistema de Controle de Cargas´;
Application.Run;


Acho que eh marcação :roll:


GOSTEI 0
Araujojunior

Araujojunior

21/06/2005

Ufa, descobri o q aconteceu.

No meu form principal tinha um Panel, que estava escondendo o Form, apaguei esse panel e os forms voltaram a aparecer.

Isso acontece com qualquer componente visual que eu coloque no form principal.

Mas e agora, como vou colocar Image? Alguem tem solução para isso?

Obg,


GOSTEI 0
Araujojunior

Araujojunior

21/06/2005

Sobe :roll:


GOSTEI 0
POSTAR