comportamento estranho: MdiChild,TPanel,TImage em Aplicação
Alô à Todos!
Atores:
Num Form (principal formStyle = mdiform) tenho um Tpanel (meramente para efeito visual) e um Timage onde carrego a imagem do cliente e um componente TOUTLOOKBAR da MxComponentes.
Comportamento estranho:
Se meus forms (mdChild´s) forem setados como mdichild, ao chamá-los eles aparecem em baixo do TPanel, não na frente do Tpanel! Para Conseguir isso coloco-os como FormStyle = StayOnTop. Se tirar o Panel e o TImage tudo é exibido corretamente.
Daí fica a pergunta, Alguma propriedade, manha, dica, reza ou até mesmo bruxaria pra resolver isso? Teria algo a ser feito?
Agradeço aos que contribuírem! :D
Atores:
Num Form (principal formStyle = mdiform) tenho um Tpanel (meramente para efeito visual) e um Timage onde carrego a imagem do cliente e um componente TOUTLOOKBAR da MxComponentes.
Comportamento estranho:
Se meus forms (mdChild´s) forem setados como mdichild, ao chamá-los eles aparecem em baixo do TPanel, não na frente do Tpanel! Para Conseguir isso coloco-os como FormStyle = StayOnTop. Se tirar o Panel e o TImage tudo é exibido corretamente.
Daí fica a pergunta, Alguma propriedade, manha, dica, reza ou até mesmo bruxaria pra resolver isso? Teria algo a ser feito?
Agradeço aos que contribuírem! :D
Microbios
Curtidas 0
Respostas
Microbios
03/10/2006
ninguém sabe? :(
GOSTEI 0
Massuda
03/10/2006
Daí fica a pergunta, Alguma propriedade, manha, dica, reza ou até mesmo bruxaria pra resolver isso? Teria algo a ser feito?
Quem implementa MDI é o Windows, não o Delphi. O que você está observando é o comportamento esperado: o Windows assume que todo form MDIChild deve aparecer imediatamente acima do MDIForm; o resultado é que qualquer outra coisa que você por no form principal irá aparecer depois dos MDIChild.GOSTEI 0
Massuda
03/10/2006
Daí fica a pergunta, Alguma propriedade, manha, dica, reza ou até mesmo bruxaria pra resolver isso? Teria algo a ser feito?
Quem implementa MDI é o Windows, não o Delphi. O que você está observando é o comportamento esperado: o Windows assume que todo form MDIChild deve aparecer imediatamente acima do MDIForm; o resultado é que qualquer outra coisa que você por no form principal irá aparecer depois dos MDIChild.GOSTEI 0
Microbios
03/10/2006
vixe!!! :shock: :shock:
Chato isso né? Assim não dá pra ter um visual legalzin... Teria alguma idéia pra ´contornar´ isso?
Valeu Massuda.... :D
Chato isso né? Assim não dá pra ter um visual legalzin... Teria alguma idéia pra ´contornar´ isso?
Valeu Massuda.... :D
GOSTEI 0
Massuda
03/10/2006
Qual sua idéia de ´visual legalzin´?
(Por favor, se for postar uma imagem, tenha dó de quem tem conexão discada e procure usar uma imagem pequena)
(Por favor, se for postar uma imagem, tenha dó de quem tem conexão discada e procure usar uma imagem pequena)
GOSTEI 0
Microbios
03/10/2006
Vou postar, meu amigo, vou postar... mais tarde... pó dexá.. vou ter pena... heheeheheheheheh Thanks pelo ótimo apoio! :D :D
GOSTEI 0
Micheus
03/10/2006
[b:c0ab4f612b]microbios[/b:c0ab4f612b], num outro [url=http://scriptbrasil.com.br/forum/index.php?s=&showtopic=86444&view=findpost&p=381631]forum[/url], onde fizeram uma referência a este post, coloquei o seguinte:
Estudando o código da criação do form quando o formato é MDI, observei que a área interna do MainMDI tem uma janela(sub-janela digamos assim), cujo handle é armazenado em ClientHandle.
Então usando a função SetParent da unit Windows, dá para definir esta janela como parent dos componentes que vc ´supostamente´ teria colocado sobre ela.
No create do main MDI basta chamar SetParent para os componentes que você colocou neste form. No meu exemplo adicionei StringGrid, GroupBox e Panel, ficando assim:
[]s
Estudando o código da criação do form quando o formato é MDI, observei que a área interna do MainMDI tem uma janela(sub-janela digamos assim), cujo handle é armazenado em ClientHandle.
Então usando a função SetParent da unit Windows, dá para definir esta janela como parent dos componentes que vc ´supostamente´ teria colocado sobre ela.
No create do main MDI basta chamar SetParent para os componentes que você colocou neste form. No meu exemplo adicionei StringGrid, GroupBox e Panel, ficando assim:
procedure TForm1.FormCreate(Sender: TObject); begin Windows.SetParent(StringGrid1.Handle, ClientHandle); Windows.SetParent(GroupBox1.Handle, ClientHandle); Windows.SetParent(Panel1.Handle, ClientHandle); end;
[]s
GOSTEI 0