Fórum Preciso ler todos os componentes dentro de um painel por exemplo #453924
02/09/2013
0
Qual seria a melhor maneira para isto, pois abaixo le todos, tenho q le apenas os q tiverem dentro de um painel XXX por exemplo e q nao perca performance, pois se validar dentro deste for abaixo, tem mto componente na tela e teremos um tempo demorado.
for i := 0 to ComponentCount -1 do
begin
Memo2.Lines.Add(IntToStr(i) + ' - ' + Components[i].GetNamePath + ' - ' + Components[i].ClassName);
end;
Alguma dica?
Grato
Alessandro Yamasaki
Curtir tópico
+ 0Post mais votado
02/09/2013
procedure TForm1.Button1Click(Sender: TObject);
var
Idx: Integer;
begin
for Idx := 0 to ComponentCount - 1 do
if Components[Idx].GetParentComponent = Panel1 then
ShowMessage('Nome: ' + Components[Idx].Name);
end;
Rafael Cunha
Gostei + 1
Mais Posts
02/09/2013
Deivison Melo
O Código passado pelo amigo Rafael Dani da Cunha
Está corretíssimo!!!
Parabéns Rafael Dani da Cunha!!!!
Estou colocando o posto como concluído!!!
Abração e bons códigos!!
Gostei + 0
02/09/2013
Marco Salles
Qual seria a melhor maneira para isto, pois abaixo le todos, tenho q le apenas os q tiverem dentro de um painel XXX por exemplo e q nao perca performance, pois se validar dentro deste for abaixo, tem mto componente na tela e teremos um tempo demorado.
Alessandro , se o problema for Performance , vc tem que colocar em prática dois conceitos distintos ... O Owner e o Parent . Invariavelmente os controles adicionados dentro do Panel
são de propriedades do Formulário , a não ser que vc especifique de modo diferente , porém o Parent desses formulários são o Panel . Logo para performance vc deve percorrer os
Parentes do Panel ...
for i := 0 to pred(Panel_a_ser_testado.ControlCount) do Showmessage(Panel_a_ser_testado.Controls[i].Name);
[]sds
Gostei + 0
02/09/2013
Marco Salles
Qual seria a melhor maneira para isto, pois abaixo le todos, tenho q le apenas os q tiverem dentro de um painel XXX por exemplo e q nao perca performance, pois se validar dentro deste for abaixo, tem mto componente na tela e teremos um tempo demorado.
Alessandro , se o problema for Performance , vc tem que colocar em prática dois conceitos distintos ... O Owner e o Parent . Invariavelmente os controles adicionados dentro do Panel
são de propriedades do Formulário , a não ser que vc especifique de modo diferente , porém o Parent desses CONTROLES são o Panel . Logo para performance vc deve percorrer os
Parentes do Panel ...
for i := 0 to pred(Panel_a_ser_testado.ControlCount) do Showmessage(Panel_a_ser_testado.Controls[i].Name);
[]sds
*** Escrevi errado e não consigo editar
[]sds
Gostei + 0
03/09/2013
Alessandro Yamasaki
Att
Alessandro
Gostei + 0
03/09/2013
Marco Salles
Att
Alessandro
Hummmm ... ?????
Mas se vc utilizar a Lista do Proprietário e testar Individualmente se esses Componentes tem algum Controle que são parentes do PANEL XXX , vc não esta ganhando performance ???
Muito pelo contrário , vc estará testando ate mesmo Componentes do formulário que não são Controles , como é o caso de DataSet , DataSetprovider, ClientDataSet
e um infinidade
ou entendi errado ???
desculpe a teimosia mas sua dúvida de hj pode ser a minha ou de outros amanhã
[]sds
Gostei + 0
03/09/2013
Alessandro Yamasaki
Gostei + 0
03/09/2013
Marco Salles
então Alessandro ..|Como eu venho Falando . Basta percorrer os Parentes do Próprio TPanel
for i := 0 to pred(PanelXXX.ControlCount) do Showmessage(PanelXXX.Controls[i].Name);
entendeu ????
[]sds
Gostei + 0
03/09/2013
Alessandro Yamasaki
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)