Fórum Bug feito - Mas é do Delphi ou Windows #237589
14/06/2004
0
Descobri que existe um limite de 46 em uma castada de filhos de um parent...ex: parent.parent.parent.parent... de um objeto
O Codigo abaixo ilustra meu teste (um form com um botao)
procedure TForm1.Button1Click(Sender: TObject); var fp: TWinControl; pnl: TPanel; i: Integer; begin fp := Form1; for i := 1 to 47 do // <- mude para 46 e funcionara begin pnl := TPanel.Create(fp); pnl.Parent := fp; pnl.Align := alClient; pnl.BorderWidth := 2; pnl.Caption := inttostr(i); fp := pnl; end; end;
Alguem tem alguma ideia do porque disso?
é do windows ou do Delphi este limite...?
SImplesmente somem os items da tela na CLX e na VLC da um erro doido.
Abracao
Welter
Curtir tópico
+ 0Posts
14/06/2004
Afarias
Falando nisso, ´containers´ (como TPanel) são componentes bem pesados, de forma q eu sugiro q nunca use tantos assim pois deixará tua aplicação uma alta consumidora de memória.
Mas quanto a sua questão, realmente não sei responder. Mas, acredito q seja limitação (não bug) do Windows.
T+
Gostei + 0
15/06/2004
Welter
A aplicação que estamos trabalhando na empresa tem todas as suas telas posicionadas sobre um mesmo form, ou seja sao encadeadas. Por isto existe a sobreposição de panels. Cada form tem um frame e este frame vem pela rede ja que a aplicação e MultiTier então o pessoal convencionou a fazer desta maneira.
Em alguns testes descobri que no Delphi5 este limite e de 96, agora por que diabos o Delphi 7 baixou isto para 46.
Bom acredito que não terei mesmo uma explicação sobre o caso até pela pouca utilização da metodologia.
Gostei + 0
15/06/2004
Beppe
pnl.parent := outropanel.parent;
Gostei + 0
16/06/2004
Tatuweb
Gostei + 0
16/06/2004
Nildo
Eu sempre utilizei Panels como Containers :oops: ... O que você me recomenda? Desde que seja algum componente que já venha com o Delphi..
Gostei + 0
16/06/2004
Welter
Amigao, obrigado pela dica, mas isso com certeza eu ja levei em conta...
Relatei ao suporte da borland e eles constataram que existe este problema e provavlemente esta relacionado com o windows, ficaram de me retornar mais informações.
Detectei tambem que o problema so ocorre com windows 2k e XP nos 9x funciona normalmente.
Vamos ver o final da historia...
Abração
Marcelo
Gostei + 0
16/06/2004
Nildo
Pra você ter uma idéia, eu troquei o FOR para, ao invez de 46, coloquei [b:e5a1da997c]400[/b:e5a1da997c] e foi normal também...
Pentium 4, 2.8ghz, 512 de ram, Delphi6 com Windows XP.
Gostei + 0
16/06/2004
Welter
Eu tenho a mesma maquina que voce, so que estou usando o Delphi7
Imagino que seja algo com o windows, mas oque?
Na CLX realmente nao da erro, so que apartir de um certo numero ela simplesmente nao mostra mais o componente, como se ele ficasse invisivel.
Gostei + 0
16/06/2004
Nildo
Estranho porque aqui nunca some. Se você colocar alguma coisa no OnClick, ele dispara o evento quando você clica? Fica simplesmente invisível?
Faz assim, vamos ver se é o Delphi ou o seu Windows... Compila esse projeto em CLX, de tal forma que faça dar o erro no seu computador, e envia esse EXE pro meu e-mail:
brunildo@gmail.com
(se vc nao conseguir enviar me avisa que eu te passo meu outro email)
Dae eu testo aqui. Se funcionar beleza, então é problema com o Seu windows, se não funcionar então o problema é com o seu delphi.
Abraços!
Gostei + 0
16/06/2004
Afarias
hehe... Não foi o q quiz dizer Nildo... Não tem problema com Panels -- o que eu disse é que os Containers em geral são pesados então é importante usá-los apenas quando necessário e procurar minimizar seu uso pq são mais ´pesados´.
T+
Gostei + 0
16/06/2004
Tatuweb
Tanto no Kylix quanto no Delphi a única coisa que eu vi foi que a partir de um numero o panel para de ser ´desenhado´. Mas erro não ocorre em nenhum caso, tanto no kylix quanto no Win98. Se eu alterar o valor para 200, por exemplo, e eu for redimensionando o form ele vai aos poucos mais panels sao ´desenhandos´ porque eu estou aumentando as dimensões do form. Logo a conclusão que cheguei é que o limite é que ´falta espaço´ para ´desenhar´ os panels.
Gostei + 0
16/06/2004
Welter
Gostei + 0
16/06/2004
Welter
Como mencionado acima o problema so esta ocorrendo em windows 2k e XP nos 9x nada acontece.
Abracao
Marcelo
Gostei + 0
16/06/2004
Tatuweb
O fato de os controles sumirem eu também não vejo misterio. Simplesmente vc inseriu um panel depois de ter inserido um edit ou button e definiu seu alinhamento como AlClient. Logo os controles estão lá e só que o panel fica na frente e os esconde. Se em design-time vc inserir um panel e o alinhamento para AlClient vai acontecer a mesma coisa
Gostei + 0
16/06/2004
Welter
verifiquei tudo e rorei ele no Win98 e funcinou...no XP so nao apareceu mais nada apartir do Panel 46
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)