Aplicação MDI
30/01/2006
0
Gostaria de tirar uma dúvida, não sei se é possível, mas acho que já vi algo parecido por aí.
Tenho um Form principal do tipo fsMDIForm e alguns do tipo fsMDIChild, até aí tudo bem! O que gostaria de saber é se tem como numa mesma aplicação eu ter 2 ou mais forms do tipo fsMDIForm e que funcionem como tal ?!
Eu explico:
Alguns botões do form principal irão abrir forms filhos, porém um determinado botão abrirá um segundo fsMDIForm que deverá abrir seus próprios filhos dentro de si, não dentro do form principal.
[]´s
AASN
Aasn
Posts
30/01/2006
Michael
Para fazer isso basta vc criar os forms com o parâmetro [b:bc39cf50f3]Owner [/b:bc39cf50f3]dos seus construtores definidos como o form ´pai´, e setar suas respectivas propriedade [b:bc39cf50f3]Parent [/b:bc39cf50f3]para o mesmo, logo após sua criação.
begin FormFilho := TFormFilho.Create(FormPai); FormFilho.Parent := FormPai; FormFilho.Show; end;
Não me recordo agora como ele vai aparecer visualmente dentro do outro form, se de maneira semelhante ao sistema MDI ou como se fosse um controle dentro de outro apenas. De qualquer forma, acredito que apenas um form possa ser definido como MDIForm em uma mesma aplicação.
[]´s
30/01/2006
Aasn
infelizmente sua dica não surtiu efeito, como em meus testes, os forms filhos criados pelo segundo ´Form Pai´ aparecem no form principal.
[]´s
AASN
31/01/2006
Massuda
Apenas esclarecendo o que o Michael citou, para fazer com que um form (vamos chamar de A) fique restrito ao interior de outro form (vamos chamar de B), faça o .Parent do form A ser o form B.
31/01/2006
Michael
Testei aqui e funcionou perfeitamente. O resultado visual foi até melhor do que o esperado, pois o form filho ´emulado´ apresentou a barra de título com os botões de controle do Windows, mesmo dentro do form pai não-MDI.
Vc não deve ter tido sucesso em seus testes pq a propriedade [b:bdc5b1b649]FormStyle [/b:bdc5b1b649]do form ´filho´ não pode ser [b:bdc5b1b649]fsMDIChild[/b:bdc5b1b649], e sim [b:bdc5b1b649]fsNormal[/b:bdc5b1b649]. Caso contrário o formulário será mostrado dentro do form MDI da aplicação.
O segredo é apontar o [b:bdc5b1b649]Owner [/b:bdc5b1b649]para o form pai no momento da criação, e setar o [b:bdc5b1b649]Parent [/b:bdc5b1b649]para o mesmo, como o [b:bdc5b1b649]Massuda [/b:bdc5b1b649]reinterou - por sinal de forma mais fácil de se compreender do que a minha apresentada inicialmente.
[]´s
31/01/2006
Aasn
Eu já havia chegado a esse resultado apresentado por vocês, contudo, ao criar um form não mdi parente de um outro form, este não recebe ´foco´, ou seja, para a aplicação o form ativo será o ´pai´.
Por isso o meu interesse em abrir dois forms do tipo MDIForm, para que os filhos recebessem o foco como um MDIChild normal. Eu consigo abrir vários forms MDIForm contudo, ao criar os ´filhos´ estes aparecem sempre no form principal.
De qualquer forma, agradeço o interesse de vcs em tentar achar uma solução para o problema proposto.
Obrigado.
[]´s
AASN
Clique aqui para fazer login e interagir na Comunidade :)