Form MDI Child somente na area do MDI, nao alem...
Prezados, estou precisando de uma rotina, onde o form filho seja ´limitado´ a somente a area do child, tipo, ao clicar em maximizar, ele nao maximize para a area total do desktop, e somente no child do form pai. Alguem tem um codigo, rotina para tal facanha?
Abracos,
Alcantarus
Abracos,
Alcantarus
Alcantarus
Curtidas 0
Respostas
Massuda
14/10/2005
Dê uma olhada [url=http://forum.clubedelphi.net/viewtopic.php?t=58157]neste tópico[/url]; lá tem um exemplo de como fazer isso interceptando a mensagem WM_WINDOWPOSCHANGING no form MDI filho.
GOSTEI 0
Alcantarus
14/10/2005
Dê uma olhada [url=http://forum.clubedelphi.net/viewtopic.php?t=58157]neste tópico[/url]; lá tem um exemplo de como fazer isso interceptando a mensagem WM_WINDOWPOSCHANGING no form MDI filho.
Caro Massuda,
Foi de grande valia sua sugestao, inclusive incluir todos os dois codigos desse post acima, porem, eu ainda queria QUE, se possivel, que o MDI Child ficasse ´totallmente´ LIMITADO somente a area do form pai. Tipo: Sempre que eu maximizar o Form Filho, no modelo convencional, ele maximiza, atingindo a area do Form Pai, quero que ele SOMENTE maximize na area ´delimitada´ pelo Form Pai, ficando assim, aparecendo a barra de titulo no FormFilho.Top := 0, FormFilho.Left := 0, preenchedo o restante da area do FormPai ao ser maximizado...
Nao sei se deu pra vc entender... mas.... se pudesse me ajudar, agradeco muito.
Abracos e felicidades,
Alcantarus.
GOSTEI 0
Massuda
14/10/2005
...Sempre que eu maximizar o Form Filho, no modelo convencional, ele maximiza, atingindo a area do Form Pai, quero que ele SOMENTE maximize na area ´delimitada´ pelo Form Pai, ficando assim, aparecendo a barra de titulo no FormFilho.Top := 0, FormFilho.Left := 0, preenchedo o restante da area do FormPai ao ser maximizado...
Infelizmente, MDI é implementado dentro do Windows e por isso não tem jeito de fazer o que você descreveu; o form filho sempre irá ocupar apenas parte do form pai.GOSTEI 0
Alcantarus
14/10/2005
Massuda, isso ta dando pano pra manga hein!
Prezado amigo,
Ainda nao ficou claro para mim :? ... bem, desculpe-me por incomoda-lo com esse incansavel assunto, mas, nao tenho outro a recorrer, e tb esse eh o melhor forum que conheco... bem, vamos ao assunto...
Por favor, gostaria que vc analizasse essa imagem abaixo.
[URL=http://img288.imageshack.us/my.php?image=formpaiformfilho6fv.jpg][img:95a218596a]http://img288.imageshack.us/img288/8717/formpaiformfilho6fv.th.jpg[/img:95a218596a][/URL]
Grato,
Alcantarus
Prezado amigo,
Ainda nao ficou claro para mim :? ... bem, desculpe-me por incomoda-lo com esse incansavel assunto, mas, nao tenho outro a recorrer, e tb esse eh o melhor forum que conheco... bem, vamos ao assunto...
Por favor, gostaria que vc analizasse essa imagem abaixo.
[URL=http://img288.imageshack.us/my.php?image=formpaiformfilho6fv.jpg][img:95a218596a]http://img288.imageshack.us/img288/8717/formpaiformfilho6fv.th.jpg[/img:95a218596a][/URL]
Grato,
Alcantarus
GOSTEI 0
Massuda
14/10/2005
Eu já tinha visto o esquema que você colocou em outro tópico.
Você tem duas saídas....
* usar a API do Windows para não maximizar o form, mas sim fazer ele ocupar todo o espaco disponível; isso envolve interceptar diferentes mensagens que resultam no form maximizado.
* abandonar MDI.
Sobre a segunda opção... Se você vai permitir apenas um único form aberto dentro do form principal, ocupando todo o espaço visível, então não faz sentido usar MDI; use SDI e faça os diferentes forms do programa serem embutidos no form principal.
Você tem duas saídas....
* usar a API do Windows para não maximizar o form, mas sim fazer ele ocupar todo o espaco disponível; isso envolve interceptar diferentes mensagens que resultam no form maximizado.
* abandonar MDI.
Sobre a segunda opção... Se você vai permitir apenas um único form aberto dentro do form principal, ocupando todo o espaço visível, então não faz sentido usar MDI; use SDI e faça os diferentes forms do programa serem embutidos no form principal.
GOSTEI 0
Alcantarus
14/10/2005
Nao sei como criar Forms SDI....
Tem algum exemplo para tal?
Grato,
Alcantarus.
Tem algum exemplo para tal?
Grato,
Alcantarus.
GOSTEI 0
Alcantarus
14/10/2005
Nao sei como criar Forms SDI....
Tem algum exemplo para tal?
Grato,
Alcantarus.
Resolvido.
GOSTEI 0
Massuda
14/10/2005
SDI significa Single Document Interface (algo como Interface Única de Documento, ou simplesmente um único form). Para criar um projeto SDI novo, vá em File|New|Application ou File|New|Projects|SDI. Isso deve resolver a questão do form principal.
Com relação aos forms secundários (ou filhos se você preferir), não deixe eles na lista de auto-create, mas sim crie eles quando for exibi-los fazendo algo assim:...e lembre de destruir o form (usando .Free) depois que não precisar mais do form.
Provavelmente será mais fácil trabalhar com os forms filhos que você criar uma hierarquia de classes (um form filho base e forms filhos descendentes que são especializados).
Com relação aos forms secundários (ou filhos se você preferir), não deixe eles na lista de auto-create, mas sim crie eles quando for exibi-los fazendo algo assim:
var MeuFormFilho: TFormFilho; ... MeuFormFilho := TFormFilho.Create(nil); MeuFormFilho.Parent := MeuFormPrincipal; MeuFormFilho.Align := alClient; ...
Provavelmente será mais fácil trabalhar com os forms filhos que você criar uma hierarquia de classes (um form filho base e forms filhos descendentes que são especializados).
GOSTEI 0