Preciso ler todos os componentes dentro de um painel por exemplo
Pessoal, preciso ler todos os componentes dentro de um painel.
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
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
Curtidas 0
Melhor post
Rafael Cunha
02/09/2013
Tenta da seguinte maneira
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;
GOSTEI 1
Mais Respostas
Deivison Melo
02/09/2013
Boa noite Alessandro,
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!!
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
Marco Salles
02/09/2013
Pessoal, preciso ler todos os componentes dentro de um painel.
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.
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
Marco Salles
02/09/2013
Pessoal, preciso ler todos os componentes dentro de um painel.
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.
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
Alessandro Yamasaki
02/09/2013
Tinha me esquecido do GetParentComponent . Isto mesmo. Grato pelas informações de todos os colegas e pode encerrar o tópico.
Att
Alessandro
Att
Alessandro
GOSTEI 0
Marco Salles
02/09/2013
Tinha me esquecido do GetParentComponent . Isto mesmo. Grato pelas informações de todos os colegas e pode encerrar o tópico.
Att
Alessandro
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
Alessandro Yamasaki
02/09/2013
Realmente Marco, não vi seus comentários, mas em relação de performance, vai ler todos mesmos e não sendo interessante.
GOSTEI 0
Marco Salles
02/09/2013
Realmente Marco, não vi seus comentários, mas em relação de performance, vai ler todos mesmos e não sendo interessante.
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
Alessandro Yamasaki
02/09/2013
Perfeito. Vou testar aqui. Valeu. Abraços
GOSTEI 0