Fórum Form MDI não aparece #285479

21/06/2005

0

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

Responder

Posts

21/06/2005

Massuda

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.


Responder

Gostei + 0

21/06/2005

Araujojunior

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


Responder

Gostei + 0

21/06/2005

Massuda

...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.


Responder

Gostei + 0

21/06/2005

Araujojunior

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


Responder

Gostei + 0

21/06/2005

Massuda

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?


Responder

Gostei + 0

21/06/2005

Mascotepc

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 ?


Responder

Gostei + 0

24/06/2005

Araujojunior

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


Responder

Gostei + 0

24/06/2005

Araujojunior

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


Responder

Gostei + 0

24/06/2005

Massuda

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.


Responder

Gostei + 0

24/06/2005

Araujojunior

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


Acho que eh marcação :roll:


Responder

Gostei + 0

06/07/2005

Araujojunior

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,


Responder

Gostei + 0

13/07/2005

Araujojunior

Sobe :roll:


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar