Array
(
)

Propriedade quot;ComponentCountquot; - Mistério!!

Anddibo
   - 02 out 2004

Olá pessoal,

em um Form tenho um PageControl com 3 TabSheets.

Dentro de uma TabSheet tenho 5 Edits.

A minha dúvida é a seguinte: estou tentando recuperar a quantidade de componentes dentro de uma TabSheet da seguinte forma:

TabSheet.ComponentCount

porém sempre me retorna 0. Ora, se dentro da TabSheet em questão há 5 Edits como pode a propriedade ComponentCount estar retornando 0?

Abraços...
Anderson Dibo


Tatuweb
   - 02 out 2004

Olá,

Já respondi uma dúvida desse tipo. Clique no lnk abaixo para ver uma solução.
:arrow: http://delphiforum.icft.com.br/forum/viewtopic.php?t=43638

Para chamar a função você usa:
#Código

ShowMessage (IntToStr (CompsParent (TabSheet3)));



Anddibo
   - 05 out 2004

valeu TatuWeb,

resolveu meu problema. Obrigado!! :D


Mas ainda continua no ar a questão do ´ComponentCount´. Seria um bug do Delphi? :(


Abraços...
Anderson Dibo


Emerson
   - 05 out 2004

tente

TabSheet.ControlCount


Anddibo
   - 06 out 2004

Valeu Emerson,

a propriedade ControlCount funciona legal. :D


Abraços...
Anderson Dibo


Rômulo Barros
   - 06 out 2004


Citação:
Olá,

Já respondi uma dúvida desse tipo. Clique no lnk abaixo para ver uma solução.
:arrow: http://delphiforum.icft.com.br/forum/viewtopic.php?t=43638

Para chamar a função você usa:
#Código

ShowMessage (IntToStr (CompsParent (TabSheet3)));


Muito legal, TatuWeb. Mas, por outro lado, vamos analisar a seguinte situação:

:arrow: 1 - Quero acessar todos o edits do meu form e alterar a propriedade Text de cada uma para ´Valor Teste´.

#Código
...
Var
C : Integer;
Begin
For C := 0 To Form.ComponentCount -1 Do
Begin
If(Components[C] Is TEdit)Then
TEdit(Components[C]).Text := ´Valor Teste´;
End;
End;
...

:wink: Até aí, tudo bem. Consegui alterar todos os edits do meu form.

:?: [u:dd80ba43ab]Mas, utilizando a sua function, como devo prosseguir para alterar a propriedade Text de todos os edits de apenas uma TabSheet?[/u:dd80ba43ab]


Keitarosan
   - 06 out 2004

Bom, respondendo a dúvida do nosso amigo anddibo, pode ter certeza que isso não é bug, a explicação é bem simples, você não consegue acessar o tal edit pela propriedade ComponentCount ou Components do TabSheet pelo simples motivo que esses Edits foram criados pelo Form e nao pelo TabSheet... ou seja, eles ´pertencem´ ao Form...
Em tempo de desenvolvimento eu não sei criar objetos que nao pertençam ao Form, mas em Tempo de Execução tente isso aqui pra você entender o que eu digo:

evento onClick de um botao:
#Código


var
Edit: TEdit;
begin
Edit := TEdit.Create(TabSheet1); //Com o TabSheet1 como o parametro, você criará o Edit como sendo um componente pertencente do TabSheet1, independente de quem seja o "pai" dele...
Edit.Parent := TabSheet1; //Sim, você precisa desta linha, você criou um componente pertencente ao TabSheet1, mas não falou quem seria o "pai" dele, se você omite esta informação, o componente não aparecerá...
//feiro estas duas linhas acima, você tem 1 componente dentro do TabSheet, nesse momento a propriedade ComponentCount do TabSheet é igual a 1
end;

:wink: Entendeu o funcionamento da parada??

Agora qnt a pergunta do Undeclared,
Basta alterar um pokinho esta funcao para que ela fique do jeito que você quer, basta fazer isso daqui:
#Código

Var
C : Integer;
Begin
For C := 0 To Form.ComponentCount -1 Do
Begin
If (Components[C] Is TEdit) Then
if (Components[C] as TEdit).Parent = TabSheet1 then
TEdit(Components[C]).Text := ´Valor Teste´;
End;
End;


Onde TabSheet1 é o tabSheet desejado.... ou painel, ou qualquer outro tipo de Container :D


Rômulo Barros
   - 06 out 2004


Citação:

Agora qnt a pergunta do Undeclared,
Basta alterar um pokinho esta funcao para que ela fique do jeito que você quer, basta fazer isso daqui:
#Código


Var
C : Integer;
Begin
For C := 0 To Form.ComponentCount -1 Do
Begin
If (Components[C] Is TEdit) Then
if (Components[C] as TEdit).Parent = TabSheet1 then
TEdit(Components[C]).Text := ´Valor Teste´;
End;
End;


Onde TabSheet1 é o tabSheet desejado.... ou painel, ou qualquer outro tipo de Container :D

:arrow: Beleza, Cara !! Deu certinho mesmo !!

Ass: [u:d254f3b780]Undeclared Identifier - Em exibição nos cinemas[/u:d254f3b780]