Propriedade quot;ComponentCountquot; - Mistério!!
02/10/2004
0
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
Anddibo
Posts
02/10/2004
Tatuweb
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:
ShowMessage (IntToStr (CompsParent (TabSheet3)));
05/10/2004
Anddibo
resolveu meu problema. Obrigado!! :D
Mas ainda continua no ar a questão do ´ComponentCount´. Seria um bug do Delphi? :(
Abraços...
Anderson Dibo
06/10/2004
Anddibo
a propriedade ControlCount funciona legal. :D
Abraços...
Anderson Dibo
06/10/2004
Rômulo Barros
ShowMessage (IntToStr (CompsParent (TabSheet3)));
Muito legal, TatuWeb. Mas, por outro lado, vamos analisar a seguinte situação:
:arrow: [color=red:dd80ba43ab][b:dd80ba43ab]1 - Quero acessar todos o edits do meu form e alterar a propriedade Text de cada uma para ´Valor Teste´.[/b:dd80ba43ab][/color:dd80ba43ab]
... 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: [color=blue:dd80ba43ab][b:dd80ba43ab]Até aí, tudo bem. Consegui alterar todos os edits do meu form.[/b:dd80ba43ab][/color:dd80ba43ab]
:?: [color=darkred:dd80ba43ab][b:dd80ba43ab][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][/b:dd80ba43ab][/color:dd80ba43ab]
06/10/2004
Keitarosan
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:
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 [b:5cea856a8f]Undeclared[/b:5cea856a8f],
Basta alterar um pokinho esta funcao para que ela fique do jeito que você quer, basta fazer isso daqui:
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
06/10/2004
Rômulo Barros
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;
:arrow: [color=blue:d254f3b780][b:d254f3b780]Beleza, Cara !! Deu certinho mesmo !![/b:d254f3b780][/color:d254f3b780]
[b:d254f3b780]Ass:[/b:d254f3b780] [color=blue:d254f3b780][u:d254f3b780][i:d254f3b780]Undeclared Identifier[/i:d254f3b780] - Em exibição nos cinemas[/u:d254f3b780][/color:d254f3b780]
Clique aqui para fazer login e interagir na Comunidade :)