comportamento estranho: MdiChild,TPanel,TImage em Aplicação

Delphi

03/10/2006

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


Microbios

Microbios

Curtidas 0

Respostas

Microbios

Microbios

03/10/2006

ninguém sabe? :(


GOSTEI 0
Massuda

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

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

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


GOSTEI 0
Massuda

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)


GOSTEI 0
Microbios

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

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:
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
POSTAR