Fórum MDIForm e MDIChild #297729

29/09/2005

0

Boa tarde,


Alguém sabe como corrigir o problema quando aparece a mensagem:

´cannot create form. no MDI forms are currently active´.


Na aplicação, o form principal esta definido como fsMDIForm, os demais estão definidos como fsMDIChild e no menu Project/Options o MainForm é o form principal.

Ao chamar os demais formulários utilizando a sintaxe abaixo

Execute( TfrmORC1110F , frmORC1110F );

É executada a procedure abaixo que está definida no formulário principal:


Procedure TfrmORC0000M.Execute(InstanceClass: TComponentClass; var Reference);
Var
iI: Integer;
formula : string;
Begin
// *** Verifica se ha instancia do form
For iI := 0 To MDIChildCount - 1 Do
Begin
If MDIChildren[iI].ClassName = InstanceClass.ClassName Then
Begin
MDIChildren[iI].WindowState := wsNormal;
MDIChildren[iI].Show;
Exit;
End;
End;
Application.CreateForm( InstanceClass, Reference );
End;


As telas Splash e de login estão funcionando corretamente.

Se alguém tiver alguma idéia desde já agradeço.


Airton


Airoosp

Airoosp

Responder

Posts

29/09/2005

Massuda

As telas Splash e de login estão funcionando corretamente.
Talvez seja isso: apesar de você ter configurado o MainForm como sendo o form principal, a VCL considera como sendo o form principal o [b:de5bc583cc]primeiro[/b:de5bc583cc] form criado usando Application.CreateForm; talvez você esteja criando o form de splash ou o de login usando Application.CreateForm.


Responder

Gostei + 0

29/09/2005

Airoosp

No source do projeto a criação dos forms é feita assim:


Application.Initialize;
SplashForm := TSplashForm.Create(Application);
SplashForm.ShowModal;
SplashForm.Update;
Application.CreateForm(TDataModule1, DataModule1);
Application.CreateForm(TfrmORC0000M, frmORC0000M);
SplashForm.Hide;
SplashForm.Free;
Application.Run;
Application.Terminate;


Poderá ser algum parâmetro que não foi alterado corretamente?


Responder

Gostei + 0

29/09/2005

Massuda

Eu normalmente faria assim...
...
  SplashForm := TSplashForm.Create(nil);
  SplashForm.Show;
...

Application.CreateForm(TfrmORC0000M, frmORC0000M);
Esse TfrmORC0000M é o seu form principal (com estilo fsMDIForm)?


Responder

Gostei + 0

29/09/2005

Airoosp

Isso mesmo o TFrm0000M é o form principal com estilo fsMDI Form.

O sistema funciona até a montagem do menu principal, ao clicar no menu e chamar um outro form que é feito conforme sintaxe abaixo aparece a mensagem de erro.


procedure TfrmORC0000M.Sistema1Click(Sender: TObject);
begin
Execute( TfrmORC1000F , frmORC1000F );
end;


Erro: ´cannot create form. no MDI forms are currently active´.


Responder

Gostei + 0

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

Aceitar